Update on private server running on dbus 1.4.14 (Re: Request for help debugging DBusServer ... (Re: Question ad private DBUS server, how to ...

rony rony at wu.ac.at
Sat Aug 13 10:28:57 PDT 2011


After building and using dbus 1.4.14 on Ubuntu 64-bit, so far no
segmentation faults have occurred (trying hard for quite some time now),
so definitely the fixes in this version of dbus are a *big* improvement!

However, I could evoke a:

    process 28118: arguments to dbus_connection_ref() were incorrect,
    assertion "connection->generation == _dbus_current_generation"
    failed in file dbus-connection.c line 2629.
    This is normally a bug in some application using the D-Bus library.
      D-Bus not built with -rdynamic so unable to print a backtrace
    Aborted

After rebuilding 1.4.14 with the "-rdynamic" switch the above message
has not occurred anymore.

---

Ad still missing "Disconnected" signal.

Still, the "Disconnected" signal are not emanated, if a client
connection goes away, this problem is still open. Maybe it is also
linked to the connection-related problems above (and below from an
earlier e-mail)?

Currently, the language binding's debug code dumps all signals received
on all client connections, but the "Discarded" signal is not received by
any of them. Is it possible that I am looking at the wrong place for
this signal?

---

Is there a function in dbus that would allow to test whether a
connection is operational (or stalled) ?

If not, shall I file a bug?

---rony



On 12.08.2011 11:33, rony wrote:
> Just a small intermediate update.
>
> On 10.08.2011 13:19, rony wrote:
>> On 10.08.2011 11:42, Simon McVittie wrote:
>>   
>>> On Wed, 10 Aug 2011 at 11:31:49 +0200, rony wrote:
>>>   
>>>     
>>>> The current implementation employs "dbus_server_set_watch_functions()",
>>>> but not "dbus_set_timeout_functions()", because there seems to be no
>>>> need for it.
>>>>     
>>>>       
>>> Well, that's something you're doing that most users of libdbus don't, so...
>>> Try implementing both, and if bugs still occur, *then* start debugging.
>>>
>>> (For instance, it's not impossible that deferred events are set up by adding
>>> a "timeout after 0 seconds", either now or in the future.)
>>>   
>>>     
>> Oh, I see! Will do.
>>   
> Adding the timeout functions did not change anything (they do not get
> invoked).
>
> So intermittently program crashes occur (when re-running the client
> program repeatedly in the same process) with the private server, and
> there are no "Disconnected" signals when the process that established
> a private connection to the private server ends.
>
>     At one point, before a segmentation dump, the server process
>     showed the dbus output: "process 11392: The last reference on a
>     connection was dropped without closing the connection. This is a
>     bug in an application. See dbus_connection_unref() documentation
>     for details. Most likely, the application was supposed to call
>     dbus_connection_close(), since this is a private connection."
>     The only "dbus_connecnon_unref()" in the binding is immediately
>     preceeded with "debus_connection_close()". The language binding
>     function containing these two statements would be invoked either
>     upon Rexx object destruction (the Rexx proxy for the connection)
>     or if a "Disconnected" signal was received on that connection.
>
> ... cut ...
>
>>> For thread-safety, ensure that you have the latest D-Bus release from either
>>> the 1.4.x or 1.5.x (master) branch, to fix fd.o #38005; 
>>>     
>> Will check (have 1.4.6, but that may not be new enough).
>>   
> Found that starting with dbus 1.4.12 this fix is incorporated, so will
> have to look how to get that version or newer onto my Ubuntu system
> without breaking anything over the weekend.
>
> ---rony
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/dbus/attachments/20110813/ce1b129a/attachment.html>


More information about the dbus mailing list