microsoft / vscode-cpptools

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

Crashing intellisense in Emscripten project #12760

Closed CelDaemon closed 1 month ago

CelDaemon commented 1 month ago

Environment

Bug Summary and Steps to Reproduce

Bug Summary: While in an emscripten project, including certain headers ( and being a common cases), the intellisense completely stops working. This seems to be because of the intellisense server continuously crashing, but have been unable to debug the reason why.

Steps to reproduce:

  1. Set the correct emscripten system include paths.
  2. Select the clang++ compiler.
  3. Set the target to wasm32-unknown-emscripten, and define EMSCRIPTEN.
  4. Create a cpp source file, and include .
  5. The intellisense and smart autocomplete should now be broken.

Expected behavior: The intellisense server correctly shows the available types, and doesn't crash

Configuration and Logs

{
    "version": 4,
    "configurations": [
        {
            "cppStandard": "c++23",
            "includePath": [
                "D:\\CODE\\emsdk\\upstream\\lib\\clang\\20\\include",
                "D:\\CODE\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/wasm32-emscripten/c++/v1",
                "D:\\CODE\\emsdk\\upstream\\emscripten\\cache\\sysroot/include/c++/v1",
                "${workspaceFolder}/src/**"
            ],
            "defines": [
                "EMSCRIPTEN",
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "D:\\CODE\\emsdk\\upstream\\bin\\clang++.exe",
            "intelliSenseMode": "linux-clang-x64",
            "compilerArgs": [
                 "-target", "wasm32-unknown-emscripten"
            ],
            "name": "Emscripten"
        }
    ]
}

-------- Diagnostics - 9/24/2024, 10:00:35 AM
Version: 1.22.4
Current Configuration:
{
    "cppStandard": "c++23",
    "includePath": [
        "D:/CODE/emsdk/upstream/lib/clang/20/include",
        "D:/CODE/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1",
        "D:/CODE/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1",
        "d:/CODE/emscripten-gl/src/**"
    ],
    "defines": [
        "EMSCRIPTEN",
        "_DEBUG",
        "UNICODE",
        "_UNICODE"
    ],
    "compilerPath": "D:\\CODE\\emsdk\\upstream\\bin\\clang++.exe",
    "intelliSenseMode": "linux-clang-x64",
    "compilerArgs": [
        "-target",
        "wasm32-unknown-emscripten"
    ],
    "name": "Emscripten",
    "compilerPathIsExplicit": true,
    "cStandardIsExplicit": false,
    "cppStandardIsExplicit": true,
    "intelliSenseModeIsExplicit": true,
    "compilerPathInCppPropertiesJson": "D:\\CODE\\emsdk\\upstream\\bin\\clang++.exe",
    "mergeConfigurations": false,
    "browse": {
        "path": [
            "D:/CODE/emsdk/upstream/lib/clang/20/include",
            "D:/CODE/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1",
            "D:/CODE/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1",
            "d:/CODE/emscripten-gl/src/**",
            "${workspaceFolder}"
        ],
        "limitSymbolsToIncludedHeaders": true
    }
}
Modified Settings:
{
    "C_Cpp.loggingLevel": "Debug"
}
Additional Tracked Settings:
{
    "editorTabSize": 4,
    "editorInsertSpaces": true,
    "editorAutoClosingBrackets": "languageDefined",
    "filesEncoding": "utf8",
    "filesAssociations": {
        "__config": "cpp",
        "__node_handle": "cpp",
        "optional": "cpp",
        "version": "cpp",
        "stdexcept": "cpp",
        "__bit_reference": "cpp",
        "__hash_table": "cpp",
        "__locale": "cpp",
        "__split_buffer": "cpp",
        "__threading_support": "cpp",
        "__tree": "cpp",
        "__verbose_abort": "cpp",
        "array": "cpp",
        "bitset": "cpp",
        "cctype": "cpp",
        "clocale": "cpp",
        "cmath": "cpp",
        "cstdarg": "cpp",
        "cstddef": "cpp",
        "cstdint": "cpp",
        "cstdio": "cpp",
        "cstdlib": "cpp",
        "cstring": "cpp",
        "ctime": "cpp",
        "cwchar": "cpp",
        "cwctype": "cpp",
        "deque": "cpp",
        "execution": "cpp",
        "memory": "cpp",
        "initializer_list": "cpp",
        "ios": "cpp",
        "iosfwd": "cpp",
        "iostream": "cpp",
        "istream": "cpp",
        "limits": "cpp",
        "locale": "cpp",
        "map": "cpp",
        "mutex": "cpp",
        "new": "cpp",
        "ostream": "cpp",
        "print": "cpp",
        "queue": "cpp",
        "ratio": "cpp",
        "stack": "cpp",
        "streambuf": "cpp",
        "string": "cpp",
        "string_view": "cpp",
        "tuple": "cpp",
        "typeinfo": "cpp",
        "unordered_map": "cpp",
        "variant": "cpp",
        "vector": "cpp",
        "algorithm": "cpp",
        "any": "cpp",
        "charconv": "cpp",
        "forward_list": "cpp",
        "iomanip": "cpp",
        "span": "cpp",
        "sstream": "cpp",
        "valarray": "cpp",
        "fstream": "cpp",
        "utility": "cpp",
        "expected": "cpp",
        "type_traits": "cpp"
    },
    "filesExclude": {
        "**/.git": true,
        "**/.svn": true,
        "**/.hg": true,
        "**/CVS": true,
        "**/.DS_Store": true,
        "**/Thumbs.db": true
    },
    "filesAutoSaveAfterDelay": false,
    "editorInlayHintsEnabled": true,
    "editorParameterHintsEnabled": true,
    "searchExclude": {
        "**/node_modules": true,
        "**/bower_components": true,
        "**/*.code-search": true
    },
    "workbenchSettingsEditor": "ui"
}
cpptools version (native): 1.22.4.0
No active translation units.

------- Workspace parsing diagnostics -------
Number of files discovered (not excluded): 1278

loggingLevel: Debug
LSP: (received) cpptools/initialize (id: 1)
LSP: (invoked) cpptools/initialize (id: 1)
cpptools version (TypeScript): 1.22.4
cpptools version (native): 1.22.4.0
Autocomplete is enabled.
Error squiggles are enabled if all header dependencies are resolved.
Hover is enabled.
IntelliSense Engine = default.
LSP: Sending response (id: 1)
LSP: (received) cpptools/queryCompilerDefaults (id: 2)
LSP: (invoked) cpptools/queryCompilerDefaults (id: 2)
Compiler info database not connected - skipping load.
Compiler info database not connected - skipping load.
LSP: Sending response (id: 2)
LSP: (received) cpptools/queryCompilerDefaults (id: 3)
LSP: (invoked) cpptools/queryCompilerDefaults (id: 3)
Querying compiler for default C++ language standard using command line: D:\CODE\emsdk\upstream\bin\clang++.exe -x c++ -E -dM nul
LSP: (received) cpptools/didChangeCppProperties (id: 4)
LSP: (received) cpptools/didChangeSettings
LSP: (received) cpptools/didChangeSettings
LSP: Message ignored due to no registered handler: $/setTrace
LSP: (received) cpptools/didChangeSettings
Detected language standard version: c++14
Querying compiler's default target using command line: "D:\CODE\emsdk\upstream\bin\clang++.exe" -dumpmachine
Compiler returned default target value: x86_64-pc-windows-msvc
Compiler info database not connected - skipping load.
Compiler query command line: D:\CODE\emsdk\upstream\bin\clang++.exe -std=c17 -m64 -Wp,-v -fno-blocks -E -dM -x c nul
Attempting to get defaults from C compiler in "compilerPath" property: 'D:\CODE\emsdk\upstream\bin\clang++.exe'
Compiler info database not connected - skipping load.
Compiler query command line: D:\CODE\emsdk\upstream\bin\clang++.exe -std=c++14 -m64 -Wp,-v -fno-blocks -E -dM -x c++ nul
LSP: (received - deferred) cpptools/didChangeVisibleTextEditors
LSP: (received - deferred) textDocument/didOpen: file:///d%3A/CODE/emscripten-gl/src/util.cpp
LSP: (received - deferred) cpptools/didChangeVisibleTextEditors
LSP: (received - deferred) cpptools/didChangeVisibleTextEditors
LSP: (received - deferred) cpptools/didChangeActiveEditor: file:///d%3A/CODE/emscripten-gl/src/util.cpp
LSP: (received - deferred) cpptools/getCodeActions: file:///d%3A/CODE/emscripten-gl/src/util.cpp (id: 5)
LSP: (received - deferred) cpptools/getDocumentSymbols: file:///d%3A/CODE/emscripten-gl/src/util.cpp (id: 6)
LSP: (received - deferred) cpptools/didChangeTextEditorSelection
LSP: (received - deferred) cpptools/getFoldingRanges: file:///d%3A/CODE/emscripten-gl/src/util.cpp (id: 7)
LSP: (received - deferred) cpptools/getCodeActions: file:///d%3A/CODE/emscripten-gl/src/util.cpp (id: 8)
LSP: $/cancelRequest (cpptools/getCodeActions, id: 5)
Attempting to get defaults from C++ compiler in "compilerPath" property: 'D:\CODE\emsdk\upstream\bin\clang++.exe'
LSP: Sending response (id: 3)
LSP: (invoked) cpptools/didChangeCppProperties (id: 4)
Code browsing service initialized
Populating file name cache...
Loaded (gcc) compiler definition from database: D:\CODE\emsdk\upstream\bin\clang++.exe
Loaded cached compiler definition from storage D:\CODE\emsdk\upstream\bin\clang++.exe
Compiler query command line: D:\CODE\emsdk\upstream\bin\clang++.exe -target wasm32-unknown-emscripten -std=c17 -Wp,-v -fno-blocks -E -dM -x c nul
Loaded (gcc) compiler definition from database: D:\CODE\emsdk\upstream\bin\clang++.exe
Loaded cached compiler definition from storage D:\CODE\emsdk\upstream\bin\clang++.exe
  Unable to retrieve file system information for D:/CODE/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1. error = -1
  Folder: D:\CODE\EMSDK\UPSTREAM\LIB\CLANG\20\INCLUDE\ will be indexed
  Folder: D:\CODE\EMSDK\UPSTREAM\EMSCRIPTEN\CACHE\SYSROOT\INCLUDE\C++\V1\ will be indexed
  Folder: D:\CODE\EMSCRIPTEN-GL\ will be indexed
LSP: (queued) cpptools/didChangeVisibleTextEditors
LSP: (queued) textDocument/didOpen: file:///d%3A/CODE/emscripten-gl/src/util.cpp
LSP: (queued) cpptools/didChangeVisibleTextEditors
LSP: (queued) cpptools/didChangeVisibleTextEditors
LSP: (queued) cpptools/didChangeActiveEditor: file:///d%3A/CODE/emscripten-gl/src/util.cpp
LSP: (queued) cpptools/getCodeActions: file:///d%3A/CODE/emscripten-gl/src/util.cpp (id: 5)
LSP: (queued) cpptools/getDocumentSymbols: file:///d%3A/CODE/emscripten-gl/src/util.cpp (id: 6)
LSP: (queued) cpptools/didChangeTextEditorSelection
LSP: (queued) cpptools/getFoldingRanges: file:///d%3A/CODE/emscripten-gl/src/util.cpp (id: 7)
LSP: (queued) cpptools/getCodeActions: file:///d%3A/CODE/emscripten-gl/src/util.cpp (id: 8)
LSP: (invoked) cpptools/getDocumentSymbols: file:///d%3A/CODE/emscripten-gl/src/util.cpp (id: 6)
LSP: Sending response (id: 4)
LSP: (invoked) cpptools/didChangeSettings
Discovering files...
Autocomplete is enabled.
Error squiggles are enabled if all header dependencies are resolved.
Hover is enabled.
IntelliSense Engine = default.
Enhanced Colorization is enabled.
LSP: (invoked) cpptools/didChangeSettings
LSP: Sending response (id: 6)
Autocomplete is enabled.
Error squiggles are enabled if all header dependencies are resolved.
Hover is enabled.
IntelliSense Engine = default.
Enhanced Colorization is enabled.
LSP: (invoked) cpptools/didChangeSettings
Autocomplete is enabled.
Error squiggles are enabled if all header dependencies are resolved.
Hover is enabled.
IntelliSense Engine = default.
Enhanced Colorization is enabled.
LSP: (invoked) textDocument/didOpen: file:///d%3A/CODE/emscripten-gl/src/util.cpp
LSP: (invoked) cpptools/didChangeVisibleTextEditors
Unable to resolve include path: D:/CODE/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1
Enumerating files and directories from: D:\CODE\emscripten-gl\src
  Processing folder (recursive): D:\CODE\EMSDK\UPSTREAM\LIB\CLANG\20\INCLUDE\
  Processing folder (recursive): D:\CODE\EMSCRIPTEN-GL\
  Processing folder (recursive): D:\CODE\EMSDK\UPSTREAM\EMSCRIPTEN\CACHE\SYSROOT\INCLUDE\C++\V1\
Done populating filename cache. Elapsed time: 58 ms
Done enumerating files and directories from: D:\CODE\emscripten-gl\src (43ms)
Intellisense update pending for: file:///d%3A/CODE/emscripten-gl/src/util.cpp
Unable to resolve include path: D:/CODE/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1
LSP: (invoked) cpptools/didChangeActiveEditor: file:///d%3A/CODE/emscripten-gl/src/util.cpp
Unable to resolve include path: D:/CODE/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1
LSP: (invoked) cpptools/getCodeActions: file:///d%3A/CODE/emscripten-gl/src/util.cpp (id: 5)
LSP: (invoked) cpptools/didChangeTextEditorSelection
LSP: (invoked) cpptools/getFoldingRanges: file:///d%3A/CODE/emscripten-gl/src/util.cpp (id: 7)
LSP: (invoked) cpptools/getCodeActions: file:///d%3A/CODE/emscripten-gl/src/util.cpp (id: 8)
LSP: Sending response (id: 8)
LSP: Sending response (id: 7)
  Discovering files: 1278 file(s) processed
  0 file(s) removed from database
Done discovering files.
Parsing open files...
Populating include completion cache.
Unable to resolve include path: D:/CODE/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1
Parsing remaining files...
  Parsing: 0 files(s) processed
Done parsing remaining files.
IntelliSense update scheduled and TU acquisition started for: file:///d%3A/CODE/emscripten-gl/src/util.cpp
Unable to resolve include path: D:/CODE/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1
sending compilation args for D:\CODE\emscripten-gl\src\util.cpp
  include: D:/CODE/emsdk/upstream/lib/clang/20/include
  include: D:/CODE/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1
  include: D:/CODE/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1
  include: d:/CODE/emscripten-gl/src/**
  system include: D:\CODE\emsdk\upstream\lib\clang\20\include
  define: _GNU_SOURCE=1
  define: _ILP32=1
  define: __ATOMIC_ACQUIRE=2
  define: __ATOMIC_ACQ_REL=4
  define: __ATOMIC_CONSUME=1
  define: __ATOMIC_RELAXED=0
  define: __ATOMIC_RELEASE=3
  define: __ATOMIC_SEQ_CST=5
  define: __BIGGEST_ALIGNMENT__=16
  define: __BITINT_MAXWIDTH__=128
  define: __BOOL_WIDTH__=8
  define: __BYTE_ORDER__=__ORDER_LITTLE_ENDIAN__
  define: __CHAR16_TYPE__=unsigned short
  define: __CHAR32_TYPE__=unsigned int
  define: __CHAR_BIT__=8
  define: __CLANG_ATOMIC_BOOL_LOCK_FREE=2
  define: __CLANG_ATOMIC_CHAR16_T_LOCK_FREE=2
  define: __CLANG_ATOMIC_CHAR32_T_LOCK_FREE=2
  define: __CLANG_ATOMIC_CHAR8_T_LOCK_FREE=2
  define: __CLANG_ATOMIC_CHAR_LOCK_FREE=2
  define: __CLANG_ATOMIC_INT_LOCK_FREE=2
  define: __CLANG_ATOMIC_LLONG_LOCK_FREE=2
  define: __CLANG_ATOMIC_LONG_LOCK_FREE=2
  define: __CLANG_ATOMIC_POINTER_LOCK_FREE=2
  define: __CLANG_ATOMIC_SHORT_LOCK_FREE=2
  define: __CLANG_ATOMIC_WCHAR_T_LOCK_FREE=2
  define: __CONSTANT_CFSTRINGS__=1
  define: __DBL_DECIMAL_DIG__=17
  define: __DBL_DENORM_MIN__=4.9406564584124654e-324
  define: __DBL_DIG__=15
  define: __DBL_EPSILON__=2.2204460492503131e-16
  define: __DBL_HAS_DENORM__=1
  define: __DBL_HAS_INFINITY__=1
  define: __DBL_HAS_QUIET_NAN__=1
  define: __DBL_MANT_DIG__=53
  define: __DBL_MAX_10_EXP__=308
  define: __DBL_MAX_EXP__=1024
  define: __DBL_MAX__=1.7976931348623157e+308
  define: __DBL_MIN_10_EXP__=(-307)
  define: __DBL_MIN_EXP__=(-1021)
  define: __DBL_MIN__=2.2250738585072014e-308
  define: __DBL_NORM_MAX__=1.7976931348623157e+308
  define: __DECIMAL_DIG__=__LDBL_DECIMAL_DIG__
  define: __DEPRECATED=1
  define: __EMSCRIPTEN__=1
  define: __EXCEPTIONS=1
  define: __FINITE_MATH_ONLY__=0
  define: __FLOAT128__=1
  define: __FLT_DECIMAL_DIG__=9
  define: __FLT_DENORM_MIN__=1.40129846e-45F
  define: __FLT_DIG__=6
  define: __FLT_EPSILON__=1.19209290e-7F
  define: __FLT_HAS_DENORM__=1
  define: __FLT_HAS_INFINITY__=1
  define: __FLT_HAS_QUIET_NAN__=1
  define: __FLT_MANT_DIG__=24
  define: __FLT_MAX_10_EXP__=38
  define: __FLT_MAX_EXP__=128
  define: __FLT_MAX__=3.40282347e+38F
  define: __FLT_MIN_10_EXP__=(-37)
  define: __FLT_MIN_EXP__=(-125)
  define: __FLT_MIN__=1.17549435e-38F
  define: __FLT_NORM_MAX__=3.40282347e+38F
  define: __FLT_RADIX__=2
  define: __FPCLASS_NEGINF=0x0004
  define: __FPCLASS_NEGNORMAL=0x0008
  define: __FPCLASS_NEGSUBNORMAL=0x0010
  define: __FPCLASS_NEGZERO=0x0020
  define: __FPCLASS_POSINF=0x0200
  define: __FPCLASS_POSNORMAL=0x0100
  define: __FPCLASS_POSSUBNORMAL=0x0080
  define: __FPCLASS_POSZERO=0x0040
  define: __FPCLASS_QNAN=0x0002
  define: __FPCLASS_SNAN=0x0001
  define: __GCC_ATOMIC_BOOL_LOCK_FREE=2
  define: __GCC_ATOMIC_CHAR16_T_LOCK_FREE=2
  define: __GCC_ATOMIC_CHAR32_T_LOCK_FREE=2
  define: __GCC_ATOMIC_CHAR8_T_LOCK_FREE=2
  define: __GCC_ATOMIC_CHAR_LOCK_FREE=2
  define: __GCC_ATOMIC_INT_LOCK_FREE=2
  define: __GCC_ATOMIC_LLONG_LOCK_FREE=2
  define: __GCC_ATOMIC_LONG_LOCK_FREE=2
  define: __GCC_ATOMIC_POINTER_LOCK_FREE=2
  define: __GCC_ATOMIC_SHORT_LOCK_FREE=2
  define: __GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1
  define: __GCC_ATOMIC_WCHAR_T_LOCK_FREE=2
  define: __GCC_CONSTRUCTIVE_SIZE=64
  define: __GCC_DESTRUCTIVE_SIZE=64
  define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1=1
  define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2=1
  define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1
  define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8=1
  define: __GNUC_GNU_INLINE__=1
  define: __GNUC_MINOR__=2
  define: __GNUC_PATCHLEVEL__=1
  define: __GNUC__=4
  define: __GNUG__=4
  define: __GXX_ABI_VERSION=1002
  define: __GXX_EXPERIMENTAL_CXX0X__=1
  define: __GXX_RTTI=1
  define: __GXX_WEAK__=1
  define: __ILP32__=1
  define: __INT16_C_SUFFIX__=
  define: __INT16_FMTd__="hd"
  define: __INT16_FMTi__="hi"
  define: __INT16_MAX__=32767
  define: __INT16_TYPE__=short
  define: __INT32_C_SUFFIX__=
  define: __INT32_FMTd__="d"
  define: __INT32_FMTi__="i"
  define: __INT32_MAX__=2147483647
  define: __INT32_TYPE__=int
  define: __INT64_C_SUFFIX__=LL
  define: __INT64_FMTd__="lld"
  define: __INT64_FMTi__="lli"
  define: __INT64_MAX__=9223372036854775807LL
  define: __INT64_TYPE__=long long int
  define: __INT8_C_SUFFIX__=
  define: __INT8_FMTd__="hhd"
  define: __INT8_FMTi__="hhi"
  define: __INT8_MAX__=127
  define: __INT8_TYPE__=signed char
  define: __INTMAX_C_SUFFIX__=LL
  define: __INTMAX_FMTd__="lld"
  define: __INTMAX_FMTi__="lli"
  define: __INTMAX_MAX__=9223372036854775807LL
  define: __INTMAX_TYPE__=long long int
  define: __INTMAX_WIDTH__=64
  define: __INTPTR_FMTd__="ld"
  define: __INTPTR_FMTi__="li"
  define: __INTPTR_MAX__=2147483647L
  define: __INTPTR_TYPE__=long int
  define: __INTPTR_WIDTH__=32
  define: __INT_FAST16_FMTd__="hd"
  define: __INT_FAST16_FMTi__="hi"
  define: __INT_FAST16_MAX__=32767
  define: __INT_FAST16_TYPE__=short
  define: __INT_FAST16_WIDTH__=16
  define: __INT_FAST32_FMTd__="d"
  define: __INT_FAST32_FMTi__="i"
  define: __INT_FAST32_MAX__=2147483647
  define: __INT_FAST32_TYPE__=int
  define: __INT_FAST32_WIDTH__=32
  define: __INT_FAST64_FMTd__="lld"
  define: __INT_FAST64_FMTi__="lli"
  define: __INT_FAST64_MAX__=9223372036854775807LL
  define: __INT_FAST64_TYPE__=long long int
  define: __INT_FAST64_WIDTH__=64
  define: __INT_FAST8_FMTd__="hhd"
  define: __INT_FAST8_FMTi__="hhi"
  define: __INT_FAST8_MAX__=127
  define: __INT_FAST8_TYPE__=signed char
  define: __INT_FAST8_WIDTH__=8
  define: __INT_LEAST16_FMTd__="hd"
  define: __INT_LEAST16_FMTi__="hi"
  define: __INT_LEAST16_MAX__=32767
  define: __INT_LEAST16_TYPE__=short
  define: __INT_LEAST16_WIDTH__=16
  define: __INT_LEAST32_FMTd__="d"
  define: __INT_LEAST32_FMTi__="i"
  define: __INT_LEAST32_MAX__=2147483647
  define: __INT_LEAST32_TYPE__=int
  define: __INT_LEAST32_WIDTH__=32
  define: __INT_LEAST64_FMTd__="lld"
  define: __INT_LEAST64_FMTi__="lli"
  define: __INT_LEAST64_MAX__=9223372036854775807LL
  define: __INT_LEAST64_TYPE__=long long int
  define: __INT_LEAST64_WIDTH__=64
  define: __INT_LEAST8_FMTd__="hhd"
  define: __INT_LEAST8_FMTi__="hhi"
  define: __INT_LEAST8_MAX__=127
  define: __INT_LEAST8_TYPE__=signed char
  define: __INT_LEAST8_WIDTH__=8
  define: __INT_MAX__=2147483647
  define: __INT_WIDTH__=32
  define: __LDBL_DECIMAL_DIG__=36
  define: __LDBL_DENORM_MIN__=6.47517511943802511092443895822764655e-4966L
  define: __LDBL_DIG__=33
  define: __LDBL_EPSILON__=1.92592994438723585305597794258492732e-34L
  define: __LDBL_HAS_DENORM__=1
  define: __LDBL_HAS_INFINITY__=1
  define: __LDBL_HAS_QUIET_NAN__=1
  define: __LDBL_MANT_DIG__=113
  define: __LDBL_MAX_10_EXP__=4932
  define: __LDBL_MAX_EXP__=16384
  define: __LDBL_MAX__=1.18973149535723176508575932662800702e+4932L
  define: __LDBL_MIN_10_EXP__=(-4931)
  define: __LDBL_MIN_EXP__=(-16381)
  define: __LDBL_MIN__=3.36210314311209350626267781732175260e-4932L
  define: __LDBL_NORM_MAX__=1.18973149535723176508575932662800702e+4932L
  define: __LITTLE_ENDIAN__=1
  define: __LLONG_WIDTH__=64
  define: __LONG_LONG_MAX__=9223372036854775807LL
  define: __LONG_MAX__=2147483647L
  define: __LONG_WIDTH__=32
  define: __MEMORY_SCOPE_DEVICE=1
  define: __MEMORY_SCOPE_SINGLE=4
  define: __MEMORY_SCOPE_SYSTEM=0
  define: __MEMORY_SCOPE_WRKGRP=2
  define: __MEMORY_SCOPE_WVFRNT=3
  define: __NO_INLINE__=1
  define: __NO_MATH_ERRNO__=1
  define: __OBJC_BOOL_IS_BOOL=0
  define: __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES=3
  define: __OPENCL_MEMORY_SCOPE_DEVICE=2
  define: __OPENCL_MEMORY_SCOPE_SUB_GROUP=4
  define: __OPENCL_MEMORY_SCOPE_WORK_GROUP=1
  define: __OPENCL_MEMORY_SCOPE_WORK_ITEM=0
  define: __ORDER_BIG_ENDIAN__=4321
  define: __ORDER_LITTLE_ENDIAN__=1234
  define: __ORDER_PDP_ENDIAN__=3412
  define: __POINTER_WIDTH__=32
  define: __PRAGMA_REDEFINE_EXTNAME=1
  define: __PTRDIFF_FMTd__="ld"
  define: __PTRDIFF_FMTi__="li"
  define: __PTRDIFF_MAX__=2147483647L
  define: __PTRDIFF_TYPE__=long int
  define: __PTRDIFF_WIDTH__=32
  define: __SCHAR_MAX__=127
  define: __SHRT_MAX__=32767
  define: __SHRT_WIDTH__=16
  define: __SIG_ATOMIC_MAX__=2147483647L
  define: __SIG_ATOMIC_WIDTH__=32
  define: __SIZEOF_DOUBLE__=8
  define: __SIZEOF_FLOAT__=4
  define: __SIZEOF_INT128__=16
  define: __SIZEOF_INT__=4
  define: __SIZEOF_LONG_DOUBLE__=16
  define: __SIZEOF_LONG_LONG__=8
  define: __SIZEOF_LONG__=4
  define: __SIZEOF_POINTER__=4
  define: __SIZEOF_PTRDIFF_T__=4
  define: __SIZEOF_SHORT__=2
  define: __SIZEOF_SIZE_T__=4
  define: __SIZEOF_WCHAR_T__=4
  define: __SIZEOF_WINT_T__=4
  define: __SIZE_FMTX__="lX"
  define: __SIZE_FMTo__="lo"
  define: __SIZE_FMTu__="lu"
  define: __SIZE_FMTx__="lx"
  define: __SIZE_MAX__=4294967295UL
  define: __SIZE_TYPE__=long unsigned int
  define: __SIZE_WIDTH__=32
  define: __STDCPP_DEFAULT_NEW_ALIGNMENT__=8UL
  define: __STDC_EMBED_EMPTY__=2
  define: __STDC_EMBED_FOUND__=1
  define: __STDC_EMBED_NOT_FOUND__=0
  define: __STDC_HOSTED__=1
  define: __STDC_UTF_16__=1
  define: __STDC_UTF_32__=1
  define: __STDC__=1
  define: __STRICT_ANSI__=1
  define: __UINT16_C_SUFFIX__=
  define: __UINT16_FMTX__="hX"
  define: __UINT16_FMTo__="ho"
  define: __UINT16_FMTu__="hu"
  define: __UINT16_FMTx__="hx"
  define: __UINT16_MAX__=65535
  define: __UINT16_TYPE__=unsigned short
  define: __UINT32_C_SUFFIX__=U
  define: __UINT32_FMTX__="X"
  define: __UINT32_FMTo__="o"
  define: __UINT32_FMTu__="u"
  define: __UINT32_FMTx__="x"
  define: __UINT32_MAX__=4294967295U
  define: __UINT32_TYPE__=unsigned int
  define: __UINT64_C_SUFFIX__=ULL
  define: __UINT64_FMTX__="llX"
  define: __UINT64_FMTo__="llo"
  define: __UINT64_FMTu__="llu"
  define: __UINT64_FMTx__="llx"
  define: __UINT64_MAX__=18446744073709551615ULL
  define: __UINT64_TYPE__=long long unsigned int
  define: __UINT8_C_SUFFIX__=
  define: __UINT8_FMTX__="hhX"
  define: __UINT8_FMTo__="hho"
  define: __UINT8_FMTu__="hhu"
  define: __UINT8_FMTx__="hhx"
  define: __UINT8_MAX__=255
  define: __UINT8_TYPE__=unsigned char
  define: __UINTMAX_C_SUFFIX__=ULL
  define: __UINTMAX_FMTX__="llX"
  define: __UINTMAX_FMTo__="llo"
  define: __UINTMAX_FMTu__="llu"
  define: __UINTMAX_FMTx__="llx"
  define: __UINTMAX_MAX__=18446744073709551615ULL
  define: __UINTMAX_TYPE__=long long unsigned int
  define: __UINTMAX_WIDTH__=64
  define: __UINTPTR_FMTX__="lX"
  define: __UINTPTR_FMTo__="lo"
  define: __UINTPTR_FMTu__="lu"
  define: __UINTPTR_FMTx__="lx"
  define: __UINTPTR_MAX__=4294967295UL
  define: __UINTPTR_TYPE__=long unsigned int
  define: __UINTPTR_WIDTH__=32
  define: __UINT_FAST16_FMTX__="hX"
  define: __UINT_FAST16_FMTo__="ho"
  define: __UINT_FAST16_FMTu__="hu"
  define: __UINT_FAST16_FMTx__="hx"
  define: __UINT_FAST16_MAX__=65535
  define: __UINT_FAST16_TYPE__=unsigned short
  define: __UINT_FAST32_FMTX__="X"
  define: __UINT_FAST32_FMTo__="o"
  define: __UINT_FAST32_FMTu__="u"
  define: __UINT_FAST32_FMTx__="x"
  define: __UINT_FAST32_MAX__=4294967295U
  define: __UINT_FAST32_TYPE__=unsigned int
  define: __UINT_FAST64_FMTX__="llX"
  define: __UINT_FAST64_FMTo__="llo"
  define: __UINT_FAST64_FMTu__="llu"
  define: __UINT_FAST64_FMTx__="llx"
  define: __UINT_FAST64_MAX__=18446744073709551615ULL
  define: __UINT_FAST64_TYPE__=long long unsigned int
  define: __UINT_FAST8_FMTX__="hhX"
  define: __UINT_FAST8_FMTo__="hho"
  define: __UINT_FAST8_FMTu__="hhu"
  define: __UINT_FAST8_FMTx__="hhx"
  define: __UINT_FAST8_MAX__=255
  define: __UINT_FAST8_TYPE__=unsigned char
  define: __UINT_LEAST16_FMTX__="hX"
  define: __UINT_LEAST16_FMTo__="ho"
  define: __UINT_LEAST16_FMTu__="hu"
  define: __UINT_LEAST16_FMTx__="hx"
  define: __UINT_LEAST16_MAX__=65535
  define: __UINT_LEAST16_TYPE__=unsigned short
  define: __UINT_LEAST32_FMTX__="X"
  define: __UINT_LEAST32_FMTo__="o"
  define: __UINT_LEAST32_FMTu__="u"
  define: __UINT_LEAST32_FMTx__="x"
  define: __UINT_LEAST32_MAX__=4294967295U
  define: __UINT_LEAST32_TYPE__=unsigned int
  define: __UINT_LEAST64_FMTX__="llX"
  define: __UINT_LEAST64_FMTo__="llo"
  define: __UINT_LEAST64_FMTu__="llu"
  define: __UINT_LEAST64_FMTx__="llx"
  define: __UINT_LEAST64_MAX__=18446744073709551615ULL
  define: __UINT_LEAST64_TYPE__=long long unsigned int
  define: __UINT_LEAST8_FMTX__="hhX"
  define: __UINT_LEAST8_FMTo__="hho"
  define: __UINT_LEAST8_FMTu__="hhu"
  define: __UINT_LEAST8_FMTx__="hhx"
  define: __UINT_LEAST8_MAX__=255
  define: __UINT_LEAST8_TYPE__=unsigned char
  define: __USER_LABEL_PREFIX__=
  define: __VERSION__="Clang 20.0.0git (https:/github.com/llvm/llvm-project 7543d09b852695187d08aa5d56d50016fea8f706)"
  define: __WCHAR_MAX__=2147483647
  define: __WCHAR_TYPE__=int
  define: __WCHAR_WIDTH__=32
  define: __WINT_MAX__=2147483647
  define: __WINT_TYPE__=int
  define: __WINT_WIDTH__=32
  define: __clang__=1
  define: __clang_literal_encoding__="UTF-8"
  define: __clang_major__=20
  define: __clang_minor__=0
  define: __clang_patchlevel__=0
  define: __clang_version__="20.0.0git (https:/github.com/llvm/llvm-project 7543d09b852695187d08aa5d56d50016fea8f706)"
  define: __clang_wide_literal_encoding__="UTF-32"
  define: __cplusplus=202302L
  define: __llvm__=1
  define: __private_extern__=extern
  define: __unix=1
  define: __unix__=1
  define: __wasm=1
  define: __wasm32=1
  define: __wasm32__=1
  define: __wasm__=1
  define: __wasm_multivalue__=1
  define: __wasm_mutable_globals__=1
  define: __wasm_reference_types__=1
  define: __wasm_sign_ext__=1
  define: EMSCRIPTEN
  define: _DEBUG
  define: UNICODE
  define: _UNICODE
  other: --clang
  other: --clang_version=200000
  stdver: c++23
  intelliSenseMode: linux-clang-x64
Compiler query command line: D:\CODE\emsdk\upstream\bin\clang++.exe -target wasm32-unknown-emscripten -std=c++23 -Wp,-v -fno-blocks -E -dM -x c++ nul
Done parsing open files.
LSP: (received) cpptools/didChangeVisibleTextEditors
LSP: (invoked) cpptools/didChangeVisibleTextEditors
Unable to resolve include path: D:/CODE/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1
LSP: (received) cpptools/didChangeVisibleTextEditors
LSP: (invoked) cpptools/didChangeVisibleTextEditors
Unable to resolve include path: D:/CODE/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1
IntelliSense process crash detected: handle_initialize
Shutting down IntelliSense server: D:\CODE\emscripten-gl\src\util.cpp
Failed to acquire a TU due to crash frequency: file:///d%3A/CODE/emscripten-gl/src/util.cpp
Update IntelliSense time (sec): 0.654
LSP: (received) cpptools/didChangeVisibleTextEditors
LSP: (invoked) cpptools/didChangeVisibleTextEditors
Unable to resolve include path: D:/CODE/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1
LSP: (received) cpptools/didChangeVisibleTextEditors
LSP: (invoked) cpptools/didChangeVisibleTextEditors
Unable to resolve include path: D:/CODE/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1
LSP: (received) cpptools/didChangeActiveEditor: file:///d%3A/CODE/emscripten-gl/src/util.cpp
LSP: (invoked) cpptools/didChangeActiveEditor: file:///d%3A/CODE/emscripten-gl/src/util.cpp
Unable to resolve include path: D:/CODE/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1
LSP: (received) cpptools/getDiagnostics (id: 9)
LSP: (invoked) cpptools/getDiagnostics (id: 9)
LSP: Sending response (id: 9)
LSP: (received) cpptools/didChangeVisibleTextEditors
LSP: (invoked) cpptools/didChangeVisibleTextEditors
Unable to resolve include path: D:/CODE/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1
LSP: (received) cpptools/didChangeActiveEditor: file:///d%3A/CODE/emscripten-gl/src/util.cpp
LSP: (invoked) cpptools/didChangeActiveEditor: file:///d%3A/CODE/emscripten-gl/src/util.cpp
Unable to resolve include path: D:/CODE/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1
LSP: (received) cpptools/didChangeVisibleTextEditors
LSP: (invoked) cpptools/didChangeVisibleTextEditors
Unable to resolve include path: D:/CODE/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1
LSP: (received) cpptools/didChangeVisibleTextEditors
LSP: (invoked) cpptools/didChangeVisibleTextEditors
LSP: (received) cpptools/didChangeVisibleTextEditors
LSP: (invoked) cpptools/didChangeVisibleTextEditors
LSP: (received) cpptools/didChangeVisibleTextEditors
LSP: (invoked) cpptools/didChangeVisibleTextEditors
LSP: (received) cpptools/didChangeVisibleTextEditors
LSP: (invoked) cpptools/didChangeVisibleTextEditors

Other Extensions

The Issue persists regardless of these extensions.

Additional context

No response

Colengms commented 1 month ago

Hi @CelDaemon . I'd like to repro the crash you're seeing. However, my own attempt to set up an emscripten project seems to be working without issue.

Would you be able to provide your project (enscriptem-gl?) as a repro or zip file, and any additional necessary steps to repro, so we might easily replicate the scenario?

I see from your logs that one of your include paths was not present on disk:

Unable to resolve include path: D:/CODE/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1

However, I wouldn't expect that to result in an IntelliSense process crash.

I would expect the cause of an IntelliSense crash to be somewhat related to the contents of the file being parsed (or headers it includes). Reproducing the issue may require D:\CODE\emscripten-gl\src\util.cpp or something with similar contents.

CelDaemon commented 1 month ago

Thank you for taking a look at my issue!

I'm most likely unable to share the actual project code due to company policy. However, the following zip is enough to reproduce the issue on my end:

repro.zip

As visible in the properties file, the emscripten sdk is located at D:\CODE\emsdk.

I hope this helps to diagnose the issue, I've been affected by it in almost every single cpp file in the project.

CelDaemon commented 1 month ago

Is this enough information, or is there more I need to provide?

Colengms commented 1 month ago

Hi @CelDaemon . Thanks for reporting this to us. I can repro the issue with your example and have tracked the issue down to within a shared component (in the IntelliSense engine) and opened a bug internally. (ID 2267751).

CelDaemon commented 1 month ago

@Colengms Thank you, is there possibly some workaround I could use in the meantime, or should I just wait for a fix to land?

Colengms commented 1 month ago

Hi @CelDaemon . While the IntelliSense process definitely shouldn't crash, the issue you're seeing here seems to also have something to do with your include paths, and the wrong versions of headers being picked up.

In your repro.zip example, if I rearrange the include paths like so, I don't get the error:

"Z:\\repos\\emsdk\\upstream\\emscripten\\cache\\sysroot\\include\\c++\\v1",
"Z:\\repos\\emsdk\\upstream\\emscripten\\cache\\sysroot\\include\\**",
"Z:\\repos\\emsdk\\upstream\\lib\\clang\\20\\include",

Given that you're specifying recursive include paths (with \**), you're not configuring IntelliSense in the same way the code would be built. I'd highly recommend configuring IntelliSense exactly as the code is built, to ensure correct IntelliSense.

CelDaemon commented 1 month ago

Thank you! That did indeed resolve my issue (except the crashing of course), I wasn't aware of the ordering making this much of a difference. I've now changed my config to use the --sysroot argument the same way emcc works under the hood, and it works flawlessly.

Can this issue now be closed, or should it stay open to track the crash?