microsoft / vscode-cpptools

Official repository for the Microsoft C/C++ extension for VS Code.
Other
5.45k stars 1.53k forks source link

Outline stops working #4894

Closed nunojsa closed 4 years ago

nunojsa commented 4 years ago

So, basically, What is happening is that the outline just stops working after some time of usage. This happens with some frequency and it is a bit annoying since it is a very important feature to have. Restarting Code fixes it...

To Reproduce I don't know how to reproduce it but it happens with some frequency...

Expected behavior Outlines to work either with ctrl+shift+o and the panel...

Screenshots image

Additional context This is what I can see after opening a new file:

Update IntelliSense time (sec): 0.285
cpptools/textEditorSelectionChange
cpptools/getCodeActions: 6524
textDocument/didOpen
Attempting to get defaults from compiler found on the machine: '/usr/bin/gcc'
cpptools/activeDocumentChange
cpptools/textEditorSelectionChange
cpptools/getDocumentSymbols: 6525
terminating child process: 3423295
terminating child process: 3423301
sending compilation args for /home/nsa/work/linux/drivers/iio/temperature/ltc2983.c
  include: /home/nsa/work/Vivado_2019_R1/SDK/2019.1/gnu/aarch32/lin/gcc-arm-linux-gnueabi/lib/gcc/arm-linux-gnueabihf/8.2.0/include
  include: /home/nsa/work/linux/arch/arm/include
  include: /home/nsa/work/linux/arch/arm/include/generated
  include: /home/nsa/work/linux/include
  include: /home/nsa/work/linux/arch/arm/include/uapi
  include: /home/nsa/work/linux/arch/arm/include/generated/uapi
  include: /home/nsa/work/linux/include/uapi
  include: /home/nsa/work/linux/include/generated/uapi
  include: /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include
  include: /usr/local/include
  include: /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include-fixed
  include: /usr/include
  define: __STDC__=1
  define: __STDC_VERSION__=201112L
  define: __STDC_UTF_16__=1
  define: __STDC_UTF_32__=1
  define: __STDC_HOSTED__=1
  define: __GNUC__=9
  define: __GNUC_MINOR__=2
  define: __GNUC_PATCHLEVEL__=0
  define: __VERSION__="9.2.0"
  define: __ATOMIC_RELAXED=0
  define: __ATOMIC_SEQ_CST=5
  define: __ATOMIC_ACQUIRE=2
  define: __ATOMIC_RELEASE=3
  define: __ATOMIC_ACQ_REL=4
  define: __ATOMIC_CONSUME=1
  define: __pic__=2
  define: __PIC__=2
  define: __pie__=2
  define: __PIE__=2
  define: __FINITE_MATH_ONLY__=0
  define: _LP64=1
  define: __LP64__=1
  define: __SIZEOF_INT__=4
  define: __SIZEOF_LONG__=8
  define: __SIZEOF_LONG_LONG__=8
  define: __SIZEOF_SHORT__=2
  define: __SIZEOF_FLOAT__=4
  define: __SIZEOF_DOUBLE__=8
  define: __SIZEOF_LONG_DOUBLE__=16
  define: __SIZEOF_SIZE_T__=8
  define: __CHAR_BIT__=8
  define: __BIGGEST_ALIGNMENT__=16
  define: __ORDER_LITTLE_ENDIAN__=1234
  define: __ORDER_BIG_ENDIAN__=4321
  define: __ORDER_PDP_ENDIAN__=3412
  define: __BYTE_ORDER__=__ORDER_LITTLE_ENDIAN__
  define: __FLOAT_WORD_ORDER__=__ORDER_LITTLE_ENDIAN__
  define: __SIZEOF_POINTER__=8
  define: __SIZE_TYPE__=long unsigned int
  define: __PTRDIFF_TYPE__=long int
  define: __WCHAR_TYPE__=int
  define: __WINT_TYPE__=unsigned int
  define: __INTMAX_TYPE__=long int
  define: __UINTMAX_TYPE__=long unsigned int
  define: __CHAR16_TYPE__=short unsigned int
  define: __CHAR32_TYPE__=unsigned int
  define: __SIG_ATOMIC_TYPE__=int
  define: __INT8_TYPE__=signed char
  define: __INT16_TYPE__=short int
  define: __INT32_TYPE__=int
  define: __INT64_TYPE__=long int
  define: __UINT8_TYPE__=unsigned char
  define: __UINT16_TYPE__=short unsigned int
  define: __UINT32_TYPE__=unsigned int
  define: __UINT64_TYPE__=long unsigned int
  define: __INT_LEAST8_TYPE__=signed char
  define: __INT_LEAST16_TYPE__=short int
  define: __INT_LEAST32_TYPE__=int
  define: __INT_LEAST64_TYPE__=long int
  define: __UINT_LEAST8_TYPE__=unsigned char
  define: __UINT_LEAST16_TYPE__=short unsigned int
  define: __UINT_LEAST32_TYPE__=unsigned int
  define: __UINT_LEAST64_TYPE__=long unsigned int
  define: __INT_FAST8_TYPE__=signed char
  define: __INT_FAST16_TYPE__=long int
  define: __INT_FAST32_TYPE__=long int
  define: __INT_FAST64_TYPE__=long int
  define: __UINT_FAST8_TYPE__=unsigned char
  define: __UINT_FAST16_TYPE__=long unsigned int
  define: __UINT_FAST32_TYPE__=long unsigned int
  define: __UINT_FAST64_TYPE__=long unsigned int
  define: __INTPTR_TYPE__=long int
  define: __UINTPTR_TYPE__=long unsigned int
  define: __GXX_ABI_VERSION=1013
  define: __SCHAR_MAX__=0x7f
  define: __SHRT_MAX__=0x7fff
  define: __INT_MAX__=0x7fffffff
  define: __LONG_MAX__=0x7fffffffffffffffL
  define: __LONG_LONG_MAX__=0x7fffffffffffffffLL
  define: __WCHAR_MAX__=0x7fffffff
  define: __WCHAR_MIN__=(-__WCHAR_MAX__ - 1)
  define: __WINT_MAX__=0xffffffffU
  define: __WINT_MIN__=0U
  define: __PTRDIFF_MAX__=0x7fffffffffffffffL
  define: __SIZE_MAX__=0xffffffffffffffffUL
  define: __SCHAR_WIDTH__=8
  define: __SHRT_WIDTH__=16
  define: __INT_WIDTH__=32
  define: __LONG_WIDTH__=64
  define: __LONG_LONG_WIDTH__=64
  define: __WCHAR_WIDTH__=32
  define: __WINT_WIDTH__=32
  define: __PTRDIFF_WIDTH__=64
  define: __SIZE_WIDTH__=64
  define: __INTMAX_MAX__=0x7fffffffffffffffL
  define: __INTMAX_C(c)=c ## L
  define: __UINTMAX_MAX__=0xffffffffffffffffUL
  define: __UINTMAX_C(c)=c ## UL
  define: __INTMAX_WIDTH__=64
  define: __SIG_ATOMIC_MAX__=0x7fffffff
  define: __SIG_ATOMIC_MIN__=(-__SIG_ATOMIC_MAX__ - 1)
  define: __SIG_ATOMIC_WIDTH__=32
  define: __INT8_MAX__=0x7f
  define: __INT16_MAX__=0x7fff
  define: __INT32_MAX__=0x7fffffff
  define: __INT64_MAX__=0x7fffffffffffffffL
  define: __UINT8_MAX__=0xff
  define: __UINT16_MAX__=0xffff
  define: __UINT32_MAX__=0xffffffffU
  define: __UINT64_MAX__=0xffffffffffffffffUL
  define: __INT_LEAST8_MAX__=0x7f
  define: __INT8_C(c)=c
  define: __INT_LEAST8_WIDTH__=8
  define: __INT_LEAST16_MAX__=0x7fff
  define: __INT16_C(c)=c
  define: __INT_LEAST16_WIDTH__=16
  define: __INT_LEAST32_MAX__=0x7fffffff
  define: __INT32_C(c)=c
  define: __INT_LEAST32_WIDTH__=32
  define: __INT_LEAST64_MAX__=0x7fffffffffffffffL
  define: __INT64_C(c)=c ## L
  define: __INT_LEAST64_WIDTH__=64
  define: __UINT_LEAST8_MAX__=0xff
  define: __UINT8_C(c)=c
  define: __UINT_LEAST16_MAX__=0xffff
  define: __UINT16_C(c)=c
  define: __UINT_LEAST32_MAX__=0xffffffffU
  define: __UINT32_C(c)=c ## U
  define: __UINT_LEAST64_MAX__=0xffffffffffffffffUL
  define: __UINT64_C(c)=c ## UL
  define: __INT_FAST8_MAX__=0x7f
  define: __INT_FAST8_WIDTH__=8
  define: __INT_FAST16_MAX__=0x7fffffffffffffffL
  define: __INT_FAST16_WIDTH__=64
  define: __INT_FAST32_MAX__=0x7fffffffffffffffL
  define: __INT_FAST32_WIDTH__=64
  define: __INT_FAST64_MAX__=0x7fffffffffffffffL
  define: __INT_FAST64_WIDTH__=64
  define: __UINT_FAST8_MAX__=0xff
  define: __UINT_FAST16_MAX__=0xffffffffffffffffUL
  define: __UINT_FAST32_MAX__=0xffffffffffffffffUL
  define: __UINT_FAST64_MAX__=0xffffffffffffffffUL
  define: __INTPTR_MAX__=0x7fffffffffffffffL
  define: __INTPTR_WIDTH__=64
  define: __UINTPTR_MAX__=0xffffffffffffffffUL
  define: __GCC_IEC_559=2
  define: __GCC_IEC_559_COMPLEX=2
  define: __FLT_EVAL_METHOD__=0
  define: __FLT_EVAL_METHOD_TS_18661_3__=0
  define: __DEC_EVAL_METHOD__=2
  define: __FLT_RADIX__=2
  define: __FLT_MANT_DIG__=24
  define: __FLT_DIG__=6
  define: __FLT_MIN_EXP__=(-125)
  define: __FLT_MIN_10_EXP__=(-37)
  define: __FLT_MAX_EXP__=128
  define: __FLT_MAX_10_EXP__=38
  define: __FLT_DECIMAL_DIG__=9
  define: __FLT_MAX__=3.40282346638528859811704183484516925e+38F
  define: __FLT_MIN__=1.17549435082228750796873653722224568e-38F
  define: __FLT_EPSILON__=1.19209289550781250000000000000000000e-7F
  define: __FLT_DENORM_MIN__=1.40129846432481707092372958328991613e-45F
  define: __FLT_HAS_DENORM__=1
  define: __FLT_HAS_INFINITY__=1
  define: __FLT_HAS_QUIET_NAN__=1
  define: __DBL_MANT_DIG__=53
  define: __DBL_DIG__=15
  define: __DBL_MIN_EXP__=(-1021)
  define: __DBL_MIN_10_EXP__=(-307)
  define: __DBL_MAX_EXP__=1024
  define: __DBL_MAX_10_EXP__=308
  define: __DBL_DECIMAL_DIG__=17
  define: __DBL_MAX__=((double)1.79769313486231570814527423731704357e+308L)
  define: __DBL_MIN__=((double)2.22507385850720138309023271733240406e-308L)
  define: __DBL_EPSILON__=((double)2.22044604925031308084726333618164062e-16L)
  define: __DBL_DENORM_MIN__=((double)4.94065645841246544176568792868221372e-324L)
  define: __DBL_HAS_DENORM__=1
  define: __DBL_HAS_INFINITY__=1
  define: __DBL_HAS_QUIET_NAN__=1
  define: __LDBL_MANT_DIG__=64
  define: __LDBL_DIG__=18
  define: __LDBL_MIN_EXP__=(-16381)
  define: __LDBL_MIN_10_EXP__=(-4931)
  define: __LDBL_MAX_EXP__=16384
  define: __LDBL_MAX_10_EXP__=4932
  define: __DECIMAL_DIG__=21
  define: __LDBL_DECIMAL_DIG__=21
  define: __LDBL_MAX__=1.18973149535723176502126385303097021e+4932L
  define: __LDBL_MIN__=3.36210314311209350626267781732175260e-4932L
  define: __LDBL_EPSILON__=1.08420217248550443400745280086994171e-19L
  define: __LDBL_DENORM_MIN__=3.64519953188247460252840593361941982e-4951L
  define: __LDBL_HAS_DENORM__=1
  define: __LDBL_HAS_INFINITY__=1
  define: __LDBL_HAS_QUIET_NAN__=1
  define: __FLT32_MANT_DIG__=24
  define: __FLT32_DIG__=6
  define: __FLT32_MIN_EXP__=(-125)
  define: __FLT32_MIN_10_EXP__=(-37)
  define: __FLT32_MAX_EXP__=128
  define: __FLT32_MAX_10_EXP__=38
  define: __FLT32_DECIMAL_DIG__=9
  define: __FLT32_MAX__=3.40282346638528859811704183484516925e+38F32
  define: __FLT32_MIN__=1.17549435082228750796873653722224568e-38F32
  define: __FLT32_EPSILON__=1.19209289550781250000000000000000000e-7F32
  define: __FLT32_DENORM_MIN__=1.40129846432481707092372958328991613e-45F32
  define: __FLT32_HAS_DENORM__=1
  define: __FLT32_HAS_INFINITY__=1
  define: __FLT32_HAS_QUIET_NAN__=1
  define: __FLT64_MANT_DIG__=53
  define: __FLT64_DIG__=15
  define: __FLT64_MIN_EXP__=(-1021)
  define: __FLT64_MIN_10_EXP__=(-307)
  define: __FLT64_MAX_EXP__=1024
  define: __FLT64_MAX_10_EXP__=308
  define: __FLT64_DECIMAL_DIG__=17
  define: __FLT64_MAX__=1.79769313486231570814527423731704357e+308F64
  define: __FLT64_MIN__=2.22507385850720138309023271733240406e-308F64
  define: __FLT64_EPSILON__=2.22044604925031308084726333618164062e-16F64
  define: __FLT64_DENORM_MIN__=4.94065645841246544176568792868221372e-324F64
  define: __FLT64_HAS_DENORM__=1
  define: __FLT64_HAS_INFINITY__=1
  define: __FLT64_HAS_QUIET_NAN__=1
  define: __FLT128_MANT_DIG__=113
  define: __FLT128_DIG__=33
  define: __FLT128_MIN_EXP__=(-16381)
  define: __FLT128_MIN_10_EXP__=(-4931)
  define: __FLT128_MAX_EXP__=16384
  define: __FLT128_MAX_10_EXP__=4932
  define: __FLT128_DECIMAL_DIG__=36
  define: __FLT128_MAX__=1.18973149535723176508575932662800702e+4932F128
  define: __FLT128_MIN__=3.36210314311209350626267781732175260e-4932F128
  define: __FLT128_EPSILON__=1.92592994438723585305597794258492732e-34F128
  define: __FLT128_DENORM_MIN__=6.47517511943802511092443895822764655e-4966F128
  define: __FLT128_HAS_DENORM__=1
  define: __FLT128_HAS_INFINITY__=1
  define: __FLT128_HAS_QUIET_NAN__=1
  define: __FLT32X_MANT_DIG__=53
  define: __FLT32X_DIG__=15
  define: __FLT32X_MIN_EXP__=(-1021)
  define: __FLT32X_MIN_10_EXP__=(-307)
  define: __FLT32X_MAX_EXP__=1024
  define: __FLT32X_MAX_10_EXP__=308
  define: __FLT32X_DECIMAL_DIG__=17
  define: __FLT32X_MAX__=1.79769313486231570814527423731704357e+308F32x
  define: __FLT32X_MIN__=2.22507385850720138309023271733240406e-308F32x
  define: __FLT32X_EPSILON__=2.22044604925031308084726333618164062e-16F32x
  define: __FLT32X_DENORM_MIN__=4.94065645841246544176568792868221372e-324F32x
  define: __FLT32X_HAS_DENORM__=1
  define: __FLT32X_HAS_INFINITY__=1
  define: __FLT32X_HAS_QUIET_NAN__=1
  define: __FLT64X_MANT_DIG__=64
  define: __FLT64X_DIG__=18
  define: __FLT64X_MIN_EXP__=(-16381)
  define: __FLT64X_MIN_10_EXP__=(-4931)
  define: __FLT64X_MAX_EXP__=16384
  define: __FLT64X_MAX_10_EXP__=4932
  define: __FLT64X_DECIMAL_DIG__=21
  define: __FLT64X_MAX__=1.18973149535723176502126385303097021e+4932F64x
  define: __FLT64X_MIN__=3.36210314311209350626267781732175260e-4932F64x
  define: __FLT64X_EPSILON__=1.08420217248550443400745280086994171e-19F64x
  define: __FLT64X_DENORM_MIN__=3.64519953188247460252840593361941982e-4951F64x
  define: __FLT64X_HAS_DENORM__=1
  define: __FLT64X_HAS_INFINITY__=1
  define: __FLT64X_HAS_QUIET_NAN__=1
  define: __DEC32_MANT_DIG__=7
  define: __DEC32_MIN_EXP__=(-94)
  define: __DEC32_MAX_EXP__=97
  define: __DEC32_MIN__=1E-95DF
  define: __DEC32_MAX__=9.999999E96DF
  define: __DEC32_EPSILON__=1E-6DF
  define: __DEC32_SUBNORMAL_MIN__=0.000001E-95DF
  define: __DEC64_MANT_DIG__=16
  define: __DEC64_MIN_EXP__=(-382)
  define: __DEC64_MAX_EXP__=385
  define: __DEC64_MIN__=1E-383DD
  define: __DEC64_MAX__=9.999999999999999E384DD
  define: __DEC64_EPSILON__=1E-15DD
  define: __DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD
  define: __DEC128_MANT_DIG__=34
  define: __DEC128_MIN_EXP__=(-6142)
  define: __DEC128_MAX_EXP__=6145
  define: __DEC128_MIN__=1E-6143DL
  define: __DEC128_MAX__=9.999999999999999999999999999999999E6144DL
  define: __DEC128_EPSILON__=1E-33DL
  define: __DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL
  define: __REGISTER_PREFIX__=
  define: __USER_LABEL_PREFIX__=
  define: __GNUC_STDC_INLINE__=1
  define: __NO_INLINE__=1
  define: __STRICT_ANSI__=1
  define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1=1
  define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2=1
  define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1
  define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8=1
  define: __GCC_ATOMIC_BOOL_LOCK_FREE=2
  define: __GCC_ATOMIC_CHAR_LOCK_FREE=2
  define: __GCC_ATOMIC_CHAR16_T_LOCK_FREE=2
  define: __GCC_ATOMIC_CHAR32_T_LOCK_FREE=2
  define: __GCC_ATOMIC_WCHAR_T_LOCK_FREE=2
  define: __GCC_ATOMIC_SHORT_LOCK_FREE=2
  define: __GCC_ATOMIC_INT_LOCK_FREE=2
  define: __GCC_ATOMIC_LONG_LOCK_FREE=2
  define: __GCC_ATOMIC_LLONG_LOCK_FREE=2
  define: __GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1
  define: __GCC_ATOMIC_POINTER_LOCK_FREE=2
  define: __HAVE_SPECULATION_SAFE_VALUE=1
  define: __GCC_HAVE_DWARF2_CFI_ASM=1
  define: __PRAGMA_REDEFINE_EXTNAME=1
  define: __SSP_STRONG__=3
  define: __SIZEOF_INT128__=16
  define: __SIZEOF_WCHAR_T__=4
  define: __SIZEOF_WINT_T__=4
  define: __SIZEOF_PTRDIFF_T__=8
  define: __amd64=1
  define: __amd64__=1
  define: __x86_64=1
  define: __x86_64__=1
  define: __SIZEOF_FLOAT80__=16
  define: __SIZEOF_FLOAT128__=16
  define: __ATOMIC_HLE_ACQUIRE=65536
  define: __ATOMIC_HLE_RELEASE=131072
  define: __GCC_ASM_FLAG_OUTPUTS__=1
  define: __k8=1
  define: __k8__=1
  define: __code_model_small__=1
  define: __MMX__=1
  define: __SSE__=1
  define: __SSE2__=1
  define: __FXSR__=1
  define: __SSE_MATH__=1
  define: __SSE2_MATH__=1
  define: __SEG_FS=1
  define: __SEG_GS=1
  define: __gnu_linux__=1
  define: __linux=1
  define: __linux__=1
  define: __unix=1
  define: __unix__=1
  define: __ELF__=1
  define: __DECIMAL_BID_FORMAT__=1
  define: _STDC_PREDEF_H=1
  define: __STDC_IEC_559__=1
  define: __STDC_IEC_559_COMPLEX__=1
  define: __STDC_ISO_10646__=201706L
  define: __KERNEL__
  define: CC_HAVE_ASM_GOTO
  define: __LINUX_ARM_ARCH__=7
  define: KBUILD_BASENAME="ltc2983"
  define: KBUILD_MODNAME="ltc2983"
  preinclude: /home/nsa/work/linux/include/linux/kconfig.h
  preinclude: /home/nsa/work/linux/include/linux/compiler_types.h
  other: --gcc
  other: --gnu_version=90200
  stdver: c11
  intelliSenseMode: gcc-x64
Checking for syntax errors: file:///home/nsa/work/linux/drivers/iio/temperature/ltc2983.c
Queueing IntelliSense update for files in translation unit of: /home/nsa/work/linux/drivers/iio/temperature/ltc2983.c
cpptools/getCodeActions: 6526
cpptools/cpptools_finishUpdateSquiggles
Error squiggle count: 0
terminating child process: 3423359
Update IntelliSense time (sec): 1.56
cpptools/getCodeActions: 6527
idle loop: reparsing the active document
Checking for syntax errors: file:///home/nsa/work/linux/drivers/iio/temperature/ltc2983.c
Queueing IntelliSense update for files in translation unit of: /home/nsa/work/linux/drivers/iio/temperature/ltc2983.c
cpptools/cpptools_finishUpdateSquiggles
Error squiggle count: 0
Update IntelliSense time (sec): 0.304
cpptools/textEditorSelectionChange
cpptools/getCodeActions: 6528
  tag parsing file: /home/nsa/work/linux/include/drm/drm_hdcp.h
Database safe to open
cpptools/activeDocumentChange
cpptools/textEditorSelectionChange
cpptools/textEditorSelectionChange
cpptools/getCodeActions: 6529
idle loop: reparsing the active document
Checking for syntax errors: file:///home/nsa/work/linux/drivers/iio/temperature/ltc2983.c
Queueing IntelliSense update for files in translation unit of: /home/nsa/work/linux/drivers/iio/temperature/ltc2983.c
cpptools/cpptools_finishUpdateSquiggles
Error squiggle count: 0
Update IntelliSense time (sec): 0.312
textDocument/hover: 6530

This a log after rebooting coude...

log_after_reboot.txt

sean-mcmanus commented 4 years ago

The outlining appears stuck waiting for tag parsing. There's a database (cylinder) icon at the bottom in your status bar -- what does it show when you hover over that? Is that icon getting stuck? Is CPU usage infinite? That could mean our parser is stuck in an infinite loop.

What triggers this? Opening particular files? Your logs don't show a lot of tag parsing going on.

nunojsa commented 4 years ago

Unfortunately I cannot answer to your questions. I cannot say what trigger this. It just happens. There is no obvious trigger that I could identify so far...

Is that icon getting stuck? Is CPU usage infinite? That could mean our parser is stuck in an infinite loop.

Next time this happens I will take a look an see if one the CPUs is stuck with the extension...

I will also see what happens when I hover over the cylinder...

Hopefully I can find something helpful.

legendecas commented 4 years ago

I encountered a very similar issue. Also, I noticed the "tag parser initializing" icon on the vscode right bottom corner of the window is showing up, which is occurring to me too.

legendecas commented 4 years ago

For my case, the C/C++ extension output tab indicates Failed to read response from server: 22

sean-mcmanus commented 4 years ago

@legendecas The IntelliSense process is crashing. Can you attach a debugger to the Microsoft.VScode.CPP.IntelliSense.Msvc process to get a crash call stack? If it crashes on file open you could try cutting the code, attaching, and then pasting the code back so that it doesn't crash too early.

legendecas commented 4 years ago

@sean-mcmanus I noticed there is a lot of processes named Microsoft.VScode.CPP.IntelliSense.Msvc.darwin and Microsoft.VSCode.CPP.Extension.darwin while the extension doesn't work. Restarting VSCode these processes don't exit as expect. Then I tried to kill all of them and restarted VSCode the extension comes to alive again. So far I'm not able to reproduce the case anymore.

sean-mcmanus commented 4 years ago

@legendecas Yeah, dangling processes can cause the "tag parser initializing" issue (causing the Outline view to not work) because the other processes have a lock on the database -- we need to investigate why that is occurring and/or some way to detect/kill the processes. I'm not aware of dangling processes causing crashes though.

Bscout2011 commented 4 years ago

I have this issue as well. It started recently after I started using Git and pulling from a repository. Would Git have any effect on intellisense?

sean-mcmanus commented 4 years ago

@Bscout2011 If new files are pulled from Git, it can trigger more database work that could affect the Outline view. Are you able to get the Outline view to recover? Steps to try are to make sure no processes are dangling and possibly running "Reset IntelliSense Database" and Reload Window from the Command Palette.

nunojsa commented 4 years ago

So this happened for me again. It seems one of the extension processes is completing consuming one of my cpus...

image

So, as soon as I killed the sleeping process/thread, the outline came back again. I guess a way to trigger this is checking out to different branches. I have changed branches quite some times today and (coincidence?) I got to reproduce this... Not sure if the attached file can help but it is all the log I had on my console since I started code...

vscode_debug.txt

Hope this helps!

sean-mcmanus commented 4 years ago

@nunojsa We're tracking that issue with https://github.com/microsoft/vscode-cpptools/issues/2806. It should be fixed in our next release. Sounds like the same issue @Bscout2011 was hitting too.

nunojsa commented 4 years ago

So, is this supposed to be fixed with the latest release? The outline still breaks pretty easily when checking out to different branches. I guess, the bigger the project the easier this comes up.

image

One thing that I notice when this happens is that "tagging parsing file:" becomes really slow.... We can also see from the image that cpptools is consuming 100% on one CPU. Moreover the outline seen on the image does not match the opened file. It matches the file that was opened when the git checkout was done...

sean-mcmanus commented 4 years ago

@nunojsa What version are you using? The fix for CPU usage after switching branches is fixed in https://github.com/microsoft/vscode-cpptools/issues/2806 is fixed in 0.27.0-insiders.

nunojsa commented 4 years ago

@sean-mcmanus that is the version I'm running...

sean-mcmanus commented 4 years ago

We made some fixes, but there might be additional issues or it could be "by design". After the branch change, we will try to reparse files that have been recently modified. Are you using a single or multi root workspace? If the Outline doesn't match, it means we haven't re-tag parsed the opened file yet...does that eventually occur or does it get skipped? Does doing a save or edit save fix it? I recall we tried to give the current file higher parsing priority in the queue.

@Colengms Do you know anything more about this?

nunojsa commented 4 years ago

We made some fixes, but there might be additional issues or it could be "by design"

The outline just stops working, so I hope it's not "by design" :smile:

And actually now it seems to be worst than before. Even restarting code seems not to fix it. The outline does come up on the first file but as soon as I switch files it breaks.

On my setup I'm using compile_commands.json and when switching branches and in a project as big as Linux, a lot of files are refreshed and for sure the compile_commands.json won't be 100% accurate in the new branch (some files missing/some new). Can this be related with the problem?

The only way to fix the outline for me is to recompile the kernel and regenerate the compile_commands.json. Then, restart code and it seems to work again. I'm aware that I do need to regenerate the JSON file if I want my code navigation and preprocessor stuff to be properly handled. But I guess the outline (we should be able to gel all the symbols present in the current file) should still work even if I do not regenerate the JSON file.

Hope this extra info helps!

sean-mcmanus commented 4 years ago

Yeah, I see what's happening -- the didChange change tag parsing that is from switching branching is getting put in the front of the same queue as the open file parse request, so it could get stuck behind a lot of work. For files that aren't opened, they should get pushed to the back of the queue, so the open files take precedence. Does that sound like what you're seeing? Otherwise, I'll need more repro details.

sean-mcmanus commented 4 years ago

Actually, it's a little more complicated. Our parse_file queuing needs some re-working -- it runs into problems if too many files are changed, i.e. it can accumulate a backlog and some case it won't re-queue higher priority work if the work already exists in the queue, so if you open a file that is number 7000 in the queue, it'll have to parse those 7k files beforehand.

Looks like we regressed this around 6 moths ago when we added code that would re-parse changed files. The workaround is to Reload Window after switching branches.

sean-mcmanus commented 4 years ago

Wait...you said restarting VS Code didn't fix it? That is usually a sign that a dangling process has locked the database.

sean-mcmanus commented 4 years ago

I figured out an easy way to fix the issue where fileChanged events would block out didOpen/didSave work for the Outline view to update.

nunojsa commented 4 years ago

I figured out an easy way to fix the issue where fileChanged events would block out didOpen/didSave work for the Outline view to update.

Happy to hear that :+1:

I figured out an easy way to fix the issue where fileChanged events would block out didOpen/didSave work for the Outline view to update.

So, yes. After reboot, the outline comes for the opened file (on the saved session) and it does not work for any other file (apparently). It might be a timing thing and Im not waiting enough time for the outline to come up (in that case it's a long time for an outline).

Either way, I will wait for the next release and hopefully this is fixed!

sean-mcmanus commented 4 years ago

Our fix is available with https://github.com/microsoft/vscode-cpptools/releases/tag/0.27.0-insiders3 .

You may still hit issue https://github.com/microsoft/vscode-cpptools/issues/5128 though.