From: Seagull <se...@ar...> - 2002-07-23 04:06:08
|
I have now had two reports of core dumps under Mandrake 8.2 (both with 2.4.18 kernels): one for my Pocket Concert library, and the other for my Nomad Jukebox library. Both libraries use a common code base for USB device discovery, and both are dying in the same spot. The libipc SIGSEGV is captured here: Program received signal SIGSEGV, Segmentation fault. ipc_discover (ipcs=0xbffef310, n=0xbffef30c) at base.c:29 29 if ( device->descriptor.idVendor == IPC_VENDOR_ID && (gdb) p device $4 = (struct usb_device *) 0x1031 (gdb) p device->descriptor Cannot access memory at address 0x2041 (gdb) Now, the code at this point looks like this: usb_init(); if ( usb_find_busses() ) return -1; if ( usb_find_devices() ) return -1; bus= usb_busses; while ( bus != NULL ) { device= bus->devices; while ( device != NULL ) { if ( device->descriptor.idVendor == IPC_VENDOR_ID && device->descriptor.idProduct == IPC_PRODUCT_ID ) { ipcs->device= device; ipcs->dev= NULL; ipcs->lid= IPC_LOWID_1; ipcs->hid= IPC_HIGHID_1; ipcs++; (*n)++; } device= device->next; } bus= bus->next; } This segment works fine under RedHat 7.x and FreeBSD 4.x-RELEASE builds. Only the two Mandrake users are reporting this problem. One is using libusb v0.1.6a, and claims that this used to work when he was running Mandrake 8.1. Have I done something incorrect in my code block that is getting tickled under Mandrake, or might there be some larger, weirder forces at work? I am trying to get a core dump on this, though I am not optimistic about it telling me anything useful. Cheers, -+JLS -- \ carpe cavy! seagull @ aracnet.com \ http://www.aracnet.com/~seagull \ (seize the guinea pig!) |