Repository navigation
Debug on hosts without ptrace (Raspberry Pi workers, Rosetta), and pe… - #67
Merged
Merged
Conversation
…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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
…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.