Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parser crashes on unusual wide-string literals #9538

Closed
openglfreak opened this issue Jul 4, 2022 · 5 comments
Closed

Parser crashes on unusual wide-string literals #9538

openglfreak opened this issue Jul 4, 2022 · 5 comments
Labels
bug fixed Check the Milestone for the release in which the fix is or will be available. Language Service Visual Studio Inherited from Visual Studio
Milestone

Comments

@openglfreak
Copy link

openglfreak commented Jul 4, 2022

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

  1. clone https://github.com/wine-mirror/wine/ (or https://source.winehq.org/git/wine.git/)
  2. open the folder in Visual Studio Code
  3. 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

-------- 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\";"
@openglfreak
Copy link
Author

This line

  expected_string = L"abc\xfffc""d\xfffc""efg";

in dlls/riched20/tests/richole.c is also problematic.

@Colengms Colengms self-assigned this Jul 5, 2022
@Colengms
Copy link
Collaborator

Colengms commented Jul 5, 2022

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.

@Colengms Colengms added bug Language Service Visual Studio Inherited from Visual Studio labels Jul 5, 2022
@Colengms Colengms added this to the Tracking milestone Jul 5, 2022
@Colengms Colengms removed their assignment Jul 5, 2022
@kon72
Copy link

kon72 commented Jul 28, 2022

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\"}}"

@Colengms
Copy link
Collaborator

Colengms commented Aug 8, 2022

This fix for this is expected in >=1.12.1

@Colengms Colengms modified the milestones: Tracking, 1.12.1 Aug 8, 2022
@Colengms Colengms added the fixed Check the Milestone for the release in which the fix is or will be available. label Aug 8, 2022
@sean-mcmanus
Copy link
Collaborator

@github-actions github-actions bot locked and limited conversation to collaborators Oct 15, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug fixed Check the Milestone for the release in which the fix is or will be available. Language Service Visual Studio Inherited from Visual Studio
Projects
None yet
Development

No branches or pull requests

4 participants