Tag
process-control
- Sep 24, 2026 Signals: Delivery, Interruption, and the Async-Signal-Safe Set A signal handler runs on the thread it interrupted, with that thread half-finished, which is why only a small set of functions may be called from one. Delivery, masking, and the self-pipe pattern follow from the handler running on an interrupted thread. systems programming
- Apr 29, 2026 Single-Stepping: One Flags Bit and Its Cost per Instruction The trap flag makes the processor raise an exception after every instruction. How debuggers use it, why stepping over a call needs a breakpoint instead, and where it does not exist. developer tools
- Jan 12, 2026 Hardware Breakpoints and Watchpoints in the Debug Registers Four address slots, a length encoding with alignment rules, and a trap that fires after the store: what the processor can observe without editing code. developer tools
- Jun 29, 2024 pidfd: A Process Handle That Cannot Be Reused A process id is recycled the moment a process is reaped, so any operation addressed by pid can hit an unrelated process. A pidfd refers to the process object itself and closes the race. systems programming
- Nov 26, 2023 Software Breakpoints: Replacing an Instruction with a Trap Byte How a debugger turns a source line into a one-byte code patch, why the program counter has to be rewound, and what the patch cannot do in shared or generated code. developer tools
- Sep 7, 2023 ptrace and the Stop-Notify Model Behind a Debugger Attaching is a signal, every stop must be answered, and the same SIGTRAP means different things. How a tracer distinguishes the events it receives. developer tools
- Aug 30, 2023 Exit Status, Zombies, and What waitpid Can Tell a Parent A terminated process leaves a status word and an entry that must be reaped. Status encoding, the reason the record survives termination, and the four ways a parent can wait without deadlocking. systems programming