vscode-cpptools icon indicating copy to clipboard operation
vscode-cpptools copied to clipboard

Debugger fails under Linux if file size limits are in effect

Open djast opened this issue 4 months ago • 1 comments

Environment

  • OS and version: AlmaLinux 8.10
  • VS Code: 1.102.1 (and earlier)
  • C/C++ extension: ms-vscode.cpptools-1.23.5-linux-x64 and later
  • OS and version of remote machine (if applicable):
  • GDB / LLDB version: gdb-8.2-20.el8.x86_64

Bug Summary and Steps to Reproduce

Bug Summary: LIke many sites, we set a default file size ulimit to prevent users' runaway processes from consuming unlimited disk resources. When attempting to debug a C program with any file size limit less than 2TiB in place (cf. "grep 'Max file size' /proc/$$/limits"), the debugger crashes.

Steps to reproduce:

  1. Set a reasonable file size limit (e.g., "ulimit -f 25165824" from bash)
  2. Launch "code" from the shell prompt
  3. Open a .c file, build it, and set a breakpoint
  4. Select Run -> Start debugging

The debugger controls will appear briefly and disappear; the OpenDebugAD7 process will crash with SIGXFSZ.

Debugger Configurations

Default settings.

Debugger Logs

No messages in Debug Console or Output windows.

Other Extensions

No response

Additional Information

Attaching a system call tracer reveals that the process is attempting to truncate the file returned from a memfd_create("doublemapper") call to 2TB:

1354933 memfd_create("doublemapper", MFD_CLOEXEC) = 8 1354933 ftruncate(8, 2199023255552) = -1 EFBIG (File too large)

This may have the same root cause as https://github.com/microsoft/vscode/issues/251037 .

Setting "C_Cpp_Runner.debuggerPath": "lldb" in settings.json may work around the issue (OpenDebugAD7 does not appear to run in this configuration), but this is not the default configuration.

djast avatar Jul 18 '25 15:07 djast