Skip to content

IntelliSense crash parsing file #11900

@dlenihan-latai

Description

@dlenihan-latai

Environment

  • OS and Version: macOS Ventura 13.4
  • VS Code Version: 1.85.2 (Universal)
  • C/C++ Extension Version: v1.18.5
  • If using SSH remote, specify OS of remote machine: Ubuntu 20.04.6 LTS

Bug Summary and Steps to Reproduce

Bug Summary: IntelliSense crashes when parsing a file.

Steps to reproduce:

  1. Create an empty file and add this content
template <typename T>
struct S
{
  // To see IntelliSense crash, look in VSCode > Terminal > Output > C/C++
  // You will see this message:
  //    IntelliSense process crash detected: handle_update_intellisense

  // Comment out next line to avoid IntelliSense crash.
  static constexpr auto lambda = [](auto) noexcept(true) {};
};

S<bool> s;
  1. Save file as intellisense_crash.cc
  2. Look at VSCode > Terminal > Output > C/C++ and see error message "IntelliSense process crash detected: handle_update_intellisense"

Expected behavior: IntelliSense does not crash for a file clang can compile.

NOTE: I realize this sample code does nothing. I took actual code that was crashing and minimized it to focus on just the code related to the IntelliSense crash so that I could give an easy repro and avoid issues with sharing company code. FYI: The clangd plugin does NOT crash in this code.

Configuration and Logs

NOTE: Removed anything related to our source code -> <SNIP>
=======================================================
c_cpp_properties.json
{
    "configurations": [
        {
            "name": "Linux",
            "compilerPath": "<SNIP>/llvm11/usr/bin/clang",
            "compilerArgs": [
                "<SNIP>"        
            ],
            "defines": [
                "<SNIP>"
            ],
            "includePath": [
                "<SNIP>"
            ],
            "cStandard": "c17",
            "cppStandard": "c++17",
            "intelliSenseMode": "linux-clang-x64"
        }
    ],
    "version": 4
}

=======================================================
C/C++: Log Diagnostics
-------- Diagnostics - 1/26/2024, 3:01:38 PM
Version: 1.18.5
Current Configuration:
{
    "name": "Linux",
    "compilerPath": "<SNIP>/llvm11/usr/bin/clang",
    "compilerArgs": [
        "<SNIP>"
    ],
    "defines": [
        "<SNIP>"
    ],
    "includePath": [
        "<SNIP>"
    ],
    "cStandard": "c17",
    "cppStandard": "c++17",
    "intelliSenseMode": "linux-clang-x64",
    "compilerPathIsExplicit": true,
    "cStandardIsExplicit": true,
    "cppStandardIsExplicit": true,
    "intelliSenseModeIsExplicit": true,
    "compilerPathInCppPropertiesJson": "<SNIP>/llvm11/usr/bin/clang",
    "mergeConfigurations": false,
    "browse": {
        "path": [
            "<SNIP>"
        ],
        "limitSymbolsToIncludedHeaders": true
    }
}
cpptools version (native): 1.18.3.0
Translation Unit Mappings:
[ <SNIP>/intellisense_crash.cc ]:
    <SNIP>/intellisense_crash.cc
Translation Unit Configurations:
[ <SNIP>/intellisense_crash.cc ]: not ready
    Process ID: 1347195
    Memory Usage: 0 MB
    Compiler Path: <SNIP>/llvm11/usr/bin/clang
    Includes:
        <SNIP>
    Defines:
        <SNIP>
    Standard Version: c++17
    IntelliSense Mode: linux-clang-x64
    Other Flags:
        --clang
        --clang_version=110100
Total Memory Usage: 0 MB
=======================================================
Language Server Logging
loggingLevel: Debug
LSP: (received) cpptools/initialize (id: 1)
LSP: (invoked) cpptools/initialize (id: 1)
cpptools version (TypeScript): 1.18.5
cpptools version (native): 1.18.3.0
Autocomplete is enabled.
Error squiggles are enabled if all header dependencies are resolved.
Hover is enabled.
IntelliSense Engine = default.
LSP: (received) cpptools/queryCompilerDefaults (id: 2)
LSP: (invoked) cpptools/queryCompilerDefaults (id: 2)
LSP: (received) cpptools/didChangeCppProperties (id: 3)
LSP: (received) cpptools/queryCompilerDefaults (id: 4)
Querying compiler for default C++ language standard using command line: '<SNIP>/llvm11/usr/bin/clang' -x c++ -E -dM /dev/null
Querying compiler for default C language standard using command line: '<SNIP>/llvm11/usr/bin/clang' -x c -E -dM /dev/null
Querying compiler for default C++ language standard using command line: /usr/bin/clang -x c++ -E -dM /dev/null
Detected language standard version: c++17
Querying compiler's default target using command line: "/usr/bin/clang" -dumpmachine
Compiler returned default target value: x86_64-pc-linux-gnu
Compiler query command line: /usr/bin/clang -std=c17 -m64 -Wp,-v -fno-blocks -E -dM -x c /dev/null
Attempting to get defaults from C compiler in "compilerPath" property: '/usr/bin/clang'
Compiler query command line: /usr/bin/clang -std=c++17 -m64 -Wp,-v -fno-blocks -E -dM -x c++ /dev/null
Attempting to get defaults from C++ compiler in "compilerPath" property: '/usr/bin/clang'
LSP: (invoked) cpptools/didChangeCppProperties (id: 3)
Code browsing service initialized
Querying compiler for default C++ language standard using command line: <SNIP>/llvm11/usr/bin/clang -x c++ -E -dM /dev/null
Detected language standard version: c++14
Querying compiler's default target using command line: "<SNIP>/llvm11/usr/bin/clang" -dumpmachine
Compiler returned default target value: x86_64-unknown-linux-gnu
Compiler query command line: <SNIP>/llvm11/usr/bin/clang -pipe -g0 -O3 -std=gnu++1z -no-canonical-prefixes -nostdinc -nostdinc++ -fcolor-diagnostics -fdata-sections -ffp-contract=fast -ffunction-sections -fno-omit-frame-pointer -fno-strict-aliasing -fPIC -march=haswell -Wall -Wextra -Wno-builtin-macro-redefined -Wno-defaulted-function-deleted -Wno-delete-non-abstract-non-virtual-dtor -Wno-error=deprecated-declarations -Wno-implicit-int-float-conversion -Wno-inconsistent-missing-override -Wno-gnu-string-literal-operator-template -Wno-missing-braces -Wno-missing-field-initializers -Wno-sign-compare -Wno-sign-conversion -Wno-unknown-pragmas -Wno-unused-parameter -Wno-unused-result -Wno-non-virtual-dtor -Wno-writable-strings -Wself-assign -Wthread-safety -Wunreachable-code -Wunused-function -m64 -Wp,-v -fno-blocks -E -dM -x c++ /dev/null
Attempting to get defaults from C++ compiler in "compilerPath" property: '<SNIP>/llvm11/usr/bin/clang'
Compiler query command line: <SNIP>/llvm11/usr/bin/clang -pipe -g0 -O3 -no-canonical-prefixes -nostdinc -nostdinc++ -fcolor-diagnostics -fdata-sections -ffp-contract=fast -ffunction-sections -fno-omit-frame-pointer -fno-strict-aliasing -fPIC -march=haswell -Wall -Wextra -Wno-builtin-macro-redefined -Wno-defaulted-function-deleted -Wno-delete-non-abstract-non-virtual-dtor -Wno-error=deprecated-declarations -Wno-implicit-int-float-conversion -Wno-inconsistent-missing-override -Wno-gnu-string-literal-operator-template -Wno-missing-braces -Wno-missing-field-initializers -Wno-sign-compare -Wno-sign-conversion -Wno-unknown-pragmas -Wno-unused-parameter -Wno-unused-result -Wno-non-virtual-dtor -Wno-writable-strings -Wself-assign -Wthread-safety -Wunreachable-code -Wunused-function -std=c17 -m64 -Wp,-v -fno-blocks -E -dM -x c /dev/null
Attempting to get defaults from C compiler in "compilerPath" property: '<SNIP>/llvm11/usr/bin/clang'
  <SNIP>
LSP: (invoked) cpptools/queryCompilerDefaults (id: 4)
Querying compiler for default C++ language standard using command line: '<SNIP>/llvm11/usr/bin/clang' -x c++ -E -dM /dev/null
Discovering files...
Querying compiler for default C language standard using command line: '<SNIP>/llvm11/usr/bin/clang' -x c -E -dM /dev/null
  <SNIP>
LSP: (received) cpptools/didChangeCppProperties (id: 5)
LSP: (invoked) cpptools/didChangeCppProperties (id: 5)
LSP: (received) textDocument/didOpen: file:///<SNIP>/intellisense_crash.cc
LSP: (invoked) textDocument/didOpen: file:///<SNIP>/intellisense_crash.cc
  tag parsing file: <SNIP>/intellisense_crash.cc
sending compilation args for <SNIP>/intellisense_crash.cc
  include: <SNIP>
  define: <SNIP>
  other: --clang
  other: --clang_version=110100
  stdver: c++17
  intelliSenseMode: linux-clang-x64
LSP: (received) cpptools/getInlayHints: file:///<SNIP>/intellisense_crash.cc (id: 6)
LSP: (invoked) cpptools/getInlayHints: file:///<SNIP>/intellisense_crash.cc (id: 6)
LSP: (received) cpptools/getDocumentSymbols: file:///<SNIP>/intellisense_crash.cc (id: 7)
LSP: (invoked) cpptools/getDocumentSymbols: file:///<SNIP>/intellisense_crash.cc (id: 7)
LSP: (received) cpptools/getFoldingRanges: file:///<SNIP>/intellisense_crash.cc (id: 8)
LSP: (invoked) cpptools/getFoldingRanges: file:///<SNIP>/intellisense_crash.cc (id: 8)
LSP: (received) cpptools/activeDocumentChange: file:///<SNIP>/intellisense_crash.cc
LSP: (invoked) cpptools/activeDocumentChange: file:///<SNIP>/intellisense_crash.cc
LSP: (received) cpptools/textEditorSelectionChange
LSP: $/cancelRequest (cpptools/getDocumentSymbols, id: 7)
LSP: $/cancelRequest (<unknown/completed>, id: 8)
LSP: (invoked) cpptools/textEditorSelectionChange
Checking for syntax errors: /<SNIP>/intellisense_crash.cc
Queueing IntelliSense update for files in translation unit of: /<SNIP>/intellisense_crash.cc
LSP: (received) cpptools/getDocumentSymbols: file:///<SNIP>/intellisense_crash.cc (id: 9)
LSP: (invoked) cpptools/getDocumentSymbols: file:///<SNIP>/intellisense_crash.cc (id: 9)
LSP: (received) cpptools/getSemanticTokens: file:///<SNIP>/intellisense_crash.cc (id: 10)
LSP: (invoked) cpptools/getSemanticTokens: file:///<SNIP>/intellisense_crash.cc (id: 10)
LSP: (received) cpptools/getDocumentSymbols: file:///<SNIP>/intellisense_crash.cc (id: 11)
LSP: (invoked) cpptools/getDocumentSymbols: file:///<SNIP>/intellisense_crash.cc (id: 11)
LSP: (received) cpptools/getFoldingRanges: file:///<SNIP>/intellisense_crash.cc (id: 12)
LSP: (invoked) cpptools/getFoldingRanges: file:///<SNIP>/intellisense_crash.cc (id: 12)
IntelliSense process crash detected: handle_update_intellisense
Checking for syntax errors: /<SNIP>/intellisense_crash.cc
Update IntelliSense time (sec): 0.352
LSP: $/cancelRequest (cpptools/getInlayHints, id: 6)
LSP: (received) cpptools/getInlayHints: file:///<SNIP>/intellisense_crash.cc (id: 13)
LSP: (invoked) cpptools/getInlayHints: file:///<SNIP>/intellisense_crash.cc (id: 13)
LSP: Request canceled by server (<unknown/completed>, code: -32802, id: 6)
LSP: (received) cpptools/pauseCodeAnalysis
LSP: (invoked) cpptools/pauseCodeAnalysis
LSP: (received) cpptools/resumeCodeAnalysis
LSP: (invoked) cpptools/resumeCodeAnalysis
LSP: (received) cpptools/pauseCodeAnalysis
LSP: (invoked) cpptools/pauseCodeAnalysis

Other Extensions

N/A

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Language ServiceVisual StudioInherited from Visual StudiobugfixedCheck the Milestone for the release in which the fix is or will be available.reliabilityverifiedBug has been reproduced

    Type

    Projects

    Status

    Done

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions