vscode-cpptools icon indicating copy to clipboard operation
vscode-cpptools copied to clipboard

C++ extension stops working after a few minutes of using it

Open albertcaldas84 opened this issue 2 years ago • 40 comments

Environment

  • OS and Version: MacOS Monterey 12.3
  • VS Code Version: 1.70.2
  • C/C++ Extension Version: 1.11.5
  • Other extensions you installed (and if the issue persists after disabling them): None, I have all of them disabled.
  • If using SSH remote, specify OS of remote machine: No
  • A clear and concise description of what the bug is, including information about the workspace (i.e. is the workspace a single project or multiple projects, size of the project, etc).

It's a multi-project big workspace.

Bug Summary and Steps to Reproduce

Bug Summary:

After using the extension for 5/10 minutes, intellisense and other features like "switch cpp/header" or even the command "Edit Configurations" completely stop working. It seems as if the whole extensions stops. I cannot give you the cpp diagnostics, because this is not working either.

Steps to reproduce: I'm not sure, I just open VSCode and after a few minutes the extension stops.

Expected behavior

No response

Code sample and Logs

{
    "configurations": [
        {
            "name": "Mac",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "macFrameworkPath": [
                "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks"
            ],
            "compilerPath": "/usr/bin/clang",
            "cStandard": "c17",
            "cppStandard": "c++17",
            "intelliSenseMode": "macos-clang-arm64",
            "configurationProvider": "ms-vscode.cmake-tools"
        }
    ],
    "version": 4
}


Diagnostics:
-------- Diagnostics - 8/23/2022, 3:42:22 PM
Version: 1.11.5
Current Configuration:
{
    "name": "Mac",
    "includePath": [
        "${workspaceFolder}/**"
    ],
    "defines": [],
    "macFrameworkPath": [
        "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks"
    ],
    "compilerPath": "/usr/bin/clang",
    "cStandard": "c17",
    "cppStandard": "c++17",
    "intelliSenseMode": "macos-clang-arm64",
    "configurationProvider": "ms-vscode.cmake-tools",
    "compilerPathIsExplicit": true,
    "cStandardIsExplicit": true,
    "cppStandardIsExplicit": true,
    "intelliSenseModeIsExplicit": true,
    "mergeConfigurations": false,
    "browse": {
        "path": [
            "${workspaceFolder}/**"
        ],
        "limitSymbolsToIncludedHeaders": true
    }
}
Custom browse configuration: 
{
    "browsePath": [
        ...
    ],
    "compilerPath": "/usr/bin/clang++",
    "compilerArgs": [],
    "compilerFragments": [
        "-g \t\t\t-g3 -fstack-protector -fstack-protector-strong \t\t\t -m64 -Wno-pragma-pack -fasm-blocks \t\t\t\t\t\t\t -Wall   -Wno-deprecated-declarations -Wno-unused-function -Wno-unused-parameter -Wno-sign-compare -Wno-misleading-indentation -Wno-potentially-evaluated-expression -Wno-unknown-warning-option -Wpointer-bool-conversion -Wno-misleading-indentation -Wno-pragma-pack -Woverloaded-virtual -Werror=vla  -Winconsistent-missing-override -DNUO_DEBUG   -DNUO_RUNTIME_DEBUG -arch arm64 -Xarch_arm64 -isysroot/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/ -mmacosx-version-min=11.3   -w",
        "-std=c++17"
    ]
}
Custom configurations:
[ /Users/albert.caldas/Development/Projects/Evil03_Trunk/Development/Trunk/Libraries/NuoBase/FontHelpers.cpp ]
{
    "includePath": [
        "/users/albert.caldas/development/projects/evil03_trunk/development/trunk",
        "/users/albert.caldas/development/projects/evil03_trunk/development/trunk/libraries",
        "/users/albert.caldas/development/projects/evil03_trunk/development/trunk/external/minini/version_1.0.05112015"
    ],
    "defines": [
        "HAVE_UNISTD_H",
        "NUO_CXX_STD=2017",
        "NUO_PLATFORM_MACOSX",
        "NUO_REGION_AVAILABILITY_CHINA=1",
        "NUO_REGION_AVAILABILITY_RESTOFWORLD=1",
        "NUO_RETAIL=1",
        "NUO_STOREFRONT_AMAZON=0",
        "NUO_STOREFRONT_APPLEAPPSTORE=0",
        "NUO_STOREFRONT_DISCORD=0",
        "NUO_STOREFRONT_EPIC=0",
        "NUO_STOREFRONT_GIANT=0",
        "NUO_STOREFRONT_GOOGLE=0",
        "NUO_STOREFRONT_NETEASE=0",
        "NUO_STOREFRONT_NETEASE_NPL=0",
        "NUO_STOREFRONT_NEUNION=0",
        "NUO_STOREFRONT_NONE=1",
        "NUO_STOREFRONT_STEAM=0",
        "NUO_STOREFRONT_STRIPE=0"
    ],
    "compilerPath": "/usr/bin/clang++",
    "compilerArgs": [],
    "compilerFragments": [
        "-g \t\t\t-g3 -fstack-protector -fstack-protector-strong \t\t\t -m64 -Wno-pragma-pack -fasm-blocks \t\t\t\t\t\t\t -Wall   -Wno-deprecated-declarations -Wno-unused-function -Wno-unused-parameter -Wno-sign-compare -Wno-misleading-indentation -Wno-potentially-evaluated-expression -Wno-unknown-warning-option -Wpointer-bool-conversion -Wno-misleading-indentation -Wno-pragma-pack -Woverloaded-virtual -Werror=vla  -Winconsistent-missing-override -DNUO_DEBUG   -DNUO_RUNTIME_DEBUG -arch arm64 -Xarch_arm64 -isysroot/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/ -mmacosx-version-min=11.3",
        "-std=c++17"
    ]
}
Translation Unit Mappings:
[ /Users/albert.caldas/Development/Projects/Evil03_Trunk/Development/Trunk/Libraries/NuoBase/FontHelpers.cpp ]:
    /Users/albert.caldas/Development/Projects/Evil03_Trunk/Development/Trunk/Libraries/NuoBase/FontHelpers.cpp
    /Users/albert.caldas/Development/Projects/Evil03_Trunk/Development/Trunk/Libraries/NuoBase/FontHelpers.h *
Translation Unit Configurations:
[ /Users/albert.caldas/Development/Projects/Evil03_Trunk/Development/Trunk/Libraries/NuoBase/FontHelpers.cpp ]:
    Process ID: 25407
    Memory Usage: 186 MB
    Compiler Path: /usr/bin/clang++
    Includes:
        /Users/albert.caldas/Development/Projects/Evil03_Trunk/Development/Trunk
        /Users/albert.caldas/Development/Projects/Evil03_Trunk/Development/Trunk/Libraries
        /Users/albert.caldas/Development/Projects/Evil03_Trunk/Development/Trunk/External/MinIni/Version_1.0.05112015
        /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1
        /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/13.0.0/include
        /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
        /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
    Frameworks:
        /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks
    Defines:
        HAVE_UNISTD_H
        NUO_CXX_STD=2017
        NUO_PLATFORM_MACOSX
        NUO_REGION_AVAILABILITY_CHINA=1
        NUO_REGION_AVAILABILITY_RESTOFWORLD=1
        NUO_RETAIL=1
        NUO_STOREFRONT_AMAZON=0
        NUO_STOREFRONT_APPLEAPPSTORE=0
        NUO_STOREFRONT_DISCORD=0
        NUO_STOREFRONT_EPIC=0
        NUO_STOREFRONT_GIANT=0
        NUO_STOREFRONT_GOOGLE=0
        NUO_STOREFRONT_NETEASE=0
        NUO_STOREFRONT_NETEASE_NPL=0
        NUO_STOREFRONT_NEUNION=0
        NUO_STOREFRONT_NONE=1
        NUO_STOREFRONT_STEAM=0
        NUO_STOREFRONT_STRIPE=0
        NUO_DEBUG
        NUO_RUNTIME_DEBUG
    Standard Version: c++17
    IntelliSense Mode: macos-clang-arm64
    Other Flags:
        --clang
        --clang_version=110000
Total Memory Usage: 186 MB

------- Workspace parsing diagnostics -------
Number of files discovered (not excluded): 56658
Number of files parsed: 2546

Screenshots

No response

Additional context

No response

albertcaldas84 avatar Aug 23 '22 14:08 albertcaldas84

Hi @albertcaldas84 . Could you try setting "C_Cpp.loggingLevel": "Debug", and providing the output of the C/C++ output channel leading up to the repro? I suspect one of the last things it logged may provide some clues as to what went wrong.

Also, can you check whether the cpptools process is running when this occurs, and whether or not it's still busily executing? If so, perhaps you could connect the debugger and capture the stacks?

Colengms avatar Aug 23 '22 18:08 Colengms

The cpptools process doesn't consume cpu/memory, but when attaching to its process it's not stopped. Resetting the intellisense database sometimes solves it sometimes not, after parsing the whole workspace of course.

albertcaldas84 avatar Aug 25 '22 09:08 albertcaldas84

loggingLevel_Debug2.txt Another one

albertcaldas84 avatar Aug 25 '22 10:08 albertcaldas84

loggingLevel_debug3.txt in this case, the intellisense stopped soon after finishing the database intellisense update.

albertcaldas84 avatar Aug 25 '22 11:08 albertcaldas84

It looks like there could be some issue with the IntelliSense process creation. For the 1st 2 logs I see "Queueing IntelliSense update, but not finish response. For the 3rd, it shows it sends multiple IntelliSense arg updates, but then it's getting shutdown for some reason. I'm not sure if our logging is sufficient (it may not be).

sean-mcmanus avatar Aug 25 '22 19:08 sean-mcmanus

If you're able to attach a debugger to the cpptools process to get call stacks when it's in a stuck state that might help (https://github.com/microsoft/vscode-cpptools/wiki/Attaching-debugger-to-cpptools-or-cpptools%E2%80%90srv).

sean-mcmanus avatar Aug 25 '22 19:08 sean-mcmanus

So I'm attaching to a cpp-srv process. However, I often see two or more cpp-srv processes...

albertcaldas84 avatar Aug 26 '22 06:08 albertcaldas84

It has been my daily headache for a month, but it happened only once today. All morning went fluent, but this afternoon it crashed as soon as I started debugging, but not anymore. I'll be paying attention to all actions I do...

albertcaldas84 avatar Aug 26 '22 14:08 albertcaldas84

Hi @albertcaldas84 . Does this issue occur for you with a simple project, or does it only happen with a specific project? If this only occurs with a specific project, it's possible certain source code could be exposing a parser bug. If that's the case, an isolated repro that you could share with us could help us investigate further and validate a fix.

Colengms avatar Aug 26 '22 18:08 Colengms

@albertcaldas84 We spawn one cpptools-srv process per C/C++ file open -- can you just open the 1 repro file? Also, after attaching you should use the break button in the UI to break into the debugger to get the call stack.

sean-mcmanus avatar Aug 26 '22 19:08 sean-mcmanus

I'm also experiencing this issue. Again, it's in a large (proprietary) multi-project repository. It seems to have become a larger issue in 1.70.2.

A quick analysis shows that cpptools is spinning...

jsimonlane avatar Aug 29 '22 17:08 jsimonlane

@jsimonlane What version of the C/C++ extension? What OS? Does the CPU processing ever end? With C_Cpp.loggingLevel set to "Debug" what logging output is shown in the C/C++ window? Are you able to get a call stack for cpptools?: https://github.com/microsoft/vscode-cpptools/wiki/Attaching-debugger-to-cpptools-or-cpptools%E2%80%90srv

sean-mcmanus avatar Aug 29 '22 17:08 sean-mcmanus

@sean-mcmanus (picking up from @jsimonlane's report with the same behavior)

C/C++ Extension v1.11.5 C/C++ Extension Pack v1.2.0 Linux (remote VS Code over SSH from a Windows VS Code instance)

The Debug logs don't seem to show anything particularly interesting, just regular logs when jumping to token definitions:

idle loop: reparsing the active document
Checking for syntax errors: /home/justinw/path/to/sources/sor_main.cc
Queueing IntelliSense update for files in translation unit of: /home/justinw/path/to/sources/sor_main.cc
textDocument/hover: /home/justinw/path/to/sources/sor_main.cc (id: 789)
Request canceled: 789
cpptools/finishUpdateSquiggles
Error squiggle count: 0
textDocument/definition: /home/justinw/path/to/sources/sor_main.cc (id: 790)
cpptools/getSemanticTokens: /home/justinw/path/to/sources/sor_main.cc (id: 791)
cpptools/getFoldingRanges: /home/justinw/path/to/sources/sor_main.cc (id: 792)
cpptools/getCodeActions: path/to/dependencies/dist/include/tslog.h (id: 793)
textDocument/didOpen: path/to/dependencies/dist/include/tslog.h

Here's the ps aux entry for a spinning cpptools-srv process:

justinw  1030006 75.6  0.7 5229968 432940 ?      Sl   18:35  11:40 /home/justinw/.vscode-server/extensions/ms-vscode.cpptools-1.11.5-linux-x64/bin/cpptools-srv 872753 {D26E0D8F-EB4F-44AD-9FDB-39007E7D5A24}

And here's a call stack for that cpptools-srv proccess, assuming I pulled it correctly:


Thread 35 (LWP 1040762):
#0  0x00000000007ec865 in void std::__introsort_loop<__gnu_cxx::__normal_iterator<char const**, std::vector<char const*, std::allocator<char const*> > >, long, __gnu_cxx::__ops::_Iter_less_iter>(__gnu_cxx::__normal_iterator<char const**, std::vector<char const*, std::allocator<char const*> > >, __gnu_cxx::__normal_iterator<char const**, std::vector<char const*, std::allocator<char const*> > >, long, __gnu_cxx::__ops::_Iter_less_iter) ()
#1  0x0000000000775287 in sqlite3Insert ()
#2  0x00007fe878243318 in ?? ()
#3  0x0000000000000000 in ?? ()

Thread 13 (LWP 1030018):
#0  0x00007fe879c4929c in ?? ()
#1  0x0000000000000000 in ?? ()

Thread 12 (LWP 1030017):
#0  0x00007fe879c4600c in ?? ()
#1  0x00007fe84401a350 in ?? ()
#2  0x0000000000000000 in ?? ()

Thread 11 (LWP 1030016):
#0  0x00007fe879c4600c in ?? ()
#1  0x0000000000000014 in ?? ()
#2  0x000000000000005a in ?? ()
#3  0x00007fe870ff8e20 in ?? ()
#4  0x0000000000000000 in ?? ()

Thread 10 (LWP 1030015):
#0  0x00007fe879c4600c in ?? ()
#1  0x0000000000000014 in ?? ()
#2  0x0000000000000059 in ?? ()
#3  0x00007fe8717f9e20 in ?? ()
#4  0x0000000000000000 in ?? ()

Thread 9 (LWP 1030014):
#0  0x00007fe879b7121f in ?? ()
#1  0x00000000ffffffff in ?? ()
#2  0x0000000000000000 in ?? ()

Thread 8 (LWP 1030013):
#0  0x00007fe879c4635b in ?? ()
#1  0x000000000000077c in ?? ()
#2  0x0000000000000000 in ?? ()

Thread 7 (LWP 1030012):
#0  0x00007fe879c4600c in ?? ()
#1  0x0000000000000003 in ?? ()
#2  0x0000000000000002 in ?? ()
#3  0x00007fe872ffccf0 in ?? ()
#4  0x0000000000000000 in ?? ()

Thread 6 (LWP 1030011):
#0  0x00007fe879c4600c in ?? ()
#1  0x0000000000000003 in ?? ()
#2  0x0000000000000005 in ?? ()
#3  0x00007fe8737fdcf0 in ?? ()
#4  0x0000000000000000 in ?? ()

Thread 5 (LWP 1030010):
#0  0x00007fe879c4600c in ?? ()
#1  0x0000000000000003 in ?? ()
#2  0x0000000000000006 in ?? ()
#3  0x00007fe873ffecf0 in ?? ()
#4  0x0000000000000000 in ?? ()

Thread 4 (LWP 1030009):
#0  0x00007fe879c4600c in ?? ()
#1  0x0000000000000003 in ?? ()
#2  0x0000000000000003 in ?? ()
#3  0x00007fe878a46cf0 in ?? ()
#4  0x0000000000000000 in ?? ()

Thread 3 (LWP 1030008):
#0  0x00007fe879c4600c in ?? ()
#1  0x0000000000000003 in ?? ()
#2  0x0000000000000001 in ?? ()
#3  0x00007fe879247cf0 in ?? ()
#4  0x0000000000000000 in ?? ()

Thread 2 (LWP 1030007):
#0  0x00007fe879c4600c in ?? ()
#1  0x0000000000000003 in ?? ()
#2  0x0000000000000000 in ?? ()

Thread 1 (LWP 1030006):
#0  0x00007fe879c4635b in ?? ()
#1  0x00000000000003bc in ?? ()
#2  0x0000000000000000 in ?? ()

justin39 avatar Aug 29 '22 18:08 justin39

Yes, Justin will take point from me here.

As one more point of information, the issue also seems to be present in 1.70.1; however, it seems a bit better there.

jsimonlane avatar Aug 29 '22 20:08 jsimonlane

@justin39 The earlier post said cpptools is spinning, but your post says cpptools-srv has the issue -- which process is it? Your logging indicates a file was opened and then it seems like it's stuck with that in cpptools and there is no "sending compilation args for" which would indicate a cpptools-srv was launched for it. Your call stack is invalid. You have set your "program" correctly in the launch.json -- it appears to not be pulling in the correct symbols...and it seems like you should be attaching to cpptools instead. Also, the version of VS Code like 1.70.1 shouldn't matter. You may want to try 1.12.2 (pre-release) which is planning to ship as 1.12.3 (release) tomorrow.

sean-mcmanus avatar Aug 30 '22 00:08 sean-mcmanus

@sean-mcmanus cpptools-srv is the culprit as far as high CPU usage goes - not 100% clear on the relationship between the two processes, though.

there is no "sending compilation args for"

That appeared higher up in the logs, my bad! Should have captured that.

I can try attaching to cpptools instead - will try that shortly.

justin39 avatar Aug 30 '22 01:08 justin39


Thread 25 (Thread 0x7fa2de7fc700 (LWP 932576)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x7ffc5c7b3e44) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x7ffc5c7b3df0, cond=0x7ffc5c7b3e18) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x7ffc5c7b3e18, mutex=0x7ffc5c7b3df0) at pthread_cond_wait.c:655
#3  0x0000000000e9eb9c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x000000000057a755 in vscode::message_deque<int, false>::pop_impl(bool) ()
#5  0x0000000000540a44 in std::_Function_handler<void (), vscode::message_handler::main_loop()::$_7>::_M_invoke(std::_Any_data const&) ()
#6  0x0000000000e6dc9a in msvc::thread_helper_t::thread_entry(void*) ()
#7  0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#8  0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 24 (Thread 0x7fa2deffd700 (LWP 932575)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x7ffc5c7b440c) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x3259310, cond=0x7ffc5c7b43e0) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x7ffc5c7b43e0, mutex=0x3259310) at pthread_cond_wait.c:655
#3  0x0000000000e9eb9c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x00000000004bd888 in void std::_V2::condition_variable_any::wait<std::unique_lock<std::mutex> >(std::unique_lock<std::mutex>&) ()
#5  0x000000000057c07b in msvc::event_t::wait_and_reset() ()
#6  0x000000000054163b in std::_Function_handler<void (), vscode::message_handler::main_loop()::$_14>::_M_invoke(std::_Any_data const&) ()
#7  0x0000000000e6dc9a in msvc::thread_helper_t::thread_entry(void*) ()
#8  0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#9  0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 23 (Thread 0x7fa2df7fe700 (LWP 932574)):
#0  futex_abstimed_wait_cancelable (private=0, abstime=0x7fa2df7fdde8, expected=0, futex_word=0x7ffc5c7b414c) at ../sysdeps/unix/sysv/linux/futex-internal.h:205
#1  __pthread_cond_wait_common (abstime=0x7fa2df7fdde8, mutex=0x7ffc5c7b40f8, cond=0x7ffc5c7b4120) at pthread_cond_wait.c:539
#2  __pthread_cond_timedwait (cond=0x7ffc5c7b4120, mutex=0x7ffc5c7b40f8, abstime=0x7fa2df7fdde8) at pthread_cond_wait.c:667
#3  0x000000000057bfe2 in bool std::condition_variable::wait_for<long, std::ratio<1l, 1000l>, vscode::message_deque<int, false>::pop_impl(bool, int&, std::chrono::duration<long, std::ratio<1l, 1000l> >)::{lambda()#1}>(std::unique_lock<std::mutex>&, std::chrono::duration<long, std::ratio<1l, 1000l> > const&, vscode::message_deque<int, false>::pop_impl(bool, int&, std::chrono::duration<long, std::ratio<1l, 1000l> >)::{lambda()#1}) ()
#4  0x000000000057bcd8 in vscode::message_deque<int, false>::pop_impl(bool, int&, std::chrono::duration<long, std::ratio<1l, 1000l> >) ()
#5  0x0000000000541542 in std::_Function_handler<void (), vscode::message_handler::main_loop()::$_13>::_M_invoke(std::_Any_data const&) ()
#6  0x0000000000e6dc9a in msvc::thread_helper_t::thread_entry(void*) ()
#7  0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#8  0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 22 (Thread 0x7fa2ddffb700 (LWP 932573)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x7ffc5c7b408c) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x7ffc5c7b4038, cond=0x7ffc5c7b4060) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x7ffc5c7b4060, mutex=0x7ffc5c7b4038) at pthread_cond_wait.c:655
#3  0x0000000000e9eb9c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x000000000057b225 in vscode::message_deque<vscode::vscode_client_message, false>::pop_impl(bool) ()
#5  0x00000000005413fc in std::_Function_handler<void (), vscode::message_handler::main_loop()::$_12>::_M_invoke(std::_Any_data const&) ()
#6  0x0000000000e6dc9a in msvc::thread_helper_t::thread_entry(void*) ()
#7  0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#8  0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 21 (Thread 0x7fa2dd7fa700 (LWP 932572)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x7ffc5c7b3fc8) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x7ffc5c7b3f78, cond=0x7ffc5c7b3fa0) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x7ffc5c7b3fa0, mutex=0x7ffc5c7b3f78) at pthread_cond_wait.c:655
#3  0x0000000000e9eb9c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x000000000057b485 in vscode::message_deque<vscode::message_handler::parse_file_entry, true>::pop_impl(bool) ()
#5  0x0000000000540e79 in std::_Function_handler<void (), vscode::message_handler::main_loop()::$_11>::_M_invoke(std::_Any_data const&) ()
#6  0x0000000000e6dc9a in msvc::thread_helper_t::thread_entry(void*) ()
#7  0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#8  0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 20 (Thread 0x7fa2dcff9700 (LWP 932571)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x7ffc5c7b3cc4) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x7ffc5c7b3c70, cond=0x7ffc5c7b3c98) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x7ffc5c7b3c98, mutex=0x7ffc5c7b3c70) at pthread_cond_wait.c:655
#3  0x0000000000e9eb9c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x000000000057b225 in vscode::message_deque<vscode::vscode_client_message, false>::pop_impl(bool) ()
#5  0x0000000000540d87 in std::_Function_handler<void (), vscode::message_handler::main_loop()::$_10>::_M_invoke(std::_Any_data const&) ()
#6  0x0000000000e6dc9a in msvc::thread_helper_t::thread_entry(void*) ()
#7  0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#8  0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 19 (Thread 0x7fa2dffff700 (LWP 932570)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x7ffc5c7b3c04) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x7ffc5c7b3bb0, cond=0x7ffc5c7b3bd8) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x7ffc5c7b3bd8, mutex=0x7ffc5c7b3bb0) at pthread_cond_wait.c:655
#3  0x0000000000e9eb9c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x000000000057b225 in vscode::message_deque<vscode::vscode_client_message, false>::pop_impl(bool) ()
#5  0x0000000000540cb7 in std::_Function_handler<void (), vscode::message_handler::main_loop()::$_9>::_M_invoke(std::_Any_data const&) ()
#6  0x0000000000e6dc9a in msvc::thread_helper_t::thread_entry(void*) ()
#7  0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#8  0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 18 (Thread 0x7fa2d67fc700 (LWP 872832)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x16f76b0 <cond+40>) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x16f7660 <mutex>, cond=0x16f7688 <cond>) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x16f7688 <cond>, mutex=0x16f7660 <mutex>) at pthread_cond_wait.c:655
#3  0x0000000000e88276 in uv_cond_wait ()
#4  0x0000000000e7ace6 in worker ()
#5  0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#6  0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 17 (Thread 0x7fa2d6ffd700 (LWP 872831)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x16f76b0 <cond+40>) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x16f7660 <mutex>, cond=0x16f7688 <cond>) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x16f7688 <cond>, mutex=0x16f7660 <mutex>) at pthread_cond_wait.c:655
#3  0x0000000000e88276 in uv_cond_wait ()
#4  0x0000000000e7ace6 in worker ()
#5  0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#6  0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 16 (Thread 0x7fa2d77fe700 (LWP 872830)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x16f76b0 <cond+40>) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x16f7660 <mutex>, cond=0x16f7688 <cond>) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x16f7688 <cond>, mutex=0x16f7660 <mutex>) at pthread_cond_wait.c:655
#3  0x0000000000e88276 in uv_cond_wait ()
#4  0x0000000000e7ace6 in worker ()
#5  0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#6  0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 15 (Thread 0x7fa2d7fff700 (LWP 872829)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x16f76b0 <cond+40>) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x16f7660 <mutex>, cond=0x16f7688 <cond>) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x16f7688 <cond>, mutex=0x16f7660 <mutex>) at pthread_cond_wait.c:655
#3  0x0000000000e88276 in uv_cond_wait ()
#4  0x0000000000e7ace6 in worker ()
#5  0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#6  0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 14 (Thread 0x7fa300ff9700 (LWP 872766)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x7ffc5c7b3d80) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x7ffc5c7b3d30, cond=0x7ffc5c7b3d58) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x7ffc5c7b3d58, mutex=0x7ffc5c7b3d30) at pthread_cond_wait.c:655
#3  0x0000000000e9eb9c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x000000000057a1d5 in vscode::message_deque<vscode::browse_engine_update_action, false>::pop_impl(bool) ()
#5  0x00000000005404a9 in std::_Function_handler<void (), vscode::message_handler::main_loop()::$_6>::_M_invoke(std::_Any_data const&) ()
#6  0x0000000000e6dc9a in msvc::thread_helper_t::thread_entry(void*) ()
#7  0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#8  0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 13 (Thread 0x7fa3017fa700 (LWP 872765)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x7ffc5c7b3f04) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x7ffc5c7b3eb0, cond=0x7ffc5c7b3ed8) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x7ffc5c7b3ed8, mutex=0x7ffc5c7b3eb0) at pthread_cond_wait.c:655
#3  0x0000000000e9eb9c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x000000000057aa27 in vscode::message_deque<vscode::folding_ranges_params, false>::pop_impl(bool) ()
#5  0x0000000000540aef in std::_Function_handler<void (), vscode::message_handler::main_loop()::$_8>::_M_invoke(std::_Any_data const&) ()
#6  0x0000000000e6dc9a in msvc::thread_helper_t::thread_entry(void*) ()
#7  0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#8  0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 12 (Thread 0x7fa301ffb700 (LWP 872764)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x7ffc5c7b3b40) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x7ffc5c7b3af0, cond=0x7ffc5c7b3b18) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x7ffc5c7b3b18, mutex=0x7ffc5c7b3af0) at pthread_cond_wait.c:655
#3  0x0000000000e9eb9c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x0000000000579bf5 in vscode::message_deque<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false>::pop_impl(bool) ()
#5  0x00000000005403cd in msvc::thread_t::invoker_t<vscode::message_handler::main_loop()::$_1>::invoke() ()
#6  0x0000000000e6dc9a in msvc::thread_helper_t::thread_entry(void*) ()
#7  0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#8  0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 11 (Thread 0x7fa3027fc700 (LWP 872763)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x7fa3027fa930) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x7fa2e57fa200, cond=0x7fa3027fa908) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x7fa3027fa908, mutex=0x7fa2e57fa200) at pthread_cond_wait.c:655
#3  0x0000000000e9eb9c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x00000000004bd888 in void std::_V2::condition_variable_any::wait<std::unique_lock<std::mutex> >(std::unique_lock<std::mutex>&) ()
#5  0x000000000055329b in msvc::event_t::wait() ()
#6  0x0000000000e3dc49 in msvc::common_channel_t::wait_for_response(msvc::event_t&) ()
#7  0x0000000000e3d539 in msvc::common_channel_t::send_message(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) ()
#8  0x00000000005bb6d6 in cpp_intellisense::server_proxy::handle_contains(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool&) ()
#9  0x00000000005c8182 in intellisense_client::contains_source(char const*) ()
#10 0x00000000005e9541 in intellisense_client_factory::try_to_fetch(char const*, bool, bool) ()
#11 0x00000000004d9d02 in (anonymous namespace)::includes_for_file(vscode::file_uri const&) ()
#12 0x00000000004db38e in vscode::include_auto_complete::cache::populate(vscode::file_uri const&) ()
#13 0x00000000004f98f1 in vscode::message_handler::textDocument_didOpen(vscode::DidOpenTextDocumentParams) ()
#14 0x00000000004e7c41 in vscode::message_handler::dispatch(vscode::vscode_client_message&&, vscode::vscode_server_message&, vscode::message_handler::msg_proc_thread_token) ()
#15 0x00000000004e6b81 in vscode::message_handler::handle_message(vscode::vscode_client_message&&, vscode::message_handler::msg_proc_thread_token) ()
#16 0x000000000053fa7e in msvc::thread_t::invoker_t<vscode::message_handler::main_loop()::$_0>::invoke() ()
#17 0x0000000000e6dc9a in msvc::thread_helper_t::thread_entry(void*) ()
#18 0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#19 0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 10 (Thread 0x7fa302ffd700 (LWP 872762)):
#0  0x00007fa30b4b221f in epoll_wait (epfd=9, events=0x7fa302ff9dd0, maxevents=1024, timeout=-1) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
#1  0x0000000000e7f7ca in uv.io_poll ()
#2  0x0000000000e7da68 in uv_run ()
#3  0x0000000000e46a0b in msvc::loop_t::run_loop() ()
#4  0x0000000000e4c295 in void std::__invoke_impl<void, void (*)(std::shared_ptr<msvc::loop_t>), std::shared_ptr<msvc::loop_t> >(std::__invoke_other, void (*&&)(std::shared_ptr<msvc::loop_t>), std::shared_ptr<msvc::loop_t>&&) ()
#5  0x0000000000e6dc9a in msvc::thread_helper_t::thread_entry(void*) ()
#6  0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#7  0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 9 (Thread 0x7fa3037fe700 (LWP 872761)):
#0  futex_abstimed_wait_cancelable (private=0, abstime=0x7fa3037fdde0, expected=0, futex_word=0x14baf68 <vscode::g_thread_pool+304>) at ../sysdeps/unix/sysv/linux/futex-internal.h:205
#1  __pthread_cond_wait_common (abstime=0x7fa3037fdde0, mutex=0x323c110, cond=0x14baf40 <vscode::g_thread_pool+264>) at pthread_cond_wait.c:539
#2  __pthread_cond_timedwait (cond=0x14baf40 <vscode::g_thread_pool+264>, mutex=0x323c110, abstime=0x7fa3037fdde0) at pthread_cond_wait.c:667
#3  0x00000000004bdcdd in std::cv_status std::_V2::condition_variable_any::wait_until<std::unique_lock<std::mutex>, std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >(std::unique_lock<std::mutex>&, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&) ()
#4  0x0000000000625106 in unsigned int msvc::bitset_event_t::wait_for_any_set<long, std::ratio<1l, 1000l> >(std::chrono::duration<long, std::ratio<1l, 1000l> > const&, unsigned int) ()
#5  0x0000000000624190 in msvc::thread_t::invoker_t<vscode::thread_pool::thread_pool()::$_0>::invoke() ()
#6  0x0000000000e6dc9a in msvc::thread_helper_t::thread_entry(void*) ()
#7  0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#8  0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 8 (Thread 0x7fa303fff700 (LWP 872760)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x14baf68 <vscode::g_thread_pool+304>) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x323c110, cond=0x14baf40 <vscode::g_thread_pool+264>) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x14baf40 <vscode::g_thread_pool+264>, mutex=0x323c110) at pthread_cond_wait.c:655
#3  0x0000000000e9eb9c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x00000000004bd888 in void std::_V2::condition_variable_any::wait<std::unique_lock<std::mutex> >(std::unique_lock<std::mutex>&) ()
#5  0x0000000000624753 in msvc::bitset_event_t::wait_any_set(unsigned int) ()
#6  0x0000000000623015 in vscode::thread_pool::do_work(unsigned long) ()
#7  0x0000000000e6dc9a in msvc::thread_helper_t::thread_entry(void*) ()
#8  0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#9  0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 7 (Thread 0x7fa308b85700 (LWP 872759)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x14baf68 <vscode::g_thread_pool+304>) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x323c110, cond=0x14baf40 <vscode::g_thread_pool+264>) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x14baf40 <vscode::g_thread_pool+264>, mutex=0x323c110) at pthread_cond_wait.c:655
#3  0x0000000000e9eb9c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x00000000004bd888 in void std::_V2::condition_variable_any::wait<std::unique_lock<std::mutex> >(std::unique_lock<std::mutex>&) ()
#5  0x0000000000624753 in msvc::bitset_event_t::wait_any_set(unsigned int) ()
#6  0x0000000000623015 in vscode::thread_pool::do_work(unsigned long) ()
#7  0x0000000000e6dc9a in msvc::thread_helper_t::thread_entry(void*) ()
#8  0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#9  0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 6 (Thread 0x7fa309386700 (LWP 872758)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x14baf68 <vscode::g_thread_pool+304>) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x323c110, cond=0x14baf40 <vscode::g_thread_pool+264>) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x14baf40 <vscode::g_thread_pool+264>, mutex=0x323c110) at pthread_cond_wait.c:655
#3  0x0000000000e9eb9c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x00000000004bd888 in void std::_V2::condition_variable_any::wait<std::unique_lock<std::mutex> >(std::unique_lock<std::mutex>&) ()
#5  0x0000000000624753 in msvc::bitset_event_t::wait_any_set(unsigned int) ()
#6  0x0000000000623015 in vscode::thread_pool::do_work(unsigned long) ()
#7  0x0000000000e6dc9a in msvc::thread_helper_t::thread_entry(void*) ()
#8  0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#9  0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 5 (Thread 0x7fa309b87700 (LWP 872757)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x7fa309b86b50) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x7fa2e57e7a70, cond=0x7fa309b86b28) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x7fa309b86b28, mutex=0x7fa2e57e7a70) at pthread_cond_wait.c:655
#3  0x0000000000e9eb9c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x00000000004bd888 in void std::_V2::condition_variable_any::wait<std::unique_lock<std::mutex> >(std::unique_lock<std::mutex>&) ()
#5  0x000000000055329b in msvc::event_t::wait() ()
#6  0x0000000000e3dc49 in msvc::common_channel_t::wait_for_response(msvc::event_t&) ()
#7  0x0000000000e3d539 in msvc::common_channel_t::send_message(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) ()
#8  0x00000000005bc395 in cpp_intellisense::server_proxy::handle_update_intellisense(cpp_intellisense::UpdateIntelliSenseRequest const&, cpp_intellisense::UpdateIntelliSenseResponse&) ()
#9  0x00000000005cdd00 in intellisense_client::update_intellisense(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool, reparse, update_intellisense_options) ()
#10 0x00000000005cfb2e in std::_Function_handler<cpp_intellisense::UpdateIntelliSenseResponse (), intellisense_client::queue_update_intellisense(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool, reparse, update_intellisense_options, std::function<void (cpp_intellisense::UpdateIntelliSenseResponse&&)>&&, std::function<void ()>&&)::$_1>::_M_invoke(std::_Any_data const&) ()
#11 0x00000000005e2ae0 in version_work_queue<cpp_intellisense::UpdateIntelliSenseResponse, 250>::worker_proc() ()
#12 0x00000000006242b2 in std::_Function_handler<void (), vscode::thread_pool::enqueue(std::function<void ()>&&, std::future<void>*)::$_2>::_M_invoke(std::_Any_data const&) ()
#13 0x00000000006230fd in vscode::thread_pool::do_work(unsigned long) ()
#14 0x0000000000e6dc9a in msvc::thread_helper_t::thread_entry(void*) ()
#15 0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#16 0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 4 (Thread 0x7fa30a388700 (LWP 872756)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x14baf68 <vscode::g_thread_pool+304>) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x323c110, cond=0x14baf40 <vscode::g_thread_pool+264>) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x14baf40 <vscode::g_thread_pool+264>, mutex=0x323c110) at pthread_cond_wait.c:655
#3  0x0000000000e9eb9c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x00000000004bd888 in void std::_V2::condition_variable_any::wait<std::unique_lock<std::mutex> >(std::unique_lock<std::mutex>&) ()
#5  0x0000000000624753 in msvc::bitset_event_t::wait_any_set(unsigned int) ()
#6  0x0000000000623015 in vscode::thread_pool::do_work(unsigned long) ()
#7  0x0000000000e6dc9a in msvc::thread_helper_t::thread_entry(void*) ()
#8  0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#9  0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 3 (Thread 0x7fa30ab89700 (LWP 872755)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x14baf68 <vscode::g_thread_pool+304>) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x323c110, cond=0x14baf40 <vscode::g_thread_pool+264>) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x14baf40 <vscode::g_thread_pool+264>, mutex=0x323c110) at pthread_cond_wait.c:655
#3  0x0000000000e9eb9c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x00000000004bd888 in void std::_V2::condition_variable_any::wait<std::unique_lock<std::mutex> >(std::unique_lock<std::mutex>&) ()
#5  0x0000000000624753 in msvc::bitset_event_t::wait_any_set(unsigned int) ()
#6  0x0000000000623015 in vscode::thread_pool::do_work(unsigned long) ()
#7  0x0000000000e6dc9a in msvc::thread_helper_t::thread_entry(void*) ()
#8  0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#9  0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 0x7fa30b38a700 (LWP 872754)):
#0  0x00007fa30b4b221f in epoll_wait (epfd=3, events=0x7fa30b386dd0, maxevents=1024, timeout=-1) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
#1  0x0000000000e7f7ca in uv.io_poll ()
#2  0x0000000000e7da68 in uv_run ()
#3  0x0000000000e46a0b in msvc::loop_t::run_loop() ()
#4  0x0000000000e4c295 in void std::__invoke_impl<void, void (*)(std::shared_ptr<msvc::loop_t>), std::shared_ptr<msvc::loop_t> >(std::__invoke_other, void (*&&)(std::shared_ptr<msvc::loop_t>), std::shared_ptr<msvc::loop_t>&&) ()
#5  0x0000000000e6dc9a in msvc::thread_helper_t::thread_entry(void*) ()
#6  0x00007fa30b580fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#7  0x00007fa30b4b1eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7fa30b38b780 (LWP 872753)):
#0  __GI___libc_read (nbytes=4096, buf=0x325aa80, fd=0) at ../sysdeps/unix/sysv/linux/read.c:26
#1  __GI___libc_read (fd=0, buf=0x325aa80, nbytes=4096) at ../sysdeps/unix/sysv/linux/read.c:24
#2  0x00007fa30b435680 in _IO_new_file_underflow (fp=0x7fa30b573a00 <_IO_2_1_stdin_>) at libioP.h:839
#3  0x00007fa30b4367c2 in __GI__IO_default_uflow (fp=0x7fa30b573a00 <_IO_2_1_stdin_>) at libioP.h:839
#4  0x00007fa30b430e78 in _IO_getc (fp=0x7fa30b573a00 <_IO_2_1_stdin_>) at getc.c:38
#5  0x0000000000ed096d in __gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char> >::underflow() ()
#6  0x0000000000e93aea in std::basic_istream<char, std::char_traits<char> >& std::getline<char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char) ()
#7  0x00000000004e472c in vscode::message_handler::main_loop() ()
#8  0x00000000004df984 in main ()

justin39 avatar Aug 30 '22 12:08 justin39

Our main thread is blocked in the didOpen waiting for a response from cpptools-srv for handle_contains. Another thread is handling an IntelliSense update (it may also be blocked on something). Are you able to repro the bug with only 1 cpp file and get a call stack for the cpptools-srv that is blocked so we can see what it is blocked on? In the past we've had deadlock bugs in which cpptools-srv would be stuck waiting for cpptools to process something (e.g. https://github.com/microsoft/vscode-cpptools/issues/1777#issuecomment-383257425 ), but it's also possible our parser is stuck in some parsing loop.

sean-mcmanus avatar Aug 30 '22 19:08 sean-mcmanus

Are you able to repro the bug with only 1 cpp file

Actually, I don't think we've been able to repro this with only 1 cpp file open - it only seems to manifest with 2+ cpp files open at a time. Not very scientific testing, but at least in our small sample size having 2+ files open seemed to be the most reliable way to trigger the hang.

justin39 avatar Aug 31 '22 13:08 justin39

@justin39 Yeah, a repro with more files and cpptools-srv is okay, but then you'd need to somehow identify which process to attach to to get the call stack for the right process...you could probably tell if you've attached to the correct process because you'd expect it to be doing some work related to responding to a request from cpptools. I'm not sure yet if we'll be able to get a repro ourselves, i.e. I don't believe we've noticed this internally.

sean-mcmanus avatar Sep 01 '22 17:09 sean-mcmanus

How can I pause execution in LLDB? Every time I attach to cpptools/cpptools-srv it's still running and can't pause it to see the thread callstacks.

albertcaldas84 avatar Sep 02 '22 06:09 albertcaldas84

@albertcaldas84 Are you remoting to a Mac machine? I appeared to be hitting a VS Code remote bug that wouldn't let me pause the debugger to get breakpoints (I had filed https://github.com/microsoft/vscode-cpptools/issues/9810, but we haven't filed a bug on VS Code yet).

If you add

            "logging": {
                "engineLogging": true,
                "traceResponse": true
            }

to your launch.json and you don't see any messages when you click the Pause button, then it's a VS Code (or Remote Extension) bug.

A workaround is to use

run the following in a terminal window to attach lldb: lldb -p Then run the following command in lldb to output all stacks: bt all

sean-mcmanus avatar Sep 02 '22 21:09 sean-mcmanus

The main problem is that I don't see any pause button beside the process attached... also these commands return "Unable to perform this action because the process is running."

acaldas1984 avatar Sep 05 '22 07:09 acaldas1984

This should be a thread dump for a hung cpptools-srv process:

Thread 15 (Thread 0x7f16cc4e4700 (LWP 907452)):
#0  0x000000000085d5aa in find_symbol(char const*, unsigned long, a_symbol_locator*) ()
#1  0x000000000086a989 in find_symbol_header(char const*, unsigned long, a_symbol_locator*) ()
#2  0x00000000007b7274 in get_token() ()
#3  0x00000000007ba7fd in cache_token_stream_until_matching_token(a_token_cache*, unsigned int, unsigned char*) ()
#4  0x00000000007c0818 in cache_token_stream_full(a_token_cache*, unsigned char*, unsigned int) ()
#5  0x00000000007d6a46 in cache_function_body(a_token_cache*, int, int*, unsigned int*, unsigned int*, a_source_position*, a_source_position*) ()
#6  0x00000000008a1e4b in complete_function_template_decl(a_tmpl_decl_state*, a_symbol*, a_func_info_block*, a_template_symbol_supplement**, a_source_position*) ()
#7  0x000000000089aee3 in template_declaration(a_tmpl_decl_state*) ()
#8  0x00000000008951e0 in template_or_specialization_declaration_full(a_tmpl_decl_state*, int, a_decl_parse_state*) ()
#9  0x000000000089b44a in template_or_specialization_declaration(a_token_kind_tag*, int, a_source_position*, int, a_decl_parse_state*) ()
#10 0x00000000008a0706 in template_directive_or_declaration(a_token_kind_tag*, int, a_source_position*) ()
#11 0x00000000005d1cc8 in scan_nonmember_declaration(a_decl_parse_state*, a_source_range*) ()
#12 0x00000000005da7fa in namespace_declaration(a_token_kind_tag*, int, int, a_source_position*, a_symbol**) ()
#13 0x00000000005d1f5c in scan_nonmember_declaration(a_decl_parse_state*, a_source_range*) ()
#14 0x00000000005d8548 in translation_unit() ()
#15 0x00000000008bf3a4 in process_translation_unit(char const*, int, an_exported_template_file*) ()
#16 0x0000000000530047 in cfe_main(int, char**) ()
#17 0x00000000008e3c86 in cfe_main_exception_handler(int, char**) ()
#18 0x0000000000530156 in edg_main(int, char**) ()
#19 0x00000000008dcf9c in edge_compiler_main(int, char const**) ()
#20 0x00000000004b9e96 in preparse(int, char const**, a_scout_store*, edge::translation_unit*) ()
#21 0x000000000047e95f in a_compiler_thread::compiler_thread_routine(a_compiler_thread*) ()
#22 0x00000000009b685a in msvc::thread_helper_t::thread_entry(void*) ()
#23 0x00007f16cd6dcfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#24 0x00007f16cd60deff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 13 (Thread 0x7f16aeffd700 (LWP 899492)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x11559a4 <cond+44>) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x1155950 <mutex>, cond=0x1155978 <cond>) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x1155978 <cond>, mutex=0x1155950 <mutex>) at pthread_cond_wait.c:655
#3  0x00000000009c68b6 in uv_cond_wait ()
#4  0x00000000009b9326 in worker ()
#5  0x00007f16cd6dcfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#6  0x00007f16cd60deff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 12 (Thread 0x7f16af7fe700 (LWP 899491)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x11559a0 <cond+40>) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x1155950 <mutex>, cond=0x1155978 <cond>) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x1155978 <cond>, mutex=0x1155950 <mutex>) at pthread_cond_wait.c:655
#3  0x00000000009c68b6 in uv_cond_wait ()
#4  0x00000000009b9326 in worker ()
#5  0x00007f16cd6dcfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#6  0x00007f16cd60deff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 11 (Thread 0x7f16affff700 (LWP 899490)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x7f16942b4d70) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x7f16942b4d20, cond=0x7f16942b4d48) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x7f16942b4d48, mutex=0x7f16942b4d20) at pthread_cond_wait.c:655
#3  0x00000000009dd15c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x0000000000479ac5 in a_compiler_thread::start(edge::query_action_data&) ()
#5  0x00000000004791d6 in edge::an_edge_translation_unit_impl::reinitialize_without_fallback(bool, snapshot::snapshot_session_t, edge::file_position const&, edge::query_action_data&) ()
#6  0x0000000000472d66 in edge::an_edge_translation_unit_impl::reinitialize(bool, snapshot::snapshot_session_t, edge::file_position const&, edge::query_action_data&) ()
#7  0x00000000004657ba in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#8  0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#9  0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#10 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#11 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#12 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#13 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#14 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#15 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#16 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#17 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#18 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#19 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#20 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#21 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#22 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#23 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#24 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#25 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#26 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#27 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#28 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#29 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#30 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#31 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#32 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#33 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#34 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#35 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#36 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#37 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#38 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#39 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#40 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#41 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#42 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#43 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#44 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#45 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#46 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#47 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#48 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#49 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#50 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#51 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#52 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#53 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#54 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#55 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#56 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#57 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#58 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#59 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#60 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#61 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#62 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#63 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#64 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#65 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#66 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#67 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#68 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#69 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#70 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#71 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#72 0x00000000004658e3 in edge::scoped_query_manager::check_and_compile(edge::file_position const&, edge::file_position const&, edge::file_position const&, bool, bool, bool) ()
#73 0x0000000000473aa4 in edge::scoped_query_manager::get_trees_overlapping_span(a_canonicalized_file_name, msvc::strong_typedef_t<msvc::offset_traits>, msvc::strong_typedef_t<msvc::offset_traits>, int, edge::tree_query_result_builder*) ()
#74 0x00000000004b1502 in edge::intellisense_operation::symbol_at_cursor(bool, msvc::buffer<char>*) ()
#75 0x000000000042a20b in edge_intellisense_server_impl::handle_goto_def(cpp_intellisense::DocumentPosition const&, cpp_intellisense::goto_mode, cpp_intellisense::GoToDefResponse&)::{lambda(edge::intellisense_operation&, cpp_intellisense::GoToDefResponse&)#1}::operator()(edge::intellisense_operation&, cpp_intellisense::GoToDefResponse&) const ()
#76 0x0000000000429ce2 in void edge_intellisense_operation::perform_isense_operation_helper<cpp_intellisense::GoToDefResponse>(char const*, edge::intellisense_operation&, cpp_intellisense::DocumentPosition const&, std::function<void (edge::intellisense_operation&, cpp_intellisense::GoToDefResponse&)>&&, cpp_intellisense::GoToDefResponse&, edge::allocator*, snapshot::snapshot_session_t const&) ()
#77 0x000000000042945d in void edge_intellisense_operation::perform_isense_operation<cpp_intellisense::GoToDefResponse>(char const*, cpp_intellisense::DocumentPosition const&, std::function<void (edge::intellisense_operation&, cpp_intellisense::GoToDefResponse&)>&&, cpp_intellisense::GoToDefResponse&, snapshot::snapshot_session_t, bool, edge::allocator*) ()
#78 0x0000000000420532 in edge_intellisense_server_impl::handle_goto_def(cpp_intellisense::DocumentPosition const&, cpp_intellisense::goto_mode, cpp_intellisense::GoToDefResponse&) ()
#79 0x000000000044aa6d in cpp_intellisense::server_stub::handle_goto_def(msvc::deserializer_t&, msvc::serializer_t&) ()
#80 0x00000000004595e0 in msvc::base_channel_t::dispatch_message(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) ()
#81 0x000000000098bc03 in msvc::common_channel_t::perform_call(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ()
#82 0x00000000009b9465 in worker ()
#83 0x00007f16cd6dcfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#84 0x00007f16cd60deff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 10 (Thread 0x7f16c4ff9700 (LWP 899489)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x11559a4 <cond+44>) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x1155950 <mutex>, cond=0x1155978 <cond>) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x1155978 <cond>, mutex=0x1155950 <mutex>) at pthread_cond_wait.c:655
#3  0x00000000009c68b6 in uv_cond_wait ()
#4  0x00000000009b9326 in worker ()
#5  0x00007f16cd6dcfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#6  0x00007f16cd60deff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 9 (Thread 0x7f16c57fa700 (LWP 899488)):
#0  0x00007f16cd60e21f in epoll_wait (epfd=3, events=0x7f16c57f6e10, maxevents=1024, timeout=-1) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
#1  0x00000000009bde0a in uv.io_poll ()
#2  0x00000000009bc0a8 in uv_run ()
#3  0x0000000000991afb in msvc::loop_t::run_loop() ()
#4  0x00000000009975b5 in void std::__invoke_impl<void, void (*)(std::shared_ptr<msvc::loop_t>), std::shared_ptr<msvc::loop_t> >(std::__invoke_other, void (*&&)(std::shared_ptr<msvc::loop_t>), std::shared_ptr<msvc::loop_t>&&) ()
#5  0x00000000009b685a in msvc::thread_helper_t::thread_entry(void*) ()
#6  0x00007f16cd6dcfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#7  0x00007f16cd60deff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 8 (Thread 0x7f16c5ffb700 (LWP 899487)):
#0  futex_abstimed_wait_cancelable (private=0, abstime=0x7f16c5ffae20, expected=0, futex_word=0x114bbb8 <vscode::g_thread_pool+304>) at ../sysdeps/unix/sysv/linux/futex-internal.h:205
#1  __pthread_cond_wait_common (abstime=0x7f16c5ffae20, mutex=0x19df7b0, cond=0x114bb90 <vscode::g_thread_pool+264>) at pthread_cond_wait.c:539
#2  __pthread_cond_timedwait (cond=0x114bb90 <vscode::g_thread_pool+264>, mutex=0x19df7b0, abstime=0x7f16c5ffae20) at pthread_cond_wait.c:667
#3  0x000000000045c30d in std::cv_status std::_V2::condition_variable_any::wait_until<std::unique_lock<std::mutex>, std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >(std::unique_lock<std::mutex>&, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&) ()
#4  0x000000000093c866 in unsigned int msvc::bitset_event_t::wait_for_any_set<long, std::ratio<1l, 1000l> >(std::chrono::duration<long, std::ratio<1l, 1000l> > const&, unsigned int) ()
#5  0x000000000093b6d0 in msvc::thread_t::invoker_t<vscode::thread_pool::thread_pool()::$_0>::invoke() ()
#6  0x00000000009b685a in msvc::thread_helper_t::thread_entry(void*) ()
#7  0x00007f16cd6dcfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#8  0x00007f16cd60deff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 7 (Thread 0x7f16c67fc700 (LWP 899486)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x114bbb8 <vscode::g_thread_pool+304>) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x19df7b0, cond=0x114bb90 <vscode::g_thread_pool+264>) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x114bb90 <vscode::g_thread_pool+264>, mutex=0x19df7b0) at pthread_cond_wait.c:655
#3  0x00000000009dd15c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x000000000093c248 in void std::_V2::condition_variable_any::wait<std::unique_lock<std::mutex> >(std::unique_lock<std::mutex>&) ()
#5  0x000000000093bcb3 in msvc::bitset_event_t::wait_any_set(unsigned int) ()
#6  0x000000000093a555 in vscode::thread_pool::do_work(unsigned long) ()
#7  0x00000000009b685a in msvc::thread_helper_t::thread_entry(void*) ()
#8  0x00007f16cd6dcfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#9  0x00007f16cd60deff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 6 (Thread 0x7f16c6ffd700 (LWP 899485)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x114bbb8 <vscode::g_thread_pool+304>) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x19df7b0, cond=0x114bb90 <vscode::g_thread_pool+264>) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x114bb90 <vscode::g_thread_pool+264>, mutex=0x19df7b0) at pthread_cond_wait.c:655
#3  0x00000000009dd15c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x000000000093c248 in void std::_V2::condition_variable_any::wait<std::unique_lock<std::mutex> >(std::unique_lock<std::mutex>&) ()
#5  0x000000000093bcb3 in msvc::bitset_event_t::wait_any_set(unsigned int) ()
#6  0x000000000093a555 in vscode::thread_pool::do_work(unsigned long) ()
#7  0x00000000009b685a in msvc::thread_helper_t::thread_entry(void*) ()
#8  0x00007f16cd6dcfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#9  0x00007f16cd60deff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 5 (Thread 0x7f16c77fe700 (LWP 899484)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x114bbb8 <vscode::g_thread_pool+304>) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x19df7b0, cond=0x114bb90 <vscode::g_thread_pool+264>) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x114bb90 <vscode::g_thread_pool+264>, mutex=0x19df7b0) at pthread_cond_wait.c:655
#3  0x00000000009dd15c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x000000000093c248 in void std::_V2::condition_variable_any::wait<std::unique_lock<std::mutex> >(std::unique_lock<std::mutex>&) ()
#5  0x000000000093bcb3 in msvc::bitset_event_t::wait_any_set(unsigned int) ()
#6  0x000000000093a555 in vscode::thread_pool::do_work(unsigned long) ()
#7  0x00000000009b685a in msvc::thread_helper_t::thread_entry(void*) ()
#8  0x00007f16cd6dcfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#9  0x00007f16cd60deff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 4 (Thread 0x7f16c7fff700 (LWP 899483)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x114bbb8 <vscode::g_thread_pool+304>) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x19df7b0, cond=0x114bb90 <vscode::g_thread_pool+264>) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x114bb90 <vscode::g_thread_pool+264>, mutex=0x19df7b0) at pthread_cond_wait.c:655
#3  0x00000000009dd15c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x000000000093c248 in void std::_V2::condition_variable_any::wait<std::unique_lock<std::mutex> >(std::unique_lock<std::mutex>&) ()
#5  0x000000000093bcb3 in msvc::bitset_event_t::wait_any_set(unsigned int) ()
#6  0x000000000093a555 in vscode::thread_pool::do_work(unsigned long) ()
#7  0x00000000009b685a in msvc::thread_helper_t::thread_entry(void*) ()
#8  0x00007f16cd6dcfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#9  0x00007f16cd60deff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 3 (Thread 0x7f16ccce5700 (LWP 899482)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x114bbb8 <vscode::g_thread_pool+304>) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x19df7b0, cond=0x114bb90 <vscode::g_thread_pool+264>) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x114bb90 <vscode::g_thread_pool+264>, mutex=0x19df7b0) at pthread_cond_wait.c:655
#3  0x00000000009dd15c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x000000000093c248 in void std::_V2::condition_variable_any::wait<std::unique_lock<std::mutex> >(std::unique_lock<std::mutex>&) ()
#5  0x000000000093bcb3 in msvc::bitset_event_t::wait_any_set(unsigned int) ()
#6  0x000000000093a555 in vscode::thread_pool::do_work(unsigned long) ()
#7  0x00000000009b685a in msvc::thread_helper_t::thread_entry(void*) ()
#8  0x00007f16cd6dcfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#9  0x00007f16cd60deff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 0x7f16cd4e6700 (LWP 899481)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x114bbb8 <vscode::g_thread_pool+304>) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x19df7b0, cond=0x114bb90 <vscode::g_thread_pool+264>) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x114bb90 <vscode::g_thread_pool+264>, mutex=0x19df7b0) at pthread_cond_wait.c:655
#3  0x00000000009dd15c in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#4  0x000000000093c248 in void std::_V2::condition_variable_any::wait<std::unique_lock<std::mutex> >(std::unique_lock<std::mutex>&) ()
#5  0x000000000093bcb3 in msvc::bitset_event_t::wait_any_set(unsigned int) ()
#6  0x000000000093a555 in vscode::thread_pool::do_work(unsigned long) ()
#7  0x00000000009b685a in msvc::thread_helper_t::thread_entry(void*) ()
#8  0x00007f16cd6dcfa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#9  0x00007f16cd60deff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7f16cd4e7740 (LWP 899480)):
#0  futex_abstimed_wait_cancelable (private=0, abstime=0x7fff269a88a0, expected=0, futex_word=0xf23080 <g_eventAbort+80>) at ../sysdeps/unix/sysv/linux/futex-internal.h:205
#1  __pthread_cond_wait_common (abstime=0x7fff269a88a0, mutex=0x19dc270, cond=0xf23058 <g_eventAbort+40>) at pthread_cond_wait.c:539
#2  __pthread_cond_timedwait (cond=0xf23058 <g_eventAbort+40>, mutex=0x19dc270, abstime=0x7fff269a88a0) at pthread_cond_wait.c:667
#3  0x000000000045c30d in std::cv_status std::_V2::condition_variable_any::wait_until<std::unique_lock<std::mutex>, std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >(std::unique_lock<std::mutex>&, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&) ()
#4  0x0000000000451d07 in bool msvc::event_t::wait_for<long, std::ratio<1l, 1l> >(std::chrono::duration<long, std::ratio<1l, 1l> > const&) ()
#5  0x000000000044d806 in RunServer(unsigned int, char const*) ()
#6  0x000000000044de0b in main ()

The check_and_compile block stands out to me at a glance, but I'm not sure what to make of it.

justin39 avatar Sep 05 '22 23:09 justin39

@albertcaldas84 Unfortunately, I'm not familiar with the symptoms you're describing. @WardenGnaw Do you have any idea?

@justin39 I think the check_and_compile is intentional recursion. That thread is blocked on the other thread running find_symbol. Are you able to tell if that other thread is stuck in some infinite parsing loop, i.e. is CPU still being used and/or how do the call stacks change over time?

sean-mcmanus avatar Sep 06 '22 20:09 sean-mcmanus

From what I can tell, countless LWP (lightweight processes?) are getting spun up and down. They seem to be spinning over similar operations over different files - for example:

Thread 267 (Thread 0x7fcd8501e700 (LWP 1957276)):
#0  __GI___xstat (vers=<optimized out>, name=0x7fcd45cc1530 "/opt/mitkrb5/include", buf=0x7fcd8501d900) at ../sysdeps/unix/sysv/linux/wordsize-64/xstat.c:35
#1  0x00000000006a825e in compare_dir_names(char const*, char const*, int) ()
#2  0x00000000006a80c6 in remove_duplicate_include_dirs(a_directory_name_entry**, int) ()
#3  0x00000000005692a0 in proc_command_line(int, char**) ()
#4  0x0000000000530012 in cfe_main(int, char**) ()
#5  0x00000000008e3c86 in cfe_main_exception_handler(int, char**) ()
#6  0x0000000000530156 in edg_main(int, char**) ()
#7  0x00000000008dcf9c in edge_compiler_main(int, char const**) ()
#8  0x00000000004b9e96 in preparse(int, char const**, a_scout_store*, edge::translation_unit*) ()
#9  0x000000000047e95f in a_compiler_thread::compiler_thread_routine(a_compiler_thread*) ()
#10 0x00000000009b685a in msvc::thread_helper_t::thread_entry(void*) ()
#11 0x00007fcd8aa1ffa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#12 0x00007fcd8a950eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

A couple seconds later

Thread 288 (Thread 0x7fcd8501e700 (LWP 1961535)):
#0  __GI___xstat (vers=<optimized out>, name=0x7fcd43645060 "/path/to/dependencies/c/include", buf=0x7fcd8501d900) at ../sysdeps/unix/sysv/linux/wordsize-64/xstat.c:35
#1  0x00000000006a825e in compare_dir_names(char const*, char const*, int) ()
#2  0x00000000006a80c6 in remove_duplicate_include_dirs(a_directory_name_entry**, int) ()
#3  0x00000000005692a0 in proc_command_line(int, char**) ()
#4  0x0000000000530012 in cfe_main(int, char**) ()
#5  0x00000000008e3c86 in cfe_main_exception_handler(int, char**) ()
#6  0x0000000000530156 in edg_main(int, char**) ()
#7  0x00000000008dcf9c in edge_compiler_main(int, char const**) ()
#8  0x00000000004b9e96 in preparse(int, char const**, a_scout_store*, edge::translation_unit*) ()
#9  0x000000000047e95f in a_compiler_thread::compiler_thread_routine(a_compiler_thread*) ()
#10 0x00000000009b685a in msvc::thread_helper_t::thread_entry(void*) ()
#11 0x00007fcd8aa1ffa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#12 0x00007fcd8a950eff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

All the files seem to correspond to entries under configurations.includePath in .vscode/c_cpp_properties.json. Looks like we have around 200 entries under includePath in this project; not sure how many files we expect to find at each path though.

justin39 avatar Sep 06 '22 21:09 justin39

That call stack is different from the previous one. Do you know how you're getting it to break repeatedly in remove_duplicate_include_dirs ? Does it seem like the 200 include directories are somehow causing that code to take too long to process? It seems to be creating a lot of preparse threads.

sean-mcmanus avatar Sep 07 '22 01:09 sean-mcmanus

I'm just pausing the cpptools-srv proc at random intervals and grabbing the transient LWP/thread on top - this seems to be what's happening when I leave VS Code to "idle" with 2+ cpp files open, as opposed to while it's actually spinning on a go-to-definition request.

It may well be related to the 200 include directories - I can try stripping them out, but it will likely break IntelliSense :(

justin39 avatar Sep 07 '22 03:09 justin39

I had to use another debugger (CodeLLDB), cppextension didn't allow me to stop the process... (didn't see pause icon besides the running process).

This is the callstack when attaching to cpptools-srv when there is a hang:

bt all

bt all
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
  * frame #0: 0x00000001a3d82854 libsystem_kernel.dylib`__ulock_wait + 8
    frame #1: 0x00000001a3dc05a0 libsystem_pthread.dylib`_pthread_join + 444
    frame #2: 0x0000000104b0672c cpptools`msvc::thread_t::join() + 52
    frame #3: 0x000000010429aa90 cpptools`vscode::message_handler::shutdown() + 152
    frame #4: 0x000000010429a884 cpptools`vscode::message_handler::main_loop() + 4516
    frame #5: 0x0000000104298538 cpptools`main + 288
    frame #6: 0x00000001058e9088 dyld`start + 516
  thread #2
    frame #0: 0x00000001a3d86c40 libsystem_kernel.dylib`kevent + 8
    frame #1: 0x0000000104b1fd3c cpptools`uv__io_poll + 724
    frame #2: 0x0000000104b193a4 cpptools`uv_run + 372
    frame #3: 0x0000000104adeb28 cpptools`msvc::loop_t::run_loop() + 64
    frame #4: 0x0000000104ae1bc8 cpptools`msvc::thread_t::invoker_t<void (*)(std::__1::shared_ptr<msvc::loop_t>), std::__1::shared_ptr<msvc::loop_t>&>::invoke() + 40
    frame #5: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #6: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #3
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x00000001a3d0d230 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    frame #3: 0x0000000104281050 cpptools`void std::__1::condition_variable_any::wait<std::__1::unique_lock<std::__1::mutex> >(std::__1::unique_lock<std::__1::mutex>&) + 100
    frame #4: 0x000000010439ec74 cpptools`vscode::thread_pool::do_work(unsigned long) + 340
    frame #5: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #6: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #4
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x00000001a3d0d230 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    frame #3: 0x0000000104281050 cpptools`void std::__1::condition_variable_any::wait<std::__1::unique_lock<std::__1::mutex> >(std::__1::unique_lock<std::__1::mutex>&) + 100
    frame #4: 0x000000010439ec74 cpptools`vscode::thread_pool::do_work(unsigned long) + 340
    frame #5: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #6: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #5
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x00000001a3d0d230 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    frame #3: 0x0000000104281050 cpptools`void std::__1::condition_variable_any::wait<std::__1::unique_lock<std::__1::mutex> >(std::__1::unique_lock<std::__1::mutex>&) + 100
    frame #4: 0x000000010439ec74 cpptools`vscode::thread_pool::do_work(unsigned long) + 340
    frame #5: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #6: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #6
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x00000001a3d0d230 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    frame #3: 0x0000000104281050 cpptools`void std::__1::condition_variable_any::wait<std::__1::unique_lock<std::__1::mutex> >(std::__1::unique_lock<std::__1::mutex>&) + 100
    frame #4: 0x000000010439ec74 cpptools`vscode::thread_pool::do_work(unsigned long) + 340
    frame #5: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #6: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #7
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x00000001a3d0d230 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    frame #3: 0x0000000104281050 cpptools`void std::__1::condition_variable_any::wait<std::__1::unique_lock<std::__1::mutex> >(std::__1::unique_lock<std::__1::mutex>&) + 100
    frame #4: 0x000000010439ec74 cpptools`vscode::thread_pool::do_work(unsigned long) + 340
    frame #5: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #6: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #8
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x00000001a3d0d230 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    frame #3: 0x0000000104281050 cpptools`void std::__1::condition_variable_any::wait<std::__1::unique_lock<std::__1::mutex> >(std::__1::unique_lock<std::__1::mutex>&) + 100
    frame #4: 0x000000010439ec74 cpptools`vscode::thread_pool::do_work(unsigned long) + 340
    frame #5: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #6: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #9
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x00000001a3d0d230 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    frame #3: 0x0000000104281050 cpptools`void std::__1::condition_variable_any::wait<std::__1::unique_lock<std::__1::mutex> >(std::__1::unique_lock<std::__1::mutex>&) + 100
    frame #4: 0x000000010439ec74 cpptools`vscode::thread_pool::do_work(unsigned long) + 340
    frame #5: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #6: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #10
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x00000001a3d0d230 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    frame #3: 0x0000000104281050 cpptools`void std::__1::condition_variable_any::wait<std::__1::unique_lock<std::__1::mutex> >(std::__1::unique_lock<std::__1::mutex>&) + 100
    frame #4: 0x000000010439ec74 cpptools`vscode::thread_pool::do_work(unsigned long) + 340
    frame #5: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #6: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #11
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x00000001a3d0d230 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    frame #3: 0x0000000104281050 cpptools`void std::__1::condition_variable_any::wait<std::__1::unique_lock<std::__1::mutex> >(std::__1::unique_lock<std::__1::mutex>&) + 100
    frame #4: 0x000000010439ec74 cpptools`vscode::thread_pool::do_work(unsigned long) + 340
    frame #5: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #6: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #12
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x00000001a3d0d230 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    frame #3: 0x0000000104281050 cpptools`void std::__1::condition_variable_any::wait<std::__1::unique_lock<std::__1::mutex> >(std::__1::unique_lock<std::__1::mutex>&) + 100
    frame #4: 0x000000010439ec74 cpptools`vscode::thread_pool::do_work(unsigned long) + 340
    frame #5: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #6: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #13
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x00000001a3d0d2cc libc++.1.dylib`std::__1::condition_variable::__do_timed_wait(std::__1::unique_lock<std::__1::mutex>&, std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >) + 100
    frame #3: 0x0000000104281404 cpptools`std::__1::cv_status std::__1::condition_variable_any::wait_until<std::__1::unique_lock<std::__1::mutex>, std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >(std::__1::unique_lock<std::__1::mutex>&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > > const&) + 268
    frame #4: 0x00000001043a0558 cpptools`unsigned int msvc::bitset_event_t::wait_for_any_set<long long, std::__1::ratio<1l, 1000l> >(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000l> > const&, unsigned int) + 112
    frame #5: 0x00000001043a042c cpptools`msvc::thread_t::invoker_t<vscode::thread_pool::thread_pool()::$_0>::invoke() + 164
    frame #6: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #7: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #14
    frame #0: 0x00000001a3d86c40 libsystem_kernel.dylib`kevent + 8
    frame #1: 0x0000000104b1fd3c cpptools`uv__io_poll + 724
    frame #2: 0x0000000104b193a4 cpptools`uv_run + 372
    frame #3: 0x0000000104adeb28 cpptools`msvc::loop_t::run_loop() + 64
    frame #4: 0x0000000104ae1bc8 cpptools`msvc::thread_t::invoker_t<void (*)(std::__1::shared_ptr<msvc::loop_t>), std::__1::shared_ptr<msvc::loop_t>&>::invoke() + 40
    frame #5: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #6: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #15
    frame #0: 0x00000001a3d82a0c libsystem_kernel.dylib`__read_nocancel + 8
    frame #1: 0x00000001a3ce8930 libsystem_c.dylib`wordexp + 2220
    frame #2: 0x0000000104b06b04 cpptools`msvc::parse_arguments(msvc::basic_zstring_view<char>) + 60
    frame #3: 0x0000000104245284 cpptools`cpp_properties::set_custom_browse_path(vscode::WorkspaceBrowseConfiguration const&) + 768
    frame #4: 0x00000001042b168c cpptools`vscode::message_handler::cpptools_didChangeCustomBrowseConfiguration(vscode::CustomBrowseConfigurationParams) + 124
    frame #5: 0x000000010429e77c cpptools`vscode::message_handler::dispatch(vscode::vscode_client_message&&, vscode::vscode_server_message&, vscode::message_handler::msg_proc_thread_token) + 10016
    frame #6: 0x000000010429bf90 cpptools`vscode::message_handler::handle_message(vscode::vscode_client_message&&, vscode::message_handler::msg_proc_thread_token) + 52
    frame #7: 0x000000010430b7a8 cpptools`std::__1::__function::__func<vscode::message_handler::main_loop()::$_7, std::__1::allocator<vscode::message_handler::main_loop()::$_7>, void ()>::operator()() + 1996
    frame #8: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #9: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #16
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x00000001a3d0d230 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    frame #3: 0x000000010430c808 cpptools`vscode::message_deque<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, false>::pop_impl(bool) + 92
    frame #4: 0x000000010430c6bc cpptools`std::__1::__function::__func<vscode::message_handler::main_loop()::$_8, std::__1::allocator<vscode::message_handler::main_loop()::$_8>, void ()>::operator()() + 48
    frame #5: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #6: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #17
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x00000001a3d0d230 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    frame #3: 0x000000010430de44 cpptools`vscode::message_deque<vscode::folding_ranges_params, false>::pop_impl(bool) + 92
    frame #4: 0x000000010430dc7c cpptools`std::__1::__function::__func<vscode::message_handler::main_loop()::$_11, std::__1::allocator<vscode::message_handler::main_loop()::$_11>, void ()>::operator()() + 80
    frame #5: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #6: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #18
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x00000001a3d0d230 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    frame #3: 0x000000010430d2b0 cpptools`vscode::message_deque<vscode::browse_engine_update_action, false>::pop_impl(bool) + 84
    frame #4: 0x000000010430cb4c cpptools`std::__1::__function::__func<vscode::message_handler::main_loop()::$_9, std::__1::allocator<vscode::message_handler::main_loop()::$_9>, void ()>::operator()() + 156
    frame #5: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #6: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #19
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x00000001a3d0d230 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    frame #3: 0x000000010430e37c cpptools`vscode::message_deque<vscode::vscode_client_message, false>::pop_impl(bool) + 96
    frame #4: 0x000000010430e234 cpptools`std::__1::__function::__func<vscode::message_handler::main_loop()::$_12, std::__1::allocator<vscode::message_handler::main_loop()::$_12>, void ()>::operator()() + 68
    frame #5: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #6: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #20
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x00000001a3d0d230 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    frame #3: 0x000000010430e37c cpptools`vscode::message_deque<vscode::vscode_client_message, false>::pop_impl(bool) + 96
    frame #4: 0x000000010430e534 cpptools`std::__1::__function::__func<vscode::message_handler::main_loop()::$_13, std::__1::allocator<vscode::message_handler::main_loop()::$_13>, void ()>::operator()() + 68
    frame #5: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #6: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #21
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x00000001a3d0d230 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    frame #3: 0x000000010430eb00 cpptools`vscode::message_deque<vscode::message_handler::parse_file_entry, true>::pop_impl(bool) + 92
    frame #4: 0x000000010430e6e4 cpptools`std::__1::__function::__func<vscode::message_handler::main_loop()::$_14, std::__1::allocator<vscode::message_handler::main_loop()::$_14>, void ()>::operator()() + 112
    frame #5: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #6: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #22
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x00000001a3d0d230 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    frame #3: 0x000000010430e37c cpptools`vscode::message_deque<vscode::vscode_client_message, false>::pop_impl(bool) + 96
    frame #4: 0x000000010430f03c cpptools`std::__1::__function::__func<vscode::message_handler::main_loop()::$_15, std::__1::allocator<vscode::message_handler::main_loop()::$_15>, void ()>::operator()() + 68
    frame #5: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #6: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #23
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x00000001a3d0d2cc libc++.1.dylib`std::__1::condition_variable::__do_timed_wait(std::__1::unique_lock<std::__1::mutex>&, std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >) + 100
    frame #3: 0x000000010430f400 cpptools`vscode::message_deque<int, false>::pop_impl(bool, int&, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000l> >) + 148
    frame #4: 0x000000010430f2b4 cpptools`std::__1::__function::__func<vscode::message_handler::main_loop()::$_16, std::__1::allocator<vscode::message_handler::main_loop()::$_16>, void ()>::operator()() + 316
    frame #5: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #6: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #24
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x00000001a3d0d230 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    frame #3: 0x0000000104281050 cpptools`void std::__1::condition_variable_any::wait<std::__1::unique_lock<std::__1::mutex> >(std::__1::unique_lock<std::__1::mutex>&) + 100
    frame #4: 0x000000010430f750 cpptools`std::__1::__function::__func<vscode::message_handler::main_loop()::$_17, std::__1::allocator<vscode::message_handler::main_loop()::$_17>, void ()>::operator()() + 196
    frame #5: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #6: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #25
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x00000001a3d0d230 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    frame #3: 0x000000010430da58 cpptools`vscode::message_deque<int, false>::pop_impl(bool) + 84
    frame #4: 0x000000010430d980 cpptools`std::__1::__function::__func<vscode::message_handler::main_loop()::$_10, std::__1::allocator<vscode::message_handler::main_loop()::$_10>, void ()>::operator()() + 52
    frame #5: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #6: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #26
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x0000000104b26960 cpptools`uv_cond_wait + 12
    frame #3: 0x0000000104b15da0 cpptools`worker + 112
    frame #4: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #27
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x0000000104b26960 cpptools`uv_cond_wait + 12
    frame #3: 0x0000000104b15da0 cpptools`worker + 112
    frame #4: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #28
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x0000000104b26960 cpptools`uv_cond_wait + 12
    frame #3: 0x0000000104b15da0 cpptools`worker + 112
    frame #4: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #29
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x0000000104b26960 cpptools`uv_cond_wait + 12
    frame #3: 0x0000000104b15da0 cpptools`worker + 112
    frame #4: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148
  thread #30
    frame #0: 0x00000001a3d84290 libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001a3dbe83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
    frame #2: 0x00000001a3d0d230 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    frame #3: 0x0000000104929084 cpptools`run_tag_parser() + 348
    frame #4: 0x00000001048bc924 cpptools`process_translation_unit(char const*, int, an_exported_template_file*) + 912
    frame #5: 0x0000000104536e90 cpptools`cfe_main(int, char**) + 136
    frame #6: 0x00000001048e2cac cpptools`cfe_main_exception_handler(int, char**) + 12
    frame #7: 0x0000000104536f7c cpptools`edg_main(int, char**) + 12
    frame #8: 0x000000010492cac8 cpptools`antlr_parse_routine() + 488
    frame #9: 0x0000000104b066d8 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
    frame #10: 0x00000001a3dbe26c libsystem_pthread.dylib`_pthread_start + 148



albertcaldas84 avatar Sep 07 '22 07:09 albertcaldas84