#10507: Returning B_OK from DeviceAdded() callback, causing a SIGABRT -------------------------------+---------------------------- Reporter: codewrangler | Owner: nobody Type: bug | Status: new Priority: normal | Milestone: R1 Component: Kits/Device Kit | Version: R1/Development Resolution: | Keywords: USB Blocked By: | Blocking: Has a Patch: 0 | Platform: x86 -------------------------------+---------------------------- Changes (by anevilyak): * priority: blocker => normal * component: - General => Kits/Device Kit Old description: > I get (3) DeviceAdded notifications (of Types 0,9,9), which I assume are > the USB 'devices' already attached to the system (VMWare Fusion 6.x). > After returning B_OK, from the last callback (same for all 3), I get a > SIGABRT (according to gdb). > > Here is the backtrace: > > (gdb) backtrace > #0 0x609a2114 in ?? () > #1 0x006624eb in send_signal () from /boot/system/lib/libroot.so > #2 0x006624a2 in raise () from /boot/system/lib/libroot.so > #3 0x006b5c49 in abort () from /boot/system/lib/libroot.so > #4 0x00643140 in __default_terminate () from /boot/system/lib/libroot.so > #5 0x0064315d in __terminate () from /boot/system/lib/libroot.so > #6 0x00644744 in __pure_virtual () from /boot/system/lib/libroot.so > #7 0x00e59b1d in WatchedEntry::~WatchedEntry () > from /boot/system/lib/libdevice.so > #8 0x00e59af6 in WatchedEntry::~WatchedEntry () > from /boot/system/lib/libdevice.so > #9 0x00e59af6 in WatchedEntry::~WatchedEntry () > from /boot/system/lib/libdevice.so > #10 0x00e5a0bd in RosterLooper::Stop () from > /boot/system/lib/libdevice.so > #11 0x00e5a3df in BUSBRoster::Stop () from /boot/system/lib/libdevice.so > #12 0x00e5a2b9 in BUSBRoster::~BUSBRoster () from > /boot/system/lib/libdevice.so > #13 0x012821f3 in USBHandler::~USBHandler (this=0x1837d018, __in_chrg=3) > at /boot/home/projects/MonitorCCID/MonitorCCIDApp.cpp:121 > #14 0x01282015 in MonitorCCIDWindow::StartMonitoring (this=0x18382f80) > at /boot/home/projects/MonitorCCID/MonitorCCIDApp.cpp:81 > #15 0x01281e6b in MonitorCCIDWindow::MonitorCCIDWindow (this=0x18382f80) > at /boot/home/projects/MonitorCCID/MonitorCCIDApp.cpp:48 > #16 0x01281d2d in MonitorCCIDApp::ReadyToRun (this=0x72bd3444) > at /boot/home/projects/MonitorCCID/MonitorCCIDApp.cpp:40 > ---Type <return> to continue, or q <return> to quit--- > #17 0x0103be91 in BApplication::DispatchMessage () > from /boot/system/lib/libbe.so > #18 0x01046e0d in BLooper::task_looper () from /boot/system/lib/libbe.so > #19 0x0103a9fd in BApplication::Run () from /boot/system/lib/libbe.so > #20 0x01282137 in main () > at /boot/home/projects/MonitorCCID/MonitorCCIDApp.cpp:113 New description: I get (3) DeviceAdded notifications (of Types 0,9,9), which I assume are the USB 'devices' already attached to the system (VMWare Fusion 6.x). After returning B_OK, from the last callback (same for all 3), I get a SIGABRT (according to gdb). Here is the backtrace: {{{ (gdb) backtrace #0 0x609a2114 in ?? () #1 0x006624eb in send_signal () from /boot/system/lib/libroot.so #2 0x006624a2 in raise () from /boot/system/lib/libroot.so #3 0x006b5c49 in abort () from /boot/system/lib/libroot.so #4 0x00643140 in __default_terminate () from /boot/system/lib/libroot.so #5 0x0064315d in __terminate () from /boot/system/lib/libroot.so #6 0x00644744 in __pure_virtual () from /boot/system/lib/libroot.so #7 0x00e59b1d in WatchedEntry::~WatchedEntry () from /boot/system/lib/libdevice.so #8 0x00e59af6 in WatchedEntry::~WatchedEntry () from /boot/system/lib/libdevice.so #9 0x00e59af6 in WatchedEntry::~WatchedEntry () from /boot/system/lib/libdevice.so #10 0x00e5a0bd in RosterLooper::Stop () from /boot/system/lib/libdevice.so #11 0x00e5a3df in BUSBRoster::Stop () from /boot/system/lib/libdevice.so #12 0x00e5a2b9 in BUSBRoster::~BUSBRoster () from /boot/system/lib/libdevice.so #13 0x012821f3 in USBHandler::~USBHandler (this=0x1837d018, __in_chrg=3) at /boot/home/projects/MonitorCCID/MonitorCCIDApp.cpp:121 #14 0x01282015 in MonitorCCIDWindow::StartMonitoring (this=0x18382f80) at /boot/home/projects/MonitorCCID/MonitorCCIDApp.cpp:81 #15 0x01281e6b in MonitorCCIDWindow::MonitorCCIDWindow (this=0x18382f80) at /boot/home/projects/MonitorCCID/MonitorCCIDApp.cpp:48 #16 0x01281d2d in MonitorCCIDApp::ReadyToRun (this=0x72bd3444) at /boot/home/projects/MonitorCCID/MonitorCCIDApp.cpp:40 ---Type <return> to continue, or q <return> to quit--- #17 0x0103be91 in BApplication::DispatchMessage () from /boot/system/lib/libbe.so #18 0x01046e0d in BLooper::task_looper () from /boot/system/lib/libbe.so #19 0x0103a9fd in BApplication::Run () from /boot/system/lib/libbe.so #20 0x01282137 in main () at /boot/home/projects/MonitorCCID/MonitorCCIDApp.cpp:113 }}} -- Comment: It'd be helpful to be able to see the code in question, as the backtrace hints at mem corruption, such as a double delete. -- Ticket URL: <https://dev.haiku-os.org/ticket/10507#comment:1> Haiku <https://dev.haiku-os.org> Haiku - the operating system.