Hi again, I managed to break gnumach in a new and exciting way (tm):
../kern/ipc_tt.c:395: retrieve_task_self_fast: Assertion `task->itk_self != IP_NULL' failed.panic ../kern/debug.c:103: Debugger: Debugger invoked, but there isn't one! This is after typing 'quit' in bc, which calls exit () -- I had to fix up _hurd_exit () in glibc a little to not crash if we don't have _hurd_ports. From single-stepping, it seems task_terminate () works, as in it tears down and deallocates the kernel task_t, but then the syscall (which task_terminate is) just returns back to userspace to the now-nonexistent task, and it keeps running. It then calls another syscall and that one breaks with the assertion above. You should be able to reproduce this without glibc by just calling task_terminate (mach_task_self ()). Sergey