The bug is triggered, when from an underlying layer (driver layer, I think) an error via the return value is reported. I tried several values for the size parameter. If it's reasonable large, for example 64 bytes, the system stays stable. But count = 4 will trigger the bug. To be on sure side I tried hacked following into oskit-mach/oskit/ds_routines:
io_return_t ds_device_write (device_t dev, ipc_port_t reply_port, mach_msg_type_name_t reply_port_type, dev_mode_t mode, recnum_t recnum, io_buf_ptr_t data, unsigned int count, int *bytes_written) { [...] vm_offset_t addr; kern_return_t kr = vm_map_copyout (device_io_map, &addr, (vm_map_copy_t) data); if (kr == KERN_SUCCESS) { /* Note: we assume that write_inband can take a large count. */ kr = (*dev->ops->write_inband) (dev, reply_port, reply_port_type, mode, recnum, (char *) addr, count, bytes_written); (void) vm_deallocate (device_io_map, addr, count); } if (count == 66) /* XXX */ return 123; return kr; [...] } As you can see, if count is 66, the return value is just a silly value. Without these lines, the kernel works fine. The question now is, why an error code is not a good thing at this location? wagi -- Daniel Wagner "use quit to exit" email: [EMAIL PROTECTED] GnuPG: 1024D/DCDE890A (public key available on any keyserver) _______________________________________________ Bug-hurd mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-hurd