I guess that I see something that is 'normal', because I observerd the same thing without my program running. As you can see, I setted a breackpoint on ds_device_write and letted the kernel continue. After some time the breakpoint was hit with the result: kmsg != kmsg->ikm_next->ikm_prev. wagi (gdb) target remote /dev/ttyS1 Remote debugging using /dev/ttyS1 0x0012bfdc in main (argc=166432, argv=0x1) at ../../oskit-mach/oskit/x86/main.c:88 88 } (gdb) b panic Breakpoint 1 at 0x1f9bc6: file ../../../oskit-20010214/libc/gen/panic.c, line 31. (gdb) b gdb_break_stub Breakpoint 2 at 0x118f4b: file ../../oskit-mach/kern/syscall_sw.c, line 296. (gdb) c Continuing. [...] Breakpoint 2, gdb_break_stub (addr=0x8048670) at ../../oskit-mach/kern/syscall_sw.c:296 296 return 0; (gdb) b enable b 3 (gdb) c Continuing. Breakpoint 3, ds_device_write (dev=0x40799b4, reply_port=0x40986e4, reply_port_type=18, mode=8, recnum=0, data=0x4088634 "\003", count=109, bytes_written=0x412e034) at ../../oskit-mach/oskit/ds_routines.c:686 686 { (gdb) bt #0 ds_device_write (dev=0x40799b4, reply_port=0x40986e4, reply_port_type=18, mode=8, recnum=0, data=0x4088634 "\003", count=109, bytes_written=0x412e034) at ../../oskit-mach/oskit/ds_routines.c:686 #1 0x0013417b in _Xdevice_write (InHeadP=0x4035164, OutHeadP=0x412e010) at device_server.c:250 #2 0x0011314e in ipc_kobject_server (request=0x4035154) at ../../oskit-mach/kern/ipc_kobject.c:192 #3 0x0010d800 in mach_msg_trap (msg=0x12dbaf0, option=3, send_size=56, rcv_size=40, rcv_name=110, time_out=0, notify=0) at ../../oskit-mach/ipc/mach_msg.c:1419 #4 0x0013e253 in mach_call_call () (gdb) f 3 #3 0x0010d800 in mach_msg_trap (msg=0x12dbaf0, option=3, send_size=56, rcv_size=40, rcv_name=110, time_out=0, notify=0) at ../../oskit-mach/ipc/mach_msg.c:1419 1419 kmsg = ipc_kobject_server(kmsg); (gdb) p/x *kmsg $52 = {ikm_next = 0x4088f04, ikm_prev = 0xffffff10, ikm_size = 0x100, ikm_marequest = 0x0, ikm_header = {msgh_bits = 0x80001211, msgh_size = 0x38, msgh_remote_port = 0x40799f8, msgh_local_port = 0x40986e4, msgh_seqno = 0x0, msgh_id = 0xaf2}} (gdb) p/x *kmsg->ikm_next $53 = {ikm_next = 0x408920c, ikm_prev = 0xffffff10, ikm_size = 0x100, ikm_marequest = 0x0, ikm_header = {msgh_bits = 0x1111, msgh_size = 0x20, msgh_remote_port = 0x34, msgh_local_port = 0x28, msgh_seqno = 0x3ec, msgh_id = 0x5214}} (gdb) p/x kmsg $54 = 0x4035154 (gdb) p/x kmsg->ikm_next $55 = 0x4088f04 (gdb) p/x kmsg->ikm_next->ikm_prev $56 = 0xffffff10