[haiku-bugs] Re: [Haiku] #10507: Returning B_OK from DeviceAdded() callback, causing a SIGABRT

  • From: "anevilyak" <trac@xxxxxxxxxxxx>
  • Date: Wed, 05 Feb 2014 18:18:06 -0000

#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.

Other related posts: