microsoft / python-language-server

Microsoft Language Server for Python
Apache License 2.0
915 stars 133 forks source link

Memory leak on Linux #1883

Open chrahunt opened 4 years ago

chrahunt commented 4 years ago

Environment data

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.

hmvp commented 4 years ago

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)

xulongwu4 commented 4 years ago

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.

aki-k commented 4 years ago

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.

MikhailArkhipov commented 4 years ago

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

aki-k commented 4 years ago

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

dam5h commented 4 years ago

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)

minghu6 commented 3 years ago

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!)