python-language-server icon indicating copy to clipboard operation
python-language-server copied to clipboard

Memory leak on Linux

Open chrahunt opened this issue 5 years ago • 7 comments

Environment data

  • Language Server version: Microsoft Python Language Server version 0.5.30.0
  • OS and version: Ubuntu 18.04 (Linux desktop 4.15.0-74-generic #84-Ubuntu SMP Thu Dec 19 08:06:28 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux)
  • Python version (& distribution if applicable, e.g. Anaconda): Python 3.8.0 (default, Jan 4 2020, 14:08:19)\n[GCC 7.5.0] as installed with pyenv
Python config vars
$ ./.tox/py38/bin/python -c "import json, sysconfig; print(json.dumps(sysconfig.get_config_vars(), indent=2, sort_keys=True))"
{
  "ABIFLAGS": "",
  "AC_APPLE_UNIVERSAL_BUILD": 0,
  "AIX_GENUINE_CPLUSPLUS": 0,
  "ALT_SOABI": 0,
  "ANDROID_API_LEVEL": 0,
  "AR": "ar",
  "ARFLAGS": "rcs",
  "BASECFLAGS": "-Wno-unused-result -Wsign-compare",
  "BASECPPFLAGS": "",
  "BASEMODLIBS": "",
  "BINDIR": "/home/chris/.pyenv/versions/3.8.0/bin",
  "BINLIBDEST": "/home/chris/.pyenv/versions/3.8.0/lib/python3.8",
  "BLDLIBRARY": "libpython3.8.a",
  "BLDSHARED": "gcc -pthread -shared -L/home/chris/.pyenv/versions/3.8.0/lib -L/home/chris/.pyenv/versions/3.8.0/lib",
  "BUILDEXE": "",
  "BUILDPYTHON": "python",
  "BUILD_GNU_TYPE": "x86_64-pc-linux-gnu",
  "BYTESTR_DEPS": "\\",
  "CC": "gcc -pthread",
  "CCSHARED": "-fPIC",
  "CFLAGS": "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall",
  "CFLAGSFORSHARED": "",
  "CFLAGS_ALIASING": "",
  "CFLAGS_NODIST": "",
  "CONFIGFILES": "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in",
  "CONFIGURE_CFLAGS": "",
  "CONFIGURE_CFLAGS_NODIST": "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration",
  "CONFIGURE_CPPFLAGS": "-I/home/chris/.pyenv/versions/3.8.0/include",
  "CONFIGURE_LDFLAGS": "-L/home/chris/.pyenv/versions/3.8.0/lib",
  "CONFIGURE_LDFLAGS_NODIST": "",
  "CONFIG_ARGS": "'--prefix=/home/chris/.pyenv/versions/3.8.0' '--with-dtrace' '--libdir=/home/chris/.pyenv/versions/3.8.0/lib' 'LDFLAGS=-L/home/chris/.pyenv/versions/3.8.0/lib ' 'CPPFLAGS=-I/home/chris/.pyenv/versions/3.8.0/include '",
  "CONFINCLUDEDIR": "/home/chris/.pyenv/versions/3.8.0/include",
  "CONFINCLUDEPY": "/home/chris/.pyenv/versions/3.8.0/include/python3.8",
  "COREPYTHONPATH": "",
  "COVERAGE_INFO": "/tmp/user/1000/python-build.20200104140752.12766/Python-3.8.0/coverage.info",
  "COVERAGE_REPORT": "/tmp/user/1000/python-build.20200104140752.12766/Python-3.8.0/lcov-report",
  "COVERAGE_REPORT_OPTIONS": "--no-branch-coverage --title \"CPython lcov report\"",
  "CPPFLAGS": "-I. -I./Include -I/home/chris/.pyenv/versions/3.8.0/include -I/home/chris/.pyenv/versions/3.8.0/include",
  "CXX": "g++ -pthread",
  "DESTDIRS": "/home/chris/.pyenv/versions/3.8.0 /home/chris/.pyenv/versions/3.8.0/lib /home/chris/.pyenv/versions/3.8.0/lib/python3.8 /home/chris/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload",
  "DESTLIB": "/home/chris/.pyenv/versions/3.8.0/lib/python3.8",
  "DESTPATH": "",
  "DESTSHARED": "/home/chris/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload",
  "DFLAGS": "",
  "DIRMODE": 755,
  "DIST": "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy",
  "DISTDIRS": "Include Lib Misc Ext-dummy",
  "DISTFILES": "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in",
  "DLINCLDIR": ".",
  "DLLLIBRARY": "",
  "DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754": 0,
  "DOUBLE_IS_BIG_ENDIAN_IEEE754": 0,
  "DOUBLE_IS_LITTLE_ENDIAN_IEEE754": 1,
  "DTRACE": "/usr/bin/dtrace",
  "DTRACE_DEPS": "\\",
  "DTRACE_HEADERS": "Include/pydtrace_probes.h",
  "DTRACE_OBJS": "Python/pydtrace.o",
  "DYNLOADFILE": "dynload_shlib.o",
  "ENABLE_IPV6": 1,
  "ENSUREPIP": "upgrade",
  "EXE": "",
  "EXEMODE": 755,
  "EXTRATESTOPTS": "",
  "EXTRA_CFLAGS": "",
  "EXT_SUFFIX": ".cpython-38-x86_64-linux-gnu.so",
  "FILEMODE": 644,
  "FLOAT_WORDS_BIGENDIAN": 0,
  "FLOCK_NEEDS_LIBBSD": 0,
  "GETPGRP_HAVE_ARG": 0,
  "GETTIMEOFDAY_NO_TZ": 0,
  "GITBRANCH": "",
  "GITTAG": "",
  "GITVERSION": "",
  "GNULD": "yes",
  "HAVE_ACCEPT4": 1,
  "HAVE_ACOSH": 1,
  "HAVE_ADDRINFO": 1,
  "HAVE_ALARM": 1,
  "HAVE_ALIGNED_REQUIRED": 0,
  "HAVE_ALLOCA_H": 1,
  "HAVE_ALTZONE": 0,
  "HAVE_ASINH": 1,
  "HAVE_ASM_TYPES_H": 1,
  "HAVE_ATANH": 1,
  "HAVE_BIND_TEXTDOMAIN_CODESET": 1,
  "HAVE_BLUETOOTH_BLUETOOTH_H": 1,
  "HAVE_BLUETOOTH_H": 0,
  "HAVE_BROKEN_MBSTOWCS": 0,
  "HAVE_BROKEN_NICE": 0,
  "HAVE_BROKEN_PIPE_BUF": 0,
  "HAVE_BROKEN_POLL": 0,
  "HAVE_BROKEN_POSIX_SEMAPHORES": 0,
  "HAVE_BROKEN_PTHREAD_SIGMASK": 0,
  "HAVE_BROKEN_SEM_GETVALUE": 0,
  "HAVE_BROKEN_UNSETENV": 0,
  "HAVE_BUILTIN_ATOMIC": 1,
  "HAVE_CHFLAGS": 0,
  "HAVE_CHOWN": 1,
  "HAVE_CHROOT": 1,
  "HAVE_CLOCK": 1,
  "HAVE_CLOCK_GETRES": 1,
  "HAVE_CLOCK_GETTIME": 1,
  "HAVE_CLOCK_SETTIME": 1,
  "HAVE_COMPUTED_GOTOS": 1,
  "HAVE_CONFSTR": 1,
  "HAVE_CONIO_H": 0,
  "HAVE_COPYSIGN": 1,
  "HAVE_COPY_FILE_RANGE": 1,
  "HAVE_CRYPT_H": 1,
  "HAVE_CRYPT_R": 1,
  "HAVE_CTERMID": 1,
  "HAVE_CTERMID_R": 0,
  "HAVE_CURSES_FILTER": 1,
  "HAVE_CURSES_H": 1,
  "HAVE_CURSES_HAS_KEY": 1,
  "HAVE_CURSES_IMMEDOK": 1,
  "HAVE_CURSES_IS_PAD": 1,
  "HAVE_CURSES_IS_TERM_RESIZED": 1,
  "HAVE_CURSES_RESIZETERM": 1,
  "HAVE_CURSES_RESIZE_TERM": 1,
  "HAVE_CURSES_SYNCOK": 1,
  "HAVE_CURSES_TYPEAHEAD": 1,
  "HAVE_CURSES_USE_ENV": 1,
  "HAVE_CURSES_WCHGAT": 1,
  "HAVE_DECL_ISFINITE": 1,
  "HAVE_DECL_ISINF": 1,
  "HAVE_DECL_ISNAN": 1,
  "HAVE_DECL_RTLD_DEEPBIND": 1,
  "HAVE_DECL_RTLD_GLOBAL": 1,
  "HAVE_DECL_RTLD_LAZY": 1,
  "HAVE_DECL_RTLD_LOCAL": 1,
  "HAVE_DECL_RTLD_MEMBER": 0,
  "HAVE_DECL_RTLD_NODELETE": 1,
  "HAVE_DECL_RTLD_NOLOAD": 1,
  "HAVE_DECL_RTLD_NOW": 1,
  "HAVE_DECL_TZNAME": 0,
  "HAVE_DEVICE_MACROS": 1,
  "HAVE_DEV_PTC": 0,
  "HAVE_DEV_PTMX": 1,
  "HAVE_DIRECT_H": 0,
  "HAVE_DIRENT_D_TYPE": 1,
  "HAVE_DIRENT_H": 1,
  "HAVE_DIRFD": 1,
  "HAVE_DLFCN_H": 1,
  "HAVE_DLOPEN": 1,
  "HAVE_DUP2": 1,
  "HAVE_DUP3": 1,
  "HAVE_DYNAMIC_LOADING": 1,
  "HAVE_ENDIAN_H": 1,
  "HAVE_EPOLL": 1,
  "HAVE_EPOLL_CREATE1": 1,
  "HAVE_ERF": 1,
  "HAVE_ERFC": 1,
  "HAVE_ERRNO_H": 1,
  "HAVE_EXECV": 1,
  "HAVE_EXPLICIT_BZERO": 1,
  "HAVE_EXPLICIT_MEMSET": 0,
  "HAVE_EXPM1": 1,
  "HAVE_FACCESSAT": 1,
  "HAVE_FCHDIR": 1,
  "HAVE_FCHMOD": 1,
  "HAVE_FCHMODAT": 1,
  "HAVE_FCHOWN": 1,
  "HAVE_FCHOWNAT": 1,
  "HAVE_FCNTL_H": 1,
  "HAVE_FDATASYNC": 1,
  "HAVE_FDOPENDIR": 1,
  "HAVE_FDWALK": 0,
  "HAVE_FEXECVE": 1,
  "HAVE_FINITE": 1,
  "HAVE_FLOCK": 1,
  "HAVE_FORK": 1,
  "HAVE_FORKPTY": 1,
  "HAVE_FPATHCONF": 1,
  "HAVE_FSEEK64": 0,
  "HAVE_FSEEKO": 1,
  "HAVE_FSTATAT": 1,
  "HAVE_FSTATVFS": 1,
  "HAVE_FSYNC": 1,
  "HAVE_FTELL64": 0,
  "HAVE_FTELLO": 1,
  "HAVE_FTIME": 1,
  "HAVE_FTRUNCATE": 1,
  "HAVE_FUTIMENS": 1,
  "HAVE_FUTIMES": 1,
  "HAVE_FUTIMESAT": 1,
  "HAVE_GAI_STRERROR": 1,
  "HAVE_GAMMA": 1,
  "HAVE_GCC_ASM_FOR_MC68881": 0,
  "HAVE_GCC_ASM_FOR_X64": 1,
  "HAVE_GCC_ASM_FOR_X87": 1,
  "HAVE_GCC_UINT128_T": 1,
  "HAVE_GETADDRINFO": 1,
  "HAVE_GETC_UNLOCKED": 1,
  "HAVE_GETENTROPY": 1,
  "HAVE_GETGRGID_R": 1,
  "HAVE_GETGRNAM_R": 1,
  "HAVE_GETGROUPLIST": 1,
  "HAVE_GETGROUPS": 1,
  "HAVE_GETHOSTBYNAME": 0,
  "HAVE_GETHOSTBYNAME_R": 1,
  "HAVE_GETHOSTBYNAME_R_3_ARG": 0,
  "HAVE_GETHOSTBYNAME_R_5_ARG": 0,
  "HAVE_GETHOSTBYNAME_R_6_ARG": 1,
  "HAVE_GETITIMER": 1,
  "HAVE_GETLOADAVG": 1,
  "HAVE_GETLOGIN": 1,
  "HAVE_GETNAMEINFO": 1,
  "HAVE_GETPAGESIZE": 1,
  "HAVE_GETPEERNAME": 1,
  "HAVE_GETPGID": 1,
  "HAVE_GETPGRP": 1,
  "HAVE_GETPID": 1,
  "HAVE_GETPRIORITY": 1,
  "HAVE_GETPWENT": 1,
  "HAVE_GETPWNAM_R": 1,
  "HAVE_GETPWUID_R": 1,
  "HAVE_GETRANDOM": 1,
  "HAVE_GETRANDOM_SYSCALL": 1,
  "HAVE_GETRESGID": 1,
  "HAVE_GETRESUID": 1,
  "HAVE_GETSID": 1,
  "HAVE_GETSPENT": 1,
  "HAVE_GETSPNAM": 1,
  "HAVE_GETTIMEOFDAY": 1,
  "HAVE_GETWD": 1,
  "HAVE_GLIBC_MEMMOVE_BUG": 0,
  "HAVE_GRP_H": 1,
  "HAVE_HSTRERROR": 1,
  "HAVE_HTOLE64": 1,
  "HAVE_HYPOT": 1,
  "HAVE_IEEEFP_H": 0,
  "HAVE_IF_NAMEINDEX": 1,
  "HAVE_INET_ATON": 1,
  "HAVE_INET_PTON": 1,
  "HAVE_INITGROUPS": 1,
  "HAVE_INTTYPES_H": 1,
  "HAVE_IO_H": 0,
  "HAVE_IPA_PURE_CONST_BUG": 0,
  "HAVE_KILL": 1,
  "HAVE_KILLPG": 1,
  "HAVE_KQUEUE": 0,
  "HAVE_LANGINFO_H": 1,
  "HAVE_LARGEFILE_SUPPORT": 0,
  "HAVE_LCHFLAGS": 0,
  "HAVE_LCHMOD": 0,
  "HAVE_LCHOWN": 1,
  "HAVE_LGAMMA": 1,
  "HAVE_LIBDL": 1,
  "HAVE_LIBDLD": 0,
  "HAVE_LIBIEEE": 0,
  "HAVE_LIBINTL_H": 1,
  "HAVE_LIBREADLINE": 1,
  "HAVE_LIBRESOLV": 0,
  "HAVE_LIBSENDFILE": 0,
  "HAVE_LIBUTIL_H": 0,
  "HAVE_LINK": 1,
  "HAVE_LINKAT": 1,
  "HAVE_LINUX_CAN_BCM_H": 1,
  "HAVE_LINUX_CAN_H": 1,
  "HAVE_LINUX_CAN_RAW_FD_FRAMES": 1,
  "HAVE_LINUX_CAN_RAW_H": 1,
  "HAVE_LINUX_MEMFD_H": 1,
  "HAVE_LINUX_NETLINK_H": 1,
  "HAVE_LINUX_QRTR_H": 1,
  "HAVE_LINUX_RANDOM_H": 1,
  "HAVE_LINUX_TIPC_H": 1,
  "HAVE_LINUX_VM_SOCKETS_H": 1,
  "HAVE_LOCKF": 1,
  "HAVE_LOG1P": 1,
  "HAVE_LOG2": 1,
  "HAVE_LONG_DOUBLE": 1,
  "HAVE_LSTAT": 1,
  "HAVE_LUTIMES": 1,
  "HAVE_MADVISE": 1,
  "HAVE_MAKEDEV": 1,
  "HAVE_MBRTOWC": 1,
  "HAVE_MEMFD_CREATE": 1,
  "HAVE_MEMORY_H": 1,
  "HAVE_MEMRCHR": 1,
  "HAVE_MKDIRAT": 1,
  "HAVE_MKFIFO": 1,
  "HAVE_MKFIFOAT": 1,
  "HAVE_MKNOD": 1,
  "HAVE_MKNODAT": 1,
  "HAVE_MKTIME": 1,
  "HAVE_MMAP": 1,
  "HAVE_MREMAP": 1,
  "HAVE_NCURSES_H": 1,
  "HAVE_NDIR_H": 0,
  "HAVE_NETPACKET_PACKET_H": 1,
  "HAVE_NET_IF_H": 1,
  "HAVE_NICE": 1,
  "HAVE_OPENAT": 1,
  "HAVE_OPENPTY": 1,
  "HAVE_PATHCONF": 1,
  "HAVE_PAUSE": 1,
  "HAVE_PIPE2": 1,
  "HAVE_PLOCK": 0,
  "HAVE_POLL": 1,
  "HAVE_POLL_H": 1,
  "HAVE_POSIX_FADVISE": 1,
  "HAVE_POSIX_FALLOCATE": 1,
  "HAVE_POSIX_SPAWN": 1,
  "HAVE_POSIX_SPAWNP": 1,
  "HAVE_PREAD": 1,
  "HAVE_PREADV": 1,
  "HAVE_PREADV2": 1,
  "HAVE_PRLIMIT": 1,
  "HAVE_PROCESS_H": 0,
  "HAVE_PROTOTYPES": 1,
  "HAVE_PTHREAD_CONDATTR_SETCLOCK": 1,
  "HAVE_PTHREAD_DESTRUCTOR": 0,
  "HAVE_PTHREAD_GETCPUCLOCKID": 1,
  "HAVE_PTHREAD_H": 1,
  "HAVE_PTHREAD_INIT": 0,
  "HAVE_PTHREAD_KILL": 1,
  "HAVE_PTHREAD_SIGMASK": 1,
  "HAVE_PTY_H": 1,
  "HAVE_PUTENV": 1,
  "HAVE_PWRITE": 1,
  "HAVE_PWRITEV": 1,
  "HAVE_PWRITEV2": 1,
  "HAVE_READLINK": 1,
  "HAVE_READLINKAT": 1,
  "HAVE_READV": 1,
  "HAVE_REALPATH": 1,
  "HAVE_RENAMEAT": 1,
  "HAVE_RL_APPEND_HISTORY": 1,
  "HAVE_RL_CATCH_SIGNAL": 1,
  "HAVE_RL_COMPLETION_APPEND_CHARACTER": 1,
  "HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK": 1,
  "HAVE_RL_COMPLETION_MATCHES": 1,
  "HAVE_RL_COMPLETION_SUPPRESS_APPEND": 1,
  "HAVE_RL_PRE_INPUT_HOOK": 1,
  "HAVE_RL_RESIZE_TERMINAL": 1,
  "HAVE_ROUND": 1,
  "HAVE_RTPSPAWN": 0,
  "HAVE_SCHED_GET_PRIORITY_MAX": 1,
  "HAVE_SCHED_H": 1,
  "HAVE_SCHED_RR_GET_INTERVAL": 1,
  "HAVE_SCHED_SETAFFINITY": 1,
  "HAVE_SCHED_SETPARAM": 1,
  "HAVE_SCHED_SETSCHEDULER": 1,
  "HAVE_SEM_GETVALUE": 1,
  "HAVE_SEM_OPEN": 1,
  "HAVE_SEM_TIMEDWAIT": 1,
  "HAVE_SEM_UNLINK": 1,
  "HAVE_SENDFILE": 1,
  "HAVE_SETEGID": 1,
  "HAVE_SETEUID": 1,
  "HAVE_SETGID": 1,
  "HAVE_SETGROUPS": 1,
  "HAVE_SETHOSTNAME": 1,
  "HAVE_SETITIMER": 1,
  "HAVE_SETLOCALE": 1,
  "HAVE_SETPGID": 1,
  "HAVE_SETPGRP": 1,
  "HAVE_SETPRIORITY": 1,
  "HAVE_SETREGID": 1,
  "HAVE_SETRESGID": 1,
  "HAVE_SETRESUID": 1,
  "HAVE_SETREUID": 1,
  "HAVE_SETSID": 1,
  "HAVE_SETUID": 1,
  "HAVE_SETVBUF": 1,
  "HAVE_SHADOW_H": 1,
  "HAVE_SHM_OPEN": 1,
  "HAVE_SHM_UNLINK": 1,
  "HAVE_SIGACTION": 1,
  "HAVE_SIGALTSTACK": 1,
  "HAVE_SIGFILLSET": 1,
  "HAVE_SIGINFO_T_SI_BAND": 1,
  "HAVE_SIGINTERRUPT": 1,
  "HAVE_SIGNAL_H": 1,
  "HAVE_SIGPENDING": 1,
  "HAVE_SIGRELSE": 1,
  "HAVE_SIGTIMEDWAIT": 1,
  "HAVE_SIGWAIT": 1,
  "HAVE_SIGWAITINFO": 1,
  "HAVE_SNPRINTF": 1,
  "HAVE_SOCKADDR_ALG": 1,
  "HAVE_SOCKADDR_SA_LEN": 0,
  "HAVE_SOCKADDR_STORAGE": 1,
  "HAVE_SOCKETPAIR": 1,
  "HAVE_SPAWN_H": 1,
  "HAVE_SSIZE_T": 1,
  "HAVE_STATVFS": 1,
  "HAVE_STAT_TV_NSEC": 1,
  "HAVE_STAT_TV_NSEC2": 0,
  "HAVE_STDARG_PROTOTYPES": 1,
  "HAVE_STDINT_H": 1,
  "HAVE_STDLIB_H": 1,
  "HAVE_STD_ATOMIC": 1,
  "HAVE_STRDUP": 1,
  "HAVE_STRFTIME": 1,
  "HAVE_STRINGS_H": 1,
  "HAVE_STRING_H": 1,
  "HAVE_STRLCPY": 0,
  "HAVE_STROPTS_H": 1,
  "HAVE_STRSIGNAL": 1,
  "HAVE_STRUCT_PASSWD_PW_GECOS": 1,
  "HAVE_STRUCT_PASSWD_PW_PASSWD": 1,
  "HAVE_STRUCT_STAT_ST_BIRTHTIME": 0,
  "HAVE_STRUCT_STAT_ST_BLKSIZE": 1,
  "HAVE_STRUCT_STAT_ST_BLOCKS": 1,
  "HAVE_STRUCT_STAT_ST_FLAGS": 0,
  "HAVE_STRUCT_STAT_ST_GEN": 0,
  "HAVE_STRUCT_STAT_ST_RDEV": 1,
  "HAVE_STRUCT_TM_TM_ZONE": 1,
  "HAVE_SYMLINK": 1,
  "HAVE_SYMLINKAT": 1,
  "HAVE_SYNC": 1,
  "HAVE_SYSCONF": 1,
  "HAVE_SYSEXITS_H": 1,
  "HAVE_SYS_AUDIOIO_H": 0,
  "HAVE_SYS_BSDTTY_H": 0,
  "HAVE_SYS_DEVPOLL_H": 0,
  "HAVE_SYS_DIR_H": 0,
  "HAVE_SYS_ENDIAN_H": 0,
  "HAVE_SYS_EPOLL_H": 1,
  "HAVE_SYS_EVENT_H": 0,
  "HAVE_SYS_FILE_H": 1,
  "HAVE_SYS_IOCTL_H": 1,
  "HAVE_SYS_KERN_CONTROL_H": 0,
  "HAVE_SYS_LOADAVG_H": 0,
  "HAVE_SYS_LOCK_H": 0,
  "HAVE_SYS_MEMFD_H": 0,
  "HAVE_SYS_MKDEV_H": 0,
  "HAVE_SYS_MMAN_H": 1,
  "HAVE_SYS_MODEM_H": 0,
  "HAVE_SYS_NDIR_H": 0,
  "HAVE_SYS_PARAM_H": 1,
  "HAVE_SYS_POLL_H": 1,
  "HAVE_SYS_RANDOM_H": 1,
  "HAVE_SYS_RESOURCE_H": 1,
  "HAVE_SYS_SELECT_H": 1,
  "HAVE_SYS_SENDFILE_H": 1,
  "HAVE_SYS_SOCKET_H": 1,
  "HAVE_SYS_STATVFS_H": 1,
  "HAVE_SYS_STAT_H": 1,
  "HAVE_SYS_SYSCALL_H": 1,
  "HAVE_SYS_SYSMACROS_H": 1,
  "HAVE_SYS_SYS_DOMAIN_H": 0,
  "HAVE_SYS_TERMIO_H": 0,
  "HAVE_SYS_TIMES_H": 1,
  "HAVE_SYS_TIME_H": 1,
  "HAVE_SYS_TYPES_H": 1,
  "HAVE_SYS_UIO_H": 1,
  "HAVE_SYS_UN_H": 1,
  "HAVE_SYS_UTSNAME_H": 1,
  "HAVE_SYS_WAIT_H": 1,
  "HAVE_SYS_XATTR_H": 1,
  "HAVE_TCGETPGRP": 1,
  "HAVE_TCSETPGRP": 1,
  "HAVE_TEMPNAM": 1,
  "HAVE_TERMIOS_H": 1,
  "HAVE_TERM_H": 1,
  "HAVE_TGAMMA": 1,
  "HAVE_TIMEGM": 1,
  "HAVE_TIMES": 1,
  "HAVE_TMPFILE": 1,
  "HAVE_TMPNAM": 1,
  "HAVE_TMPNAM_R": 1,
  "HAVE_TM_ZONE": 1,
  "HAVE_TRUNCATE": 1,
  "HAVE_TZNAME": 0,
  "HAVE_UCS4_TCL": 0,
  "HAVE_UNAME": 1,
  "HAVE_UNISTD_H": 1,
  "HAVE_UNLINKAT": 1,
  "HAVE_UNSETENV": 1,
  "HAVE_USABLE_WCHAR_T": 0,
  "HAVE_UTIL_H": 0,
  "HAVE_UTIMENSAT": 1,
  "HAVE_UTIMES": 1,
  "HAVE_UTIME_H": 1,
  "HAVE_UUID_CREATE": 0,
  "HAVE_UUID_ENC_BE": 0,
  "HAVE_UUID_GENERATE_TIME_SAFE": 1,
  "HAVE_UUID_H": 0,
  "HAVE_UUID_UUID_H": 1,
  "HAVE_WAIT3": 1,
  "HAVE_WAIT4": 1,
  "HAVE_WAITID": 1,
  "HAVE_WAITPID": 1,
  "HAVE_WCHAR_H": 1,
  "HAVE_WCSCOLL": 1,
  "HAVE_WCSFTIME": 1,
  "HAVE_WCSXFRM": 1,
  "HAVE_WMEMCMP": 1,
  "HAVE_WORKING_TZSET": 1,
  "HAVE_WRITEV": 1,
  "HAVE_X509_VERIFY_PARAM_SET1_HOST": 1,
  "HAVE_ZLIB_COPY": 1,
  "HAVE__GETPTY": 0,
  "HOST_GNU_TYPE": "x86_64-pc-linux-gnu",
  "INCLDIRSTOMAKE": "/home/chris/.pyenv/versions/3.8.0/include /home/chris/.pyenv/versions/3.8.0/include /home/chris/.pyenv/versions/3.8.0/include/python3.8 /home/chris/.pyenv/versions/3.8.0/include/python3.8",
  "INCLUDEDIR": "/home/chris/.pyenv/versions/3.8.0/include",
  "INCLUDEPY": "/home/chris/.pyenv/versions/3.8.0/include/python3.8",
  "INSTALL": "/usr/bin/install -c",
  "INSTALL_DATA": "/usr/bin/install -c -m 644",
  "INSTALL_PROGRAM": "/usr/bin/install -c",
  "INSTALL_SCRIPT": "/usr/bin/install -c",
  "INSTALL_SHARED": "/usr/bin/install -c -m 755",
  "INSTSONAME": "libpython3.8.a",
  "IO_H": "Modules/_io/_iomodule.h",
  "IO_OBJS": "\\",
  "LDCXXSHARED": "g++ -pthread -shared",
  "LDFLAGS": "-L/home/chris/.pyenv/versions/3.8.0/lib -L/home/chris/.pyenv/versions/3.8.0/lib",
  "LDFLAGS_NODIST": "",
  "LDLIBRARY": "libpython3.8.a",
  "LDLIBRARYDIR": "",
  "LDSHARED": "gcc -pthread -shared -L/home/chris/.pyenv/versions/3.8.0/lib -L/home/chris/.pyenv/versions/3.8.0/lib",
  "LDVERSION": "3.8",
  "LIBC": "",
  "LIBDEST": "/home/chris/.pyenv/versions/3.8.0/lib/python3.8",
  "LIBDIR": "/home/chris/.pyenv/versions/3.8.0/lib",
  "LIBFFI_INCLUDEDIR": "",
  "LIBM": "-lm",
  "LIBOBJDIR": "Python/",
  "LIBOBJS": "",
  "LIBPC": "/home/chris/.pyenv/versions/3.8.0/lib/pkgconfig",
  "LIBPL": "/home/chris/.pyenv/versions/3.8.0/lib/python3.8/config-3.8-x86_64-linux-gnu",
  "LIBPYTHON": "",
  "LIBRARY": "libpython3.8.a",
  "LIBRARY_OBJS": "\\",
  "LIBRARY_OBJS_OMIT_FROZEN": "\\",
  "LIBS": "-lcrypt -lpthread -ldl  -lutil -lm",
  "LIBSUBDIRS": "tkinter tkinter/test tkinter/test/test_tkinter \\",
  "LINKCC": "gcc -pthread",
  "LINKFORSHARED": "-Xlinker -export-dynamic",
  "LIPO_32BIT_FLAGS": "",
  "LLVM_PROF_ERR": "no",
  "LLVM_PROF_FILE": "",
  "LLVM_PROF_MERGER": "true",
  "LN": "ln",
  "LOCALMODLIBS": "",
  "MACHDEP": "linux",
  "MACHDEP_OBJS": "",
  "MACHDESTLIB": "/home/chris/.pyenv/versions/3.8.0/lib/python3.8",
  "MACOSX_DEPLOYMENT_TARGET": "",
  "MAINCC": "gcc -pthread",
  "MAJOR_IN_MKDEV": 0,
  "MAJOR_IN_SYSMACROS": 0,
  "MAKESETUP": "./Modules/makesetup",
  "MANDIR": "/home/chris/.pyenv/versions/3.8.0/share/man",
  "MKDIR_P": "/bin/mkdir -p",
  "MODBUILT_NAMES": "posix  errno  pwd  _sre  _codecs  _weakref  _functools  _operator  _collections  _abc  itertools  atexit  _signal  _stat  time  _thread  _locale  _io  faulthandler  _tracemalloc  _symtable  xxsubtype",
  "MODDISABLED_NAMES": "",
  "MODLIBS": "",
  "MODOBJS": "Modules/posixmodule.o  Modules/errnomodule.o  Modules/pwdmodule.o  Modules/_sre.o  Modules/_codecsmodule.o  Modules/_weakref.o  Modules/_functoolsmodule.o  Modules/_operator.o  Modules/_collectionsmodule.o  Modules/_abc.o  Modules/itertoolsmodule.o  Modules/atexitmodule.o  Modules/signalmodule.o  Modules/_stat.o  Modules/timemodule.o  Modules/_threadmodule.o  Modules/_localemodule.o  Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o  Modules/faulthandler.o  Modules/_tracemalloc.o Modules/hashtable.o  Modules/symtablemodule.o  Modules/xxsubtype.o",
  "MODULE_OBJS": "\\",
  "MULTIARCH": "x86_64-linux-gnu",
  "MULTIARCH_CPPFLAGS": "-DMULTIARCH=\\\"x86_64-linux-gnu\\\"",
  "MVWDELCH_IS_EXPRESSION": 1,
  "NO_AS_NEEDED": "-Wl,--no-as-needed",
  "OBJECT_OBJS": "\\",
  "OPENSSL_INCLUDES": "",
  "OPENSSL_LDFLAGS": "",
  "OPENSSL_LIBS": "-lssl -lcrypto",
  "OPT": "-DNDEBUG -g -fwrapv -O3 -Wall",
  "OTHER_LIBTOOL_OPT": "",
  "PACKAGE_BUGREPORT": 0,
  "PACKAGE_NAME": 0,
  "PACKAGE_STRING": 0,
  "PACKAGE_TARNAME": 0,
  "PACKAGE_URL": 0,
  "PACKAGE_VERSION": 0,
  "PARSER_HEADERS": "\\",
  "PARSER_OBJS": "\\ Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o",
  "PGO_PROF_GEN_FLAG": "-fprofile-generate",
  "PGO_PROF_USE_FLAG": "-fprofile-use -fprofile-correction",
  "POBJS": "\\",
  "POSIX_SEMAPHORES_NOT_ENABLED": 0,
  "PROFILE_TASK": "-m test --pgo",
  "PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT": 1,
  "PTHREAD_SYSTEM_SCHED_SUPPORTED": 1,
  "PURIFY": "",
  "PY3LIBRARY": "",
  "PYLONG_BITS_IN_DIGIT": 0,
  "PYTHON": "python",
  "PYTHONFRAMEWORK": "",
  "PYTHONFRAMEWORKDIR": "no-framework",
  "PYTHONFRAMEWORKINSTALLDIR": "",
  "PYTHONFRAMEWORKPREFIX": "",
  "PYTHONPATH": "",
  "PYTHON_FOR_BUILD": "./python -E",
  "PYTHON_FOR_REGEN": "python3.8",
  "PYTHON_HEADERS": "\\",
  "PYTHON_OBJS": "\\",
  "PY_BUILTIN_MODULE_CFLAGS": "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration  -I./Include/internal -I. -I./Include -I/home/chris/.pyenv/versions/3.8.0/include -I/home/chris/.pyenv/versions/3.8.0/include -DPy_BUILD_CORE_BUILTIN",
  "PY_CFLAGS": "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall",
  "PY_CFLAGS_NODIST": "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration  -I./Include/internal",
  "PY_COERCE_C_LOCALE": 1,
  "PY_CORE_CFLAGS": "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration  -I./Include/internal -I. -I./Include -I/home/chris/.pyenv/versions/3.8.0/include -I/home/chris/.pyenv/versions/3.8.0/include -DPy_BUILD_CORE",
  "PY_CORE_LDFLAGS": "-L/home/chris/.pyenv/versions/3.8.0/lib -L/home/chris/.pyenv/versions/3.8.0/lib",
  "PY_CPPFLAGS": "-I. -I./Include -I/home/chris/.pyenv/versions/3.8.0/include -I/home/chris/.pyenv/versions/3.8.0/include",
  "PY_FORMAT_SIZE_T": "\"z\"",
  "PY_LDFLAGS": "-L/home/chris/.pyenv/versions/3.8.0/lib -L/home/chris/.pyenv/versions/3.8.0/lib",
  "PY_LDFLAGS_NODIST": "",
  "PY_SSL_DEFAULT_CIPHERS": 1,
  "PY_SSL_DEFAULT_CIPHER_STRING": 0,
  "PY_STDMODULE_CFLAGS": "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration  -I./Include/internal -I. -I./Include -I/home/chris/.pyenv/versions/3.8.0/include -I/home/chris/.pyenv/versions/3.8.0/include",
  "Py_DEBUG": 0,
  "Py_ENABLE_SHARED": 0,
  "Py_HASH_ALGORITHM": 0,
  "Py_TRACE_REFS": 0,
  "QUICKTESTOPTS": "-x test_subprocess test_io test_lib2to3 \\",
  "READELF": "readelf",
  "RESSRCDIR": "Mac/Resources/framework",
  "RETSIGTYPE": "void",
  "RUNSHARED": "",
  "SCRIPTDIR": "/home/chris/.pyenv/versions/3.8.0/lib",
  "SETPGRP_HAVE_ARG": 0,
  "SGI_ABI": "@SGI_ABI@",
  "SHELL": "/bin/sh",
  "SHLIBS": "-lcrypt -lpthread -ldl  -lutil -lm",
  "SHLIB_SUFFIX": ".so",
  "SHM_NEEDS_LIBRT": 1,
  "SIGNED_RIGHT_SHIFT_ZERO_FILLS": 0,
  "SITEPATH": "",
  "SIZEOF_DOUBLE": 8,
  "SIZEOF_FLOAT": 4,
  "SIZEOF_FPOS_T": 16,
  "SIZEOF_INT": 4,
  "SIZEOF_LONG": 8,
  "SIZEOF_LONG_DOUBLE": 16,
  "SIZEOF_LONG_LONG": 8,
  "SIZEOF_OFF_T": 8,
  "SIZEOF_PID_T": 4,
  "SIZEOF_PTHREAD_KEY_T": 4,
  "SIZEOF_PTHREAD_T": 8,
  "SIZEOF_SHORT": 2,
  "SIZEOF_SIZE_T": 8,
  "SIZEOF_TIME_T": 8,
  "SIZEOF_UINTPTR_T": 8,
  "SIZEOF_VOID_P": 8,
  "SIZEOF_WCHAR_T": 4,
  "SIZEOF__BOOL": 1,
  "SO": ".cpython-38-x86_64-linux-gnu.so",
  "SOABI": "cpython-38-x86_64-linux-gnu",
  "SRCDIRS": "Parser Objects Python Modules Modules/_io Programs",
  "SRC_GDB_HOOKS": "./Tools/gdb/libpython.py",
  "STDC_HEADERS": 1,
  "STRICT_SYSV_CURSES": "/* Don't use ncurses extensions */",
  "STRIPFLAG": "-s",
  "SUBDIRS": "",
  "SUBDIRSTOO": "Include Lib Misc",
  "SYSLIBS": "-lm",
  "SYS_SELECT_WITH_SYS_TIME": 1,
  "TCLTK_INCLUDES": "",
  "TCLTK_LIBS": "",
  "TESTOPTS": "",
  "TESTPATH": "",
  "TESTPYTHON": "./python",
  "TESTPYTHONOPTS": "",
  "TESTRUNNER": "./python ./Tools/scripts/run_tests.py",
  "TESTTIMEOUT": 1200,
  "TIMEMODULE_LIB": 0,
  "TIME_WITH_SYS_TIME": 1,
  "TM_IN_SYS_TIME": 0,
  "UNICODE_DEPS": "\\",
  "UNIVERSALSDK": "",
  "UPDATE_FILE": "python3.8 ./Tools/scripts/update_file.py",
  "USE_COMPUTED_GOTOS": 0,
  "VERSION": "3.8",
  "WINDOW_HAS_FLAGS": 1,
  "WITH_DOC_STRINGS": 1,
  "WITH_DTRACE": 1,
  "WITH_DYLD": 0,
  "WITH_LIBINTL": 0,
  "WITH_NEXT_FRAMEWORK": 0,
  "WITH_PYMALLOC": 1,
  "WITH_VALGRIND": 0,
  "X87_DOUBLE_ROUNDING": 0,
  "XMLLIBSUBDIRS": "xml xml/dom xml/etree xml/parsers xml/sax",
  "abiflags": "",
  "abs_builddir": "/tmp/user/1000/python-build.20200104140752.12766/Python-3.8.0",
  "abs_srcdir": "/tmp/user/1000/python-build.20200104140752.12766/Python-3.8.0",
  "base": "/home/chris/PersonalDocuments/repositories/pip/.tox/py38",
  "datarootdir": "/home/chris/.pyenv/versions/3.8.0/share",
  "exec_prefix": "/home/chris/.pyenv/versions/3.8.0",
  "installed_base": "/home/chris/PersonalDocuments/repositories/pip/.tox/py38",
  "installed_platbase": "/home/chris/PersonalDocuments/repositories/pip/.tox/py38",
  "platbase": "/home/chris/PersonalDocuments/repositories/pip/.tox/py38",
  "prefix": "/home/chris/.pyenv/versions/3.8.0",
  "projectbase": "/home/chris/PersonalDocuments/repositories/pip/.tox/py38/bin",
  "py_version": "3.8.0",
  "py_version_nodot": "38",
  "py_version_short": "3.8",
  "srcdir": "/home/chris/.pyenv/versions/3.8.0/lib/python3.8/config-3.8-x86_64-linux-gnu",
  "userbase": "/home/chris/.local"
}

Expected behaviour

I should be able to run VS Code with the Python extension enabled and the Python Language Server selected for an arbitrary amount of time without issues.

Actual behaviour

After several hours, the Python Language Server process (/home/chris/.vscode/extensions/ms-python.python-2020.1.58038/languageServer.0.5.30/Microsoft.Python.LanguageServ er) has consumed all available memory on the system.

Logs

Logs available here

These logs represent a time period of about 2.5 hours using VS Code. I grabbed the log when RSS got up to around 9gb (of 20 total available).

During this time, I was:

  1. Editing Python files
  2. Closing/opening Python files
  3. Checking out different branches in git, sometimes with very different project structures
  4. Navigating in Python files

for pip.

Code Snippet / Additional lnformation

There is another issue in #1549, but it contains very few details and doesn't look like it is going anywhere. Having this new issue with all the requested information seems better to me.

The Python environment was set to the default Python 3.8 environment generated by tox. If you clone the repository and invoke tox -e py38 (then Ctrl-C after environment creation), it should result in the same environment, but just in case:

./.tox/py38/bin/python -m pip freeze
apipkg==1.5
atomicwrites==1.3.0
attrs==19.3.0
cffi==1.13.2
coverage==5.0.3
cryptography==2.8
csv23==0.1.6
execnet==1.7.1
freezegun==0.3.14
mock==3.0.5
more-itertools==8.1.0
pluggy==0.13.1
pretend==1.0.9
py==1.8.1
pycparser==2.19
pytest==3.8.2
pytest-cov==2.8.1
pytest-forked==1.1.3
pytest-rerunfailures==6.0
pytest-timeout==1.3.4
pytest-xdist==1.27.0
python-dateutil==2.8.1
PyYAML==5.3
scripttest==1.3
six==1.14.0
virtualenv==16.7.9
Werkzeug==0.16.0

When this has happened in the past I have killed the server (with SIGTERM). If not killed it will consume most memory, including swap. This has happened every time I have had the Python extension enabled and the Python Language Server enabled for the past month (estimate). I think that how much memory is consumed relates directly to the amount of activity in VS Code and the repository (accessing more files, switching between different branches with different contents).

If it matters, I have python.analysis.cachingLevel set to "None". I don't know why, it may have been to overcome an issue where old/offset quick-fixes and suggestions would be visible in the current buffer randomly.

Please let me know if I can provide more information or details on how I can debug the leak from my side. I am OK with running a Windows VM locally for the tooling if needed.

chrahunt avatar Jan 25 '20 20:01 chrahunt

I have the same issue on Ubuntu 19.10, Python 3.7 (system default) and LS 0.5.30.0. I regularly need to send SIGTERM to the language server process to keep it from pushing everything to swap.. (16G system memory)

hmvp avatar Feb 13 '20 16:02 hmvp

I am experiencing the same issue on Solus, python 3.7 and LS 0.5.50. After about an hour of usage it consumes 11.8 GB memory which casues my system to freeze.

xulongwu4 avatar May 19 '20 15:05 xulongwu4

I'm seeing the same issue in a Docker container on CentOS 7. Not as severe than 9 to 11 GiB but about 3 to 4 GiB.

aki-k avatar Jun 07 '20 20:06 aki-k

3-4 GB is not unusual when several large libraries are loaded.

MikhailArkhipov avatar Jun 07 '20 21:06 MikhailArkhipov

@MikhailArkhipov The user with that problem said that he stops getting "suggestions" when that happens.

aki-k avatar Jun 08 '20 10:06 aki-k

I have the same issue, not uncommon for the language server to quickly eat up 60% of my 16GB of RAM. I think this happens more often when I am working on PyQt projects, which is a massive library. But still its a pain to have to kill all my buffers and restart emacs every so often. I also noticed that the linter messages and auto-completions from LSP get super slow and sometimes stop working altogether once RAM gets up over 50%. That's my sign to restart emacs. I can just restart the language server too but since all my buffers are still open it seems to quickly ratchet back up and a clean restart buys me more time.

Thanks for your work on this LSP backend, it's great when working well, I hope you can solve this memory issue!

I am on commit 2aef1f8: Allow navigation to stubs (#1960)

dam5h avatar Jul 03 '20 01:07 dam5h

Same issue on Ubuntu20.04, no spec version of Python, It Just consumes as much memory as there is. (I have got 13G freed memory after kill the process!)

minghu6 avatar Apr 20 '21 00:04 minghu6