Skip to content

Debug on hosts without ptrace (Raspberry Pi workers, Rosetta), and pe… - #67

Merged
vickeykumar merged 1 commit into
masterfrom
development
Oct 8, 2026
Merged

vickeykumar merged 1 commit into
masterfrom
development

Conversation

@vickeykumar

Copy link
Copy Markdown
Owner

…r-node language control in the admin dashboard

Debug no longer depends on ptrace. openrepl-gdb asks a probe built into the image whether programs can be traced and takes one of four routes: plain gdb, the QEMU the container already runs under (QEMU_GDB), the image's own qemu-x86_64, or a clear message. On the QEMU routes it only connects gdb to the program: it starts paused, and breakpoints and continue are the user's. gdb must have XML support, so it takes the first one on the PATH that has it (the bundled gdb 8.1.1 does not) and refuses to start the program if there is none. The assembly REPL (rappel) cannot work without ptrace, so a wrapper says so instead of leaving a dead prompt. C, C++, Go, Rust and assembly Debug use the helper. The assembly sample now uses the 64-bit syscall. install_prerequisite.sh installs qemu-user and gdb, builds the probe once, and its tests now run their pipes for real and debug a program through QEMU.

Admin dashboard: each node (the gateway and every worker) has a Languages card where a language can be left to what the worker declares, switched off, or switched on although the worker did not declare it. New terminals are refused with a notice, the language picker of visitors on that node hides what it refuses, and the choices are saved with the site settings and audited. Nodes report whether their host can trace programs, shown as information. Per-worker config in the tunnel, Router.NodeOf, a ptrace field in the registration. Docs: LLD 04, 08, 09, 11, 13, the distributed-mode guide, README, FAQ and the Genie debug note.

…r-node language control in the admin dashboard

Debug no longer depends on ptrace. openrepl-gdb asks a probe built into the image whether programs can be traced and takes one of four routes: plain gdb, the QEMU the container already runs under (QEMU_GDB), the image's own qemu-x86_64, or a clear message. On the QEMU routes it only connects gdb to the program: it starts paused, and breakpoints and continue are the user's. gdb must have XML support, so it takes the first one on the PATH that has it (the bundled gdb 8.1.1 does not) and refuses to start the program if there is none. The assembly REPL (rappel) cannot work without ptrace, so a wrapper says so instead of leaving a dead prompt. C, C++, Go, Rust and assembly Debug use the helper. The assembly sample now uses the 64-bit syscall. install_prerequisite.sh installs qemu-user and gdb, builds the probe once, and its tests now run their pipes for real and debug a program through QEMU.

Admin dashboard: each node (the gateway and every worker) has a Languages card where a language can be left to what the worker declares, switched off, or switched on although the worker did not declare it. New terminals are refused with a notice, the language picker of visitors on that node hides what it refuses, and the choices are saved with the site settings and audited. Nodes report whether their host can trace programs, shown as information. Per-worker config in the tunnel, Router.NodeOf, a ptrace field in the registration. Docs: LLD 04, 08, 09, 11, 13, the distributed-mode guide, README, FAQ and the Genie debug note.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vickeykumar
vickeykumar merged commit f74c0aa into master Oct 8, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant