Crash in _dbus_connection_block_pending_call

John (J5) Palmieri johnp at redhat.com
Tue Jun 13 18:37:30 PDT 2006


On Tue, 2006-06-13 at 09:16 +0200, Timo Hoenig wrote:
> Hi,
> 
> On Fri, 2006-06-09 at 11:43 -0400, John (J5) Palmieri wrote:
> 
> > Ok, we are getting somewhere.  Do you know if your distro compiles with
> > --enable-checks?  I would like you to compile dbus with the distro's
> > flags and add -O0 -ggdb3 so we get an even better backtrace.
> 
> Looks like the connection is gone.
> 
> #7  0xb7eb2a08 in check_for_reply_and_update_dispatch_unlocked (pending=0x80984c0) at dbus-connection.c:2544
> 	reply = (DBusMessage *) 0xb7c6e188
> 	connection = (DBusConnection *) 0x0
> #8  0xb7eb2c4e in _dbus_connection_block_pending_call (pending=0x80984c0) at dbus-connection.c:2650
> 	connection = (DBusConnection *) 0x8098050
> 
> Complete logs are up [1].  
> 
> Thanks,
> 
>    Timo
> 
> [1] NM logs when crashing (with -O0 and -ggdb3) 
>     http://nouse.net/misc/nm-trace-verbose-O0-ggdb3-{a,b}

Ok, so I think I see whats happening now.  The pending call is most
likely finished in another thread by the time it reaches
check_for_reply_and_update_dispatch_unlocked.  The connection itself is
locked but not the pending call.  I think checking for connection ==
NULL and returning if it is will fix the issue.  Then again it might
cause messages to be dropped.  I'm not totally sure.

-- 
John (J5) Palmieri <johnp at redhat.com>



More information about the dbus mailing list