Skip to content

Debugger fails under Linux if file size limits are in effect #13768

@djast

Description

@djast

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 microsoft/vscode#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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bughelp wantedCan be fixed in the public (open source) repo.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions