vscode-cpptools
vscode-cpptools copied to clipboard
Parser crashes on unusual wide-string literals
Bug type: Language Service
Describe the bug
- OS and Version: Arch Linux (rolling)
- VS Code Version: 1.69.0-insider
- C/C++ Extension Version: v1.11.0 (pre-release)
The cpptools process crashes on an input .c file containing wide string literals in the following format:
static const WCHAR defaultbrowsers[] =
L"xdg-open\0"
"/usr/bin/open\0"
"firefox\0"
"konqueror\0"
"mozilla\0"
"opera\0"
"dillo\0";
(copied from the Wine project, commit b2bf7b6b899d, file programs/winebrowser/main.c, line 117)
Steps to reproduce
- clone https://github.com/wine-mirror/wine/ (or https://source.winehq.org/git/wine.git/)
- open the folder in Visual Studio Code
- open any .c file in the folder
Expected behavior The extension successfully parses all c/c++ files in the workspace without crashing.
Code sample and logs
-
Code sample https://github.com/wine-mirror/wine/blob/master/programs/winebrowser/main.c#L117
-
Configurations in
c_cpp_properties.jsonI do not have this file -
Logs from running
C/C++: Log Diagnosticsfrom the VS Code command palette
-------- Diagnostics - 7/4/2022, 7:04:26 PM
Version: 1.11.0
Current Configuration:
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [],
"compilerPath": "/usr/bin/clang",
"cStandard": "c17",
"cppStandard": "c++14",
"intelliSenseMode": "linux-clang-x64",
"intelliSenseModeIsExplicit": false,
"cStandardIsExplicit": false,
"cppStandardIsExplicit": false,
"mergeConfigurations": false,
"compilerPathIsExplicit": false,
"browse": {
"path": [
"${workspaceFolder}/**"
],
"limitSymbolsToIncludedHeaders": true
}
}
Translation Unit Mappings:
[ /home/openglfreak/repos/wine/wine-7.3-test/programs/winebrowser/main.c ]:
/home/openglfreak/repos/wine/wine-7.3-test/programs/winebrowser/main.c
Translation Unit Configurations:
[ /home/openglfreak/repos/wine/wine-7.3-test/programs/winebrowser/main.c ]:
Process ID: 824372
Memory Usage: 302 MB
Compiler Path: /usr/bin/clang
Includes:
/usr/lib/clang/14.0.6/include
/usr/local/include
/usr/include
/home/openglfreak/repos/wine/wine-7.3-test/include
/home/openglfreak/repos/wine/wine-7.3-test/build32/include
Standard Version: c17
IntelliSense Mode: linux-clang-x64
Other Flags:
--clang
--clang_version=140006
Total Memory Usage: 302 MB
------- Workspace parsing diagnostics -------
Number of files discovered (not excluded): 71862
------- Potential include path issues --------
Some headers exist in multiple locations. If IntelliSense is behaving incorrectly,
try adding one of the alternate paths to the "includePath" in your configuration in
c_cpp_properties.json to override the automatic path discovery for that header.
Using: /usr/include/ctype.h
Alternative: "/home/openglfreak/repos/wine/wine-7.3-test/include/msvcrt"
Using: /home/openglfreak/repos/wine/wine-7.3-test/include/imm.h
Alternative: "/home/openglfreak/repos/wine/wine-7.3-test/include/ddk"
Using: /home/openglfreak/repos/wine/wine-7.3-test/build32/include/msxml.h
Alternative: "/home/openglfreak/repos/wine/wine-7.3-test/build/include"
Using: /usr/include/wine/debug.h
Alternative: "/home/openglfreak/repos/wine/wine-7.3-test/include"
Additional context backtrace:
#0 0x0000000000ac482c in conv_line_loc_to_source_pos(char const*, a_source_position*) ()
#1 0x0000000000adf763 in conv_single_char(a_char_conversion_state*, int, unsigned long*, unsigned long, int, int) ()
#2 0x0000000000ae08bc in conv_string_literal(char const*, char const*, int, unsigned long, an_error_code*, char const**, int) ()
#3 0x0000000000ae105e in concat_string_literals(a_token_cache*, unsigned char, a_cached_token*) ()
#4 0x0000000000acdbf7 in concat_adjacent_string_literals(int) ()
#5 0x0000000000abaf39 in get_token() ()
#6 0x000000000085402a in a_scout_parser_token_stream<scout_parser_cpp>::nextToken() ()
#7 0x0000000000c785e8 in antlr::TokenBuffer::get_nth_active_token_index(unsigned long) ()
#8 0x0000000000c78375 in antlr::TokenBuffer::LA(unsigned int) ()
#9 0x000000000088a052 in scout_parser_cpp_generated::assign_initializer_or_pure_default_deleted(bool, a_type_specification&) ()
#10 0x000000000088c939 in scout_parser_cpp_generated::statement() ()
#11 0x000000000087e44a in scout_parser_cpp_generated::statement_block(bool, a_source_point&) ()
#12 0x000000000088c2ba in scout_parser_cpp_generated::compound_statement(bool, a_source_point&) ()
#13 0x0000000000889d6c in scout_parser_cpp_generated::function_body(an_identifier const&, a_source_point&) ()
#14 0x00000000008823b9 in scout_parser_cpp_generated::init_declarator_list_or_function_definition(a_source_point const&, a_source_point&, a_type_specification&, a_declaration_info const&) ()
#15 0x000000000087d0c3 in scout_parser_cpp_generated::simple_declaration(a_type_specification&, antlr::TokenRefCount<antlr::Token>, a_declaration_info const&) ()
#16 0x0000000000878941 in scout_parser_cpp_generated::property_or_event_or_simple_declaration(a_type_specification&, antlr::TokenRefCount<antlr::Token>, a_declaration_info const&) ()
#17 0x0000000000877858 in scout_parser_cpp_generated::general_declaration(a_type_specification&, antlr::TokenRefCount<antlr::Token>, a_declaration_info const&) ()
#18 0x00000000008770c8 in scout_parser_cpp_generated::general_declaration_with_error_recovery_inner(a_type_specification&, antlr::TokenRefCount<antlr::Token>, a_declaration_info const&) ()
#19 0x0000000000876e61 in scout_parser_cpp_generated::general_declaration_with_error_recovery(a_type_specification&, antlr::TokenRefCount<antlr::Token>, a_declaration_info const&) ()
#20 0x000000000087652b in scout_parser_cpp_generated::declaration(antlr::TokenRefCount<antlr::Token>, a_declaration_info const&, bool) ()
#21 0x00000000008760d9 in scout_parser_cpp_generated::declarations(bool) ()
#22 0x0000000000853bba in scout_parser_base<scout_parser_cpp, scout_parser_cpp_generated, scout_parser_cpp_generatedTokenTypes>::translation_unit() ()
#23 0x000000000085132c in run_tag_parser() ()
#24 0x0000000000bc1039 in process_translation_unit(char const*, int, an_exported_template_file*) ()
#25 0x00000000008a3527 in cfe_main(int, char**) ()
#26 0x0000000000be5966 in cfe_main_exception_handler(int, char**) ()
#27 0x00000000008a3636 in edg_main(int, char**) ()
#28 0x0000000000853645 in antlr_parse_routine() ()
#29 0x0000000000e6352a in msvc::thread_helper_t::thread_entry(void*) ()
#30 0x00007f404828c54d in start_thread (arg=<optimized out>) at pthread_create.c:442
#31 0x00007f4048311874 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
registers:
rax 0x1 1
rbx 0x9c 156
rcx 0x0 0
rdx 0x7f3fc6ffb7a4 139911898314660
rsi 0x169b498 23704728
rdi 0x7f3fb02e9b21 139911515511585
rbp 0x1 0x1
rsp 0x7f3fc6ffb750 0x7f3fc6ffb750
r8 0x0 0
r9 0x7e 126
r10 0x7f3fb0003d91 139911512472977
r11 0x20 32
r12 0x7f3fc6ffb880 139911898314880
r13 0x0 0
r14 0x0 0
r15 0x7f3fc6ffb800 139911898314752
rip 0xac482c 0xac482c <conv_line_loc_to_source_pos(char const*, a_source_position*)+108>
eflags 0x10246 [ PF ZF IF RF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
likely problematic location:
(gdb) print (char*)$r10
$1 = 0x7f3fb0003d91 " \"dillo\\0\";"
This line
expected_string = L"abc\xfffc""d\xfffc""efg";
in dlls/riched20/tests/richole.c is also problematic.
Hi @openglfreak . Thanks for reporting this. I'm able to repro the issue with VS (we share the IntelliSense implementation with VS). I've opened an issue against VS internally.
Hi, I stumbled upon the same problem when I open llvm-project. The crash occures while tag parsing clang/test/SemaCXX/static-assert.cpp containing:
static_assert(false, L"\x1ff" "0\x123" "fx\xfffff" "goop"); // expected-error {{static assertion failed: L"\x1FF""0\x123""fx\xFFFFFgoop"}}
Additional info
- OS and Version: MacOS 12.4 Apple M1
- VS Code Version: 1.69.2 (Universal) arm64
- C/C++ Extension Version: v1.11.4
Click to expand backtrace
(lldb) bt all
thread #1, queue = 'com.apple.main-thread'
frame #0: 0x000000018c5109ec libsystem_kernel.dylib`__read_nocancel + 8
frame #1: 0x000000018c43e714 libsystem_c.dylib`__sread + 24
frame #2: 0x000000018c419618 libsystem_c.dylib`_sread + 32
frame #3: 0x000000018c4195ac libsystem_c.dylib`__srefill1 + 36
frame #4: 0x000000018c434a78 libsystem_c.dylib`__srget + 24
frame #5: 0x000000018c442ba0 libsystem_c.dylib`getc + 72
frame #6: 0x000000018c4bb81c libc++.1.dylib`std::__1::__stdinbuf<char>::__getchar(bool) + 160
frame #7: 0x00000001041097f4 cpptools`std::__1::basic_istream<char, std::__1::char_traits<char> >& std::__1::getline<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char) + 148
frame #8: 0x00000001040cd0e8 cpptools`vscode::message_handler::main_loop() + 1472
frame #9: 0x00000001040c9994 cpptools`main + 288
frame #10: 0x000000010568908c dyld`start + 520
thread #2
frame #0: 0x000000018c514c20 libsystem_kernel.dylib`kevent + 8
frame #1: 0x00000001048c3f5c cpptools`uv__io_poll + 724
frame #2: 0x00000001048bd5c4 cpptools`uv_run + 372
frame #3: 0x000000010488da70 cpptools`msvc::loop_t::run_loop() + 64
frame #4: 0x0000000104890b10 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: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #6: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
thread #3
frame #0: 0x000000018c512270 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x000000018c54c83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000018c49b284 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
frame #3: 0x00000001040b2434 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: 0x00000001041cbb34 cpptools`vscode::thread_pool::do_work(unsigned long) + 340
frame #5: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #6: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
thread #4
frame #0: 0x000000018c512270 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x000000018c54c83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000018c49b284 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
frame #3: 0x00000001040b2434 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: 0x00000001041cbb34 cpptools`vscode::thread_pool::do_work(unsigned long) + 340
frame #5: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #6: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
thread #5
frame #0: 0x000000018c512270 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x000000018c54c83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000018c49b284 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
frame #3: 0x00000001040b2434 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: 0x00000001041cbb34 cpptools`vscode::thread_pool::do_work(unsigned long) + 340
frame #5: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #6: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
thread #6
frame #0: 0x000000018c512270 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x000000018c54c83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000018c49b284 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
frame #3: 0x00000001040b2434 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: 0x00000001041cbb34 cpptools`vscode::thread_pool::do_work(unsigned long) + 340
frame #5: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #6: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
thread #7
frame #0: 0x000000018c512270 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x000000018c54c83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000018c49b284 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
frame #3: 0x00000001040b2434 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: 0x00000001041cbb34 cpptools`vscode::thread_pool::do_work(unsigned long) + 340
frame #5: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #6: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
thread #8
frame #0: 0x000000018c512270 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x000000018c54c83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000018c49b284 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
frame #3: 0x00000001040b2434 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: 0x00000001041cbb34 cpptools`vscode::thread_pool::do_work(unsigned long) + 340
frame #5: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #6: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
thread #9
frame #0: 0x000000018c512270 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x000000018c54c83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000018c49b284 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
frame #3: 0x00000001040b2434 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: 0x00000001041cbb34 cpptools`vscode::thread_pool::do_work(unsigned long) + 340
frame #5: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #6: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
thread #10
frame #0: 0x000000018c512270 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x000000018c54c83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000018c49b284 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
frame #3: 0x00000001040b2434 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: 0x00000001041cbb34 cpptools`vscode::thread_pool::do_work(unsigned long) + 340
frame #5: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #6: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
thread #11
frame #0: 0x000000018c512270 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x000000018c54c83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000018c49b320 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: 0x00000001040b27e8 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: 0x00000001041cd418 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: 0x00000001041cd2ec cpptools`msvc::thread_t::invoker_t<vscode::thread_pool::thread_pool()::$_0>::invoke() + 164
frame #6: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #7: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
thread #12
frame #0: 0x000000018c514c20 libsystem_kernel.dylib`kevent + 8
frame #1: 0x00000001048c3f5c cpptools`uv__io_poll + 724
frame #2: 0x00000001048bd5c4 cpptools`uv_run + 372
frame #3: 0x000000010488da70 cpptools`msvc::loop_t::run_loop() + 64
frame #4: 0x0000000104890b10 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: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #6: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
thread #13
frame #0: 0x000000018c512270 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x000000018c54c83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000018c49b320 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: 0x000000010413a704 cpptools`vscode::message_deque<vscode::vscode_client_message, false>::try_pop_front(vscode::vscode_client_message&, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000l> >) + 156
frame #4: 0x000000010413994c cpptools`msvc::thread_t::invoker_t<vscode::message_handler::main_loop()::$_0>::invoke() + 308
frame #5: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #6: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
thread #14
frame #0: 0x000000018c512270 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x000000018c54c83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000018c49b284 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
frame #3: 0x000000010413abe0 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: 0x000000010413aaf8 cpptools`msvc::thread_t::invoker_t<vscode::message_handler::main_loop()::$_1>::invoke() + 48
frame #5: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #6: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
thread #15
frame #0: 0x000000018c512270 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x000000018c54c83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000018c49b284 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
frame #3: 0x000000010413c21c cpptools`vscode::message_deque<vscode::folding_ranges_params, false>::pop_impl(bool) + 92
frame #4: 0x000000010413c054 cpptools`std::__1::__function::__func<vscode::message_handler::main_loop()::$_8, std::__1::allocator<vscode::message_handler::main_loop()::$_8>, void ()>::operator()() + 80
frame #5: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #6: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
thread #16
frame #0: 0x000000018c512270 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x000000018c54c83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000018c49b284 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
frame #3: 0x00000001046f2bdc cpptools`perform_antlr_parse(int, char const**, char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&, edge::parse_lang_e, a_scout_parser_interface&) + 1120
frame #4: 0x00000001046f35f0 cpptools`tag_parse(unsigned long, char const**, char const*, char const*, edge::parse_lang_e, snapshot::snapshot_session_t, a_scout_parser_interface*) + 2348
frame #5: 0x00000001041f1fd0 cpptools`parser::tag_parse(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<char const*, std::__1::allocator<char const*> >&, code_store::a_store_tag_client&) + 360
frame #6: 0x00000001041f1058 cpptools`parser::update_file_if_needed(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool, bool, code_store::a_record_id<code_store::a_file_tag>&, bool) + 2968
frame #7: 0x00000001041d819c cpptools`browse_engine::parse_file(unsigned long, char const*, code_store::a_record_id<code_store::a_file_tag> const&, std::__1::unordered_set<code_store::a_record_id<code_store::a_file_tag>, std::__1::hash<code_store::a_record_id<code_store::a_file_tag> >, std::__1::equal_to<code_store::a_record_id<code_store::a_file_tag> >, std::__1::allocator<code_store::a_record_id<code_store::a_file_tag> > >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, parser&, std::__1::function<void ()>&&, std::__1::shared_ptr<browse_include_paths> const&, bool) + 1316
frame #8: 0x00000001041d79cc cpptools`browse_engine::parse_root() + 584
frame #9: 0x0000000104102a98 cpptools`vscode::message_handler::parse_root(bool) + 3016
frame #10: 0x000000010413afec cpptools`std::__1::__function::__func<vscode::message_handler::main_loop()::$_6, std::__1::allocator<vscode::message_handler::main_loop()::$_6>, void ()>::operator()() + 356
frame #11: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #12: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
thread #17
frame #0: 0x000000018c512270 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x000000018c54c83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000018c49b284 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
frame #3: 0x000000010413be30 cpptools`vscode::message_deque<int, false>::pop_impl(bool) + 84
frame #4: 0x000000010413bd58 cpptools`std::__1::__function::__func<vscode::message_handler::main_loop()::$_7, std::__1::allocator<vscode::message_handler::main_loop()::$_7>, void ()>::operator()() + 52
frame #5: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #6: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
thread #18
frame #0: 0x000000018c512270 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x000000018c54c83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000018c49b284 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
frame #3: 0x000000010413c960 cpptools`vscode::message_deque<vscode::vscode_client_message, false>::pop_impl(bool) + 96
frame #4: 0x000000010413c818 cpptools`std::__1::__function::__func<vscode::message_handler::main_loop()::$_9, std::__1::allocator<vscode::message_handler::main_loop()::$_9>, void ()>::operator()() + 68
frame #5: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #6: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
thread #19
frame #0: 0x000000018c512270 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x000000018c54c83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000018c49b284 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
frame #3: 0x000000010413c960 cpptools`vscode::message_deque<vscode::vscode_client_message, false>::pop_impl(bool) + 96
frame #4: 0x000000010413cb18 cpptools`std::__1::__function::__func<vscode::message_handler::main_loop()::$_10, std::__1::allocator<vscode::message_handler::main_loop()::$_10>, void ()>::operator()() + 68
frame #5: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #6: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
thread #20
frame #0: 0x000000018c512270 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x000000018c54c83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000018c49b284 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
frame #3: 0x000000010413d0dc cpptools`vscode::message_deque<vscode::message_handler::parse_file_entry, true>::pop_impl(bool) + 92
frame #4: 0x000000010413ccc8 cpptools`std::__1::__function::__func<vscode::message_handler::main_loop()::$_11, std::__1::allocator<vscode::message_handler::main_loop()::$_11>, void ()>::operator()() + 112
frame #5: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #6: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
thread #21
frame #0: 0x000000018c512270 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x000000018c54c83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000018c49b284 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
frame #3: 0x000000010413c960 cpptools`vscode::message_deque<vscode::vscode_client_message, false>::pop_impl(bool) + 96
frame #4: 0x000000010413d618 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: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #6: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
thread #22
frame #0: 0x000000018c512270 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x000000018c54c83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000018c49b320 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: 0x000000010413d9dc cpptools`vscode::message_deque<int, false>::pop_impl(bool, int&, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000l> >) + 148
frame #4: 0x000000010413d890 cpptools`std::__1::__function::__func<vscode::message_handler::main_loop()::$_13, std::__1::allocator<vscode::message_handler::main_loop()::$_13>, void ()>::operator()() + 316
frame #5: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #6: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
thread #23
frame #0: 0x000000018c512270 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x000000018c54c83c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000018c49b284 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
frame #3: 0x00000001040b2434 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: 0x000000010413dd2c cpptools`std::__1::__function::__func<vscode::message_handler::main_loop()::$_14, std::__1::allocator<vscode::message_handler::main_loop()::$_14>, void ()>::operator()() + 196
frame #5: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #6: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
* thread #25, stop reason = EXC_BAD_ACCESS (code=1, address=0x30)
* frame #0: 0x00000001045998ac cpptools`conv_line_loc_to_source_pos(char const*, a_source_position*) + 224
frame #1: 0x00000001045b4808 cpptools`conv_single_wide_char(a_char_conversion_state*, int, unsigned long*, unsigned long) + 232
frame #2: 0x00000001045b4b7c cpptools`conv_string_literal(char const*, char const*, int, unsigned long, an_error_code*, char const**, int) + 732
frame #3: 0x00000001045b4f64 cpptools`concat_string_literals(a_token_cache*, unsigned char, a_cached_token*) + 348
frame #4: 0x00000001045a2a40 cpptools`concat_adjacent_string_literals(int) + 2680
frame #5: 0x0000000104590370 cpptools`get_token() + 8940
frame #6: 0x00000001046f3f38 cpptools`a_scout_parser_token_stream<scout_parser_cpp>::nextToken() + 64
frame #7: 0x0000000104748aa4 cpptools`antlr::TokenBuffer::get_nth_active_token_index(unsigned long) + 128
frame #8: 0x000000010474888c cpptools`antlr::TokenBuffer::LT(unsigned int) + 80
frame #9: 0x000000010472d2c0 cpptools`scout_parser_base<scout_parser_cpp, scout_parser_cpp_generated, scout_parser_cpp_generatedTokenTypes>::synch_to_stop_tokens(a_stop_token_array<scout_parser_cpp_generatedTokenTypes>*, bool, bool, bool) + 764
frame #10: 0x000000010472d6e4 cpptools`scout_parser_base<scout_parser_cpp, scout_parser_cpp_generated, scout_parser_cpp_generatedTokenTypes>::skip_and_match(int, int, bool, a_stop_token_array<scout_parser_cpp_generatedTokenTypes>*) + 600
frame #11: 0x0000000104714ff8 cpptools`scout_parser_cpp_generated::general_declaration(a_type_specification&, antlr::TokenRefCount<antlr::Token>, a_declaration_info const&) + 520
frame #12: 0x0000000104714980 cpptools`scout_parser_cpp_generated::general_declaration_with_error_recovery_inner(a_type_specification&, antlr::TokenRefCount<antlr::Token>, a_declaration_info const&) + 328
frame #13: 0x0000000104714540 cpptools`scout_parser_cpp_generated::general_declaration_with_error_recovery(a_type_specification&, antlr::TokenRefCount<antlr::Token>, a_declaration_info const&) + 340
frame #14: 0x0000000104713ba0 cpptools`scout_parser_cpp_generated::declaration(antlr::TokenRefCount<antlr::Token>, a_declaration_info const&, bool) + 632
frame #15: 0x000000010471378c cpptools`scout_parser_cpp_generated::declarations(bool) + 172
frame #16: 0x00000001046f24ec cpptools`scout_parser_base<scout_parser_cpp, scout_parser_cpp_generated, scout_parser_cpp_generatedTokenTypes>::translation_unit() + 72
frame #17: 0x00000001046f217c cpptools`run_tag_parser() + 156
frame #18: 0x0000000104685b80 cpptools`process_translation_unit(char const*, int, an_exported_template_file*) + 912
frame #19: 0x0000000104363f98 cpptools`cfe_main(int, char**) + 136
frame #20: 0x00000001046abf08 cpptools`cfe_main_exception_handler(int, char**) + 12
frame #21: 0x0000000104364084 cpptools`edg_main(int, char**) + 12
frame #22: 0x00000001046f5c80 cpptools`antlr_parse_routine() + 488
frame #23: 0x00000001048aa7d0 cpptools`msvc::thread_helper_t::thread_entry(void*) + 28
frame #24: 0x000000018c54c26c libsystem_pthread.dylib`_pthread_start + 148
(lldb) print (char*)$x9
(char *) $5 = 0x000000013d5df601 "static_assert(false, L\"\\x1ff\" \"0\\x123\" \"fx\\xfffff\" \"goop\"); // expected-error {{static assertion failed: L\"\\x1FF\"\"0\\x123\"\"fx\\xFFFFFgoop\"}}"
This fix for this is expected in >=1.12.1
Fixed with https://github.com/microsoft/vscode-cpptools/releases/tag/v1.12.1