Skip to content

Language server crashes immediately on Windows 7/8/10/Server 2016 #13851

@Shaunparedes

Description

@Shaunparedes

Environment

  • OS and Version: Windows 11 Version 23H2
  • VS Code Version: 1.103.1
  • C/C++ Extension Version: 1.26.3
  • If using SSH remote, specify OS of remote machine: Windows Server 2016 Version 1607

Bug Summary and Steps to Reproduce

Bug Summary:
After upgrading the C++ extension to 1.26.3, the language server immediately crashes and no longer functions. Since it crashes nearly instantly, I wasn't able to attach the debugger to cpptools.exe to get a crash log. I've tried it with a empty workspace with a single C file and the result was the same.

Steps to reproduce:

  1. Install C++ extension version 1.26.3
  2. Open C file
  3. Alerts of the language service crashing appear immediately.

Expected behavior:
Language server does not crash.

Configuration and Logs

c_cpp_properties.json is default.

Can't run Log Diagnostics since it crashes instantly. 

"cpptools" output:
[Error - 3:41:56 PM] Server initialization failed.
  Message: Pending response rejected since connection got disposed
  Code: -32097 
[Error - 3:41:56 PM] The language server crashed 5 times in the last 3 minutes. It will not be restarted.
[Error - 3:41:56 PM] cpptools client: couldn't create connection to server.
  Message: Pending response rejected since connection got disposed
  Code: -32097 

Extension Host (Remote) output:
2025-08-14 15:41:52.817 [info] ExtensionService#_doActivateExtension ms-vscode.cpptools, startup: false, activationEvent: 'onLanguage:c'
2025-08-14 15:41:56.421 [error] Error: write EPIPE
	at afterWriteDispatched (node:internal/stream_base_commons:159:15)
	at writeGeneric (node:internal/stream_base_commons:150:3)
	at Socket._writeGeneric (node:net:966:11)
	at Socket._write (node:net:978:8)
	at writeOrBuffer (node:internal/streams/writable:572:12)
	at _write (node:internal/streams/writable:501:10)
	at Writable.write (node:internal/streams/writable:510:10)
	at c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:61452:29
	at new Promise (<anonymous>)
	at WritableStreamWrapper.write (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:61439:16)
	at StreamMessageWriter.doWrite (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:9801:34)
2025-08-14 15:41:56.422 [error] Error: Client is not running and can't be stopped. It's current state is: starting
	at LanguageClient.shutdown (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:85511:19)
	at LanguageClient.stop (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:85482:21)
	at LanguageClient.stop (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:1194:22)
	at LanguageClient.doInitialize (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:85464:27)
	at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
	at async LanguageClient.start (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:85319:13)
	at async DefaultClient.createLanguageClient (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:65722:9)
	at async DefaultClient.init (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:65376:14)
2025-08-14 15:41:56.670 [error] Error: Pending response rejected since connection got disposed
	at Object.dispose (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:107540:27)
	at Object.dispose (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:86111:35)
	at LanguageClient.handleConnectionClosed (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:85702:34)
	at LanguageClient.handleConnectionClosed (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:1224:22)
	at closeHandler (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:85689:18)
	at CallbackList.invoke (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:68244:39)
	at Emitter.fire (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:68306:36)
	at closeHandler (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:106687:26)
	at CallbackList.invoke (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:68244:39)
	at Emitter.fire (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:68306:36)
	at StreamMessageReader.fireClose (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:78380:27)
	at Socket.<anonymous> (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:78465:42)
	at Socket.emit (node:events:530:35)
	at Pipe.<anonymous> (node:net:346:12)
2025-08-14 15:41:56.671 [error] Error: Client is not running and can't be stopped. It's current state is: starting
	at LanguageClient.shutdown (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:85511:19)
	at LanguageClient.stop (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:85482:21)
	at LanguageClient.stop (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:1194:22)
	at LanguageClient.doInitialize (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:85464:27)
	at async LanguageClient.start (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:85319:13)
	at async DefaultClient.createLanguageClient (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:65722:9)
	at async DefaultClient.init (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:65376:14)
2025-08-14 15:41:56.835 [error] Error: Client is not running and can't be stopped. It's current state is: starting
	at LanguageClient.shutdown (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:85511:19)
	at LanguageClient.stop (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:85482:21)
	at LanguageClient.stop (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:1194:22)
	at LanguageClient.doInitialize (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:85464:27)
	at async LanguageClient.start (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:85319:13)
	at async DefaultClient.createLanguageClient (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:65722:9)
	at async DefaultClient.init (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:65376:14)
2025-08-14 15:41:57.423 [error] Error: Client is not running and can't be stopped. It's current state is: starting
	at LanguageClient.shutdown (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:85511:19)
	at LanguageClient.stop (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:85482:21)
	at LanguageClient.stop (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:1194:22)
	at LanguageClient.doInitialize (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:85464:27)
	at async LanguageClient.start (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:85319:13)
	at async DefaultClient.createLanguageClient (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:65722:9)
	at async DefaultClient.init (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:65376:14)
2025-08-14 15:41:57.538 [error] Error: Client is not running and can't be stopped. It's current state is: starting
	at LanguageClient.shutdown (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:85511:19)
	at LanguageClient.stop (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:85482:21)
	at LanguageClient.stop (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:1194:22)
	at LanguageClient.doInitialize (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:85464:27)
	at async LanguageClient.start (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:85319:13)
	at async DefaultClient.createLanguageClient (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:65722:9)
	at async DefaultClient.init (c:\Users\sparedes\.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\dist\src\main.js:65376:14)

Other Extensions

No response

Additional context

On my remote system I went into the extension folder (.vscode-server\extensions\ms-vscode.cpptools-1.26.3-win32-x64\bin), and tried to run cpptools.exe directly. This caused an immediate error popup that said "The procedure entry point SetThreadDescription could not be located in the dynamic link library" and then the path to the executable.

Googling that error, it seems that SetThreadDescription might not be supported in Windows Server 2016. So I rolled back the C++ extension to 1.24.5 and everything worked as expected. Obviously, I'd like to keep VSCode up to date, so would it be possible to make cpptools compatible with Windows Server 2016?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Language ServicebugfixedCheck the Milestone for the release in which the fix is or will be available.regressionA bug that didn't exist in a previous release

    Type

    Projects

    Status

    Done

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions