@lazi
I just re-checked, and I was mistaken about the initial requester. This only comes up if the crashed task is a RAMLIB init task.
One common problem under OS 3.x was that the RAMLIB task ran out of stack, especially with things like MCP. Furthermore, any library crashing in their init code could bring down the entire system because it crashed the ramlib process, making it impossible to open a disk-library afterwards.
We changed that so that ramlib now spawns a subprocess that does the actual opening, and if the opening fails, they also end up in the kernel Reaper, but are handled slightly differently (ramlib will be signaled that a child task has crashed, usually resulting in it returning a failure to the program that opened the library). This signaling is not done for "normal" tasks.
In case of a "normal" (non-ramlib) crash, the kernel reaper tries to launch SYS:System/GrimReaper with a command line argument pointing at the crashed task's struct Task. I suppose in your case, reboot will simply complain about invalid number of arguments, but since the process is started with NIL: and the input and output stream, you don't see that.
Easiest way would be to write a small program that just calls "ColdReboot" on IExec, something like
#include <proto/exec.h>
int main()
{
IExec->ColdReboot();
/* Doesn't really get here */
return 0;
}
would do the trick.