Environment
Version: 1.120.0 (Universal)
Commit: 0958016b2af9f09bb4257e0df4a95e2f90590f9f
Date: 2026-05-12T20:17:22Z (7 days ago)
Electron: 39.8.8
ElectronBuildId: 13870025
Chromium: 142.0.7444.265
Node.js: 22.22.1
V8: 14.2.231.22-electron.0
OS: Darwin arm64 25.4.0
-
C/C++ extension:
C/C++ for Visual Studio Code () - 1.32.2
-
OS and version of remote machine (if applicable):
Distributor ID: Ubuntu
Description: Ubuntu 24.04.4 LTS
Release: 24.04
Codename: noble
-
GDB / LLDB version:
GNU gdb (Ubuntu 15.1-1ubuntu1~24.04.1) 15.1
Copyright (C) 2024 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law
Bug Summary and Steps to Reproduce
After updating the C/C++ extension to 1.30.3, debug sessions on aarch64 Linux hang immediately after -exec-run and never reach main. Downgrading to 1.29.3 with the same launch.json and the same container resolves the issue.
Environment
Host: macOS (Apple Silicon, M5 MacBook Pro)
Container: Ubuntu 24.04 LTS, aarch64, running on Docker
VSCode workflow: Remote-SSH into the container
GDB: GNU gdb (Ubuntu 15.1-1ubuntu1~24.04.1) 15.1, configured as aarch64-linux-gnu
C/C++ extension: 1.30.3 (broken), 1.29.3 (works)
MIEngine version reported in telemetry: 17.12.40402.1
Steps to reproduce
In a Docker container running aarch64 Ubuntu 24.04 with GDB 15.1, build any C++ binary with debug symbols.
Use a standard cppdbg launch configuration with MIMode: "gdb", request: "launch", no miDebuggerServerAddress (i.e., local launch via MIEngine's integrated-terminal mechanism).
Start the debug session.
Expected
Debugger stops at main (or at the first user breakpoint).
Actual
Session hangs indefinitely after -exec-run. The inferior process is started (=thread-group-started is visible in the engine log), the dynamic loader is reported (=library-loaded for /lib/ld-linux-aarch64.so.1), and then all subsequent MI commands from MIEngine go unanswered. main is never hit. From the user's perspective, no breakpoint fires.
Root cause (from engine log analysis)
MIEngine sets stop-on-solib-events 1 during initialisation. After -exec-run, GDB stops the inferior at the dynamic loader's solib-event as expected. However, the *stopped,reason="solib-event" notification appears to be lost between GDB and MIEngine: MIEngine's internal state remains "running", and typing -exec-continue in the Debug Console returns:
Unable to perform this action because the process is running.
So MIEngine never sees the stop, never issues the -exec-continue that would let GDB walk through subsequent library loads to main, and the session is wedged. The TTY warning visible in the integrated terminal (warning: GDB: Failed to set controlling terminal: Operation not permitted) is unrelated — it appears in both 1.29.3 (working) and 1.30.3 (broken) and does not affect execution.
What I tried
Disabling debuginfod via ~/.gdbinit and setupCommands → no change.
set inferior-tty /dev/null, set startup-with-shell off → no change.
Adding targetArchitecture: "arm64" to launch.json → fixes the assumed x86_64 warning, no effect on hang.
Manual gdb ./binary followed by start in the same container → works perfectly, hits main. So the container, GDB, ptrace, and the binary are all fine.
Downgrading the C/C++ extension to 1.29.3 (no other changes) → fixes the hang. main is hit normally.
Attachments
I can attach an engine log captured with:
json"logging": {
"engineLogging": true,
"trace": true,
"traceResponse": true
}
The relevant tail shows <-1025-exec-run followed by =thread-group-started, =thread-created, six =breakpoint-modified events, =library-loaded for ld-linux-aarch64.so.1, then five queued -symbol-list-lines commands with no responses. No *stopped event ever appears.
Debugger Configurations
launch.json :
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Mac - Exch Gateway Server SHM",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/app_exch_gateway_server_shm",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb"
},
{
"name": "Mac - Exch Gateway FT",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/app_exch_gateway_ft",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb"
},
{
"name": "Exch Gateway Server UDP",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/app_exch_gateway_server_udp",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"preLaunchTask": "CMake: build",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
},
{
"name": "Exch Gateway Server SHM",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/app_exch_gateway_server_shm",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"preLaunchTask": "CMake: build",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
},
{
"name": "Exch Gateway Client",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/app_exch_gateway_client",
"args": ["127.0.0.1"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"preLaunchTask": "CMake: build",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
},
{
"name": "Exch Gateway FT",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/app_exch_gateway_ft",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"preLaunchTask": "CMake: build",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
},
{
"name": "Exch Gateway UT",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/app_exch_gateway_ut",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"preLaunchTask": "CMake: build",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
},
{
"name": "Exch Binance UT",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/exch_binance_ut",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"preLaunchTask": "CMake: build",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
},
{
"name": "Exch Binance FT",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/exch_binance_ft",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"preLaunchTask": "CMake: build",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
},
{
"name": "Exch Binance FT - Metrics",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/exch_binance_ft_binance_metrics",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"preLaunchTask": "CMake: build",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
},
{
"name": "Utils FT",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/utils_ft",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"preLaunchTask": "CMake: build",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
},
{
"name": "Utils UT",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/utils_ut",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"preLaunchTask": "CMake: build",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
},
{
"name": "Sock Echo Server UDP",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/server_echo_udp",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"preLaunchTask": "CMake: build",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
},
{
"name": "Sock Echo Client UDP",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/client_echo_udp",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"preLaunchTask": "CMake: build",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}
task.json :
{
"version": "2.0.0",
"tasks": [
{
"type": "cmake",
"label": "CMake: build",
"command": "build",
"targets": [
"all"
],
"group": "build",
"problemMatcher": [],
"detail": "CMake template build task"
}
]
}
Debugger Logs
--- LaunchOptions ---
LaunchOptions{"name":"Exch Gateway Server SHM","type":"cppdbg","request":"launch",
"program":"/wsDocker/exgw/exgw_exch_gateway/bin/app_exch_gateway_server_shm",
"args":[],"stopAtEntry":false,"cwd":"/wsDocker/exgw/exgw_exch_gateway",
"environment":[],"externalConsole":false,"MIMode":"gdb",
"preLaunchTask":"CMake: build",
"logging":{"engineLogging":true,"trace":true,"traceResponse":true},
"setupCommands":[
{"description":"Enable pretty-printing for gdb","text":"-enable-pretty-printing","ignoreFailures":true},
{"description":"Set Disassembly Flavor to Intel","text":"-gdb-set disassembly-flavor intel","ignoreFailures":true}
]}
--- GDB banner ---
GNU gdb (Ubuntu 15.1-1ubuntu1~24.04.1) 15.1
This GDB was configured as "aarch64-linux-gnu".
--- MIEngine telemetry ---
EngineVersion: 17.12.40402.1
HostVersion: 17.12.40402.1
AdapterId: cppdbg
MIMode: gdb
--- MIEngine misdetects architecture as x86_64 even though GDB reports aarch64 ---
stdout: Warning: Debuggee TargetArchitecture not detected, assuming x86_64.
--- After -exec-run: process starts, dynamic loader loads, then session hangs ---
<-1022-exec-run
->&"warning: Error disabling address space randomization: Operation not permitted\n"
->=thread-group-started,id="i1",pid="12275"
->=thread-created,id="1",group-id="i1"
<-1023-thread-info 1
->=breakpoint-modified,bkpt={number="1",...addr="0x0000aaaadedcb608",func="main(int, char* const*)",...}
->=breakpoint-modified,bkpt={number="2",...}
->=breakpoint-modified,bkpt={number="3",...}
->=breakpoint-modified,bkpt={number="4",...}
->=breakpoint-modified,bkpt={number="5",...}
->=breakpoint-modified,bkpt={number="6",...}
->=library-loaded,id="/lib/ld-linux-aarch64.so.1",symbols-loaded="0",...
<-1024-symbol-list-lines .../main_shm.cpp
<-1025-symbol-list-lines .../main_shm.cpp
<-1026-symbol-list-lines .../main.cpp
<-1027-symbol-list-lines .../server_exgw.hpp
<-1028-symbol-list-lines .../server_exgw.hpp
->~"Downloading separate debug info for system-supplied DSO at 0xffffb849e000...\n"
[session never reaches main; no response to commands 1023-1028; no *stopped event ever delivered]
<-- C (disconnect-14): user-initiated disconnect
Other Extensions
No response
Additional Information
vscode_cppext_regression.txt
Environment
OS and version:
macOS Tahoe Version 26.4.1 (25E253)
VS Code:
Visual Studio Code
Version: 1.120.0 (Universal)
Commit: 0958016b2af9f09bb4257e0df4a95e2f90590f9f
Date: 2026-05-12T20:17:22Z (7 days ago)
Electron: 39.8.8
ElectronBuildId: 13870025
Chromium: 142.0.7444.265
Node.js: 22.22.1
V8: 14.2.231.22-electron.0
OS: Darwin arm64 25.4.0
C/C++ extension:
C/C++ for Visual Studio Code () - 1.32.2
OS and version of remote machine (if applicable):
Distributor ID: Ubuntu
Description: Ubuntu 24.04.4 LTS
Release: 24.04
Codename: noble
GDB / LLDB version:
GNU gdb (Ubuntu 15.1-1ubuntu1~24.04.1) 15.1
Copyright (C) 2024 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law
Bug Summary and Steps to Reproduce
After updating the C/C++ extension to 1.30.3, debug sessions on aarch64 Linux hang immediately after -exec-run and never reach main. Downgrading to 1.29.3 with the same launch.json and the same container resolves the issue.
Environment
Host: macOS (Apple Silicon, M5 MacBook Pro)
Container: Ubuntu 24.04 LTS, aarch64, running on Docker
VSCode workflow: Remote-SSH into the container
GDB: GNU gdb (Ubuntu 15.1-1ubuntu1~24.04.1) 15.1, configured as aarch64-linux-gnu
C/C++ extension: 1.30.3 (broken), 1.29.3 (works)
MIEngine version reported in telemetry: 17.12.40402.1
Steps to reproduce
In a Docker container running aarch64 Ubuntu 24.04 with GDB 15.1, build any C++ binary with debug symbols.
Use a standard cppdbg launch configuration with MIMode: "gdb", request: "launch", no miDebuggerServerAddress (i.e., local launch via MIEngine's integrated-terminal mechanism).
Start the debug session.
Expected
Debugger stops at main (or at the first user breakpoint).
Actual
Session hangs indefinitely after -exec-run. The inferior process is started (=thread-group-started is visible in the engine log), the dynamic loader is reported (=library-loaded for /lib/ld-linux-aarch64.so.1), and then all subsequent MI commands from MIEngine go unanswered. main is never hit. From the user's perspective, no breakpoint fires.
Root cause (from engine log analysis)
MIEngine sets stop-on-solib-events 1 during initialisation. After -exec-run, GDB stops the inferior at the dynamic loader's solib-event as expected. However, the *stopped,reason="solib-event" notification appears to be lost between GDB and MIEngine: MIEngine's internal state remains "running", and typing -exec-continue in the Debug Console returns:
Unable to perform this action because the process is running.
So MIEngine never sees the stop, never issues the -exec-continue that would let GDB walk through subsequent library loads to main, and the session is wedged. The TTY warning visible in the integrated terminal (warning: GDB: Failed to set controlling terminal: Operation not permitted) is unrelated — it appears in both 1.29.3 (working) and 1.30.3 (broken) and does not affect execution.
What I tried
Disabling debuginfod via ~/.gdbinit and setupCommands → no change.
set inferior-tty /dev/null, set startup-with-shell off → no change.
Adding targetArchitecture: "arm64" to launch.json → fixes the assumed x86_64 warning, no effect on hang.
Manual gdb ./binary followed by start in the same container → works perfectly, hits main. So the container, GDB, ptrace, and the binary are all fine.
Downgrading the C/C++ extension to 1.29.3 (no other changes) → fixes the hang. main is hit normally.
Attachments
I can attach an engine log captured with:
json"logging": {
"engineLogging": true,
"trace": true,
"traceResponse": true
}
The relevant tail shows <-1025-exec-run followed by =thread-group-started, =thread-created, six =breakpoint-modified events, =library-loaded for ld-linux-aarch64.so.1, then five queued -symbol-list-lines commands with no responses. No *stopped event ever appears.
Debugger Configurations
Debugger Logs
--- LaunchOptions --- LaunchOptions{"name":"Exch Gateway Server SHM","type":"cppdbg","request":"launch", "program":"/wsDocker/exgw/exgw_exch_gateway/bin/app_exch_gateway_server_shm", "args":[],"stopAtEntry":false,"cwd":"/wsDocker/exgw/exgw_exch_gateway", "environment":[],"externalConsole":false,"MIMode":"gdb", "preLaunchTask":"CMake: build", "logging":{"engineLogging":true,"trace":true,"traceResponse":true}, "setupCommands":[ {"description":"Enable pretty-printing for gdb","text":"-enable-pretty-printing","ignoreFailures":true}, {"description":"Set Disassembly Flavor to Intel","text":"-gdb-set disassembly-flavor intel","ignoreFailures":true} ]} --- GDB banner --- GNU gdb (Ubuntu 15.1-1ubuntu1~24.04.1) 15.1 This GDB was configured as "aarch64-linux-gnu". --- MIEngine telemetry --- EngineVersion: 17.12.40402.1 HostVersion: 17.12.40402.1 AdapterId: cppdbg MIMode: gdb --- MIEngine misdetects architecture as x86_64 even though GDB reports aarch64 --- stdout: Warning: Debuggee TargetArchitecture not detected, assuming x86_64. --- After -exec-run: process starts, dynamic loader loads, then session hangs --- <-1022-exec-run ->&"warning: Error disabling address space randomization: Operation not permitted\n" ->=thread-group-started,id="i1",pid="12275" ->=thread-created,id="1",group-id="i1" <-1023-thread-info 1 ->=breakpoint-modified,bkpt={number="1",...addr="0x0000aaaadedcb608",func="main(int, char* const*)",...} ->=breakpoint-modified,bkpt={number="2",...} ->=breakpoint-modified,bkpt={number="3",...} ->=breakpoint-modified,bkpt={number="4",...} ->=breakpoint-modified,bkpt={number="5",...} ->=breakpoint-modified,bkpt={number="6",...} ->=library-loaded,id="/lib/ld-linux-aarch64.so.1",symbols-loaded="0",... <-1024-symbol-list-lines .../main_shm.cpp <-1025-symbol-list-lines .../main_shm.cpp <-1026-symbol-list-lines .../main.cpp <-1027-symbol-list-lines .../server_exgw.hpp <-1028-symbol-list-lines .../server_exgw.hpp ->~"Downloading separate debug info for system-supplied DSO at 0xffffb849e000...\n" [session never reaches main; no response to commands 1023-1028; no *stopped event ever delivered] <-- C (disconnect-14): user-initiated disconnectOther Extensions
No response
Additional Information
vscode_cppext_regression.txt