Opened 9 years ago
Last modified 5 years ago
#69 new defect
Invoking trace_stack in admin mode crashes Multics
| Reported by: | Eric Swenson | Owned by: | Eric Swenson |
|---|---|---|---|
| Priority: | major | Milestone: | |
| Component: | Tools | Version: | MR12.6e |
| Keywords: | Cc: |
Description
If you invoke the "trace_stack" ("ts") command from admin mode, the system crashes when Initializer runs out of stack. It recurses trying to report a "null pointer" exception, getting another "null pointer" exception in the condition handler.
Note:
See TracTickets
for help on using tickets.

The apparent reason for this is that trace_stack (ts) invokes trace_stack_, which invokes list_frame_args_. list_frame_args_ establishes an any_other condition handler, but doesn't invoke sc_signal_io_handler_ upon signal_io_ conditions. This, apparently, is required in order to not get into a recursive loop, eventually running off the end of the ring-4 stack and terminating the Initializer process.
Simply adding an "on signal_io_ call sc_signal_io_handler_;" fixes the issue.
However, this points to a larger problem -- admin mode is very brittle. Any program that establishes an any_other handler, but doesn't establish a signal_io_ handler, or otherwise handle signal_io_ in its any_other handler will cause Initializer process to recurse off the end of its stack, crashing the system.