Merge lp://staging/~mhr3/libzeitgeist/various-fixes into lp://staging/libzeitgeist

Proposed by Michal Hruby
Status: Merged
Merged at revision: 153
Proposed branch: lp://staging/~mhr3/libzeitgeist/various-fixes
Merge into: lp://staging/libzeitgeist
Diff against target: 27 lines (+16/-1)
1 file modified
src/zeitgeist-log.c (+16/-1)
To merge this branch: bzr merge lp://staging/~mhr3/libzeitgeist/various-fixes
Reviewer Review Type Date Requested Status
Mikkel Kamstrup Erlandsen Approve
Review via email: mp+31801@code.staging.launchpad.net

Description of the change

This fixes the Overflow error bug seen sometimes when using monitors. The cause of this was that once Zeitgeist disappeared from the bus and appeared again, install_monitor() was called which in turn called egg_dbus_connection_register_interface() for an interface which was already registered - probably by a bug in EggDBus, this caused Introspect to stop working and therefore when Zeitgeist wanted to call the actual Notify* method on the monitor object, it wasn't able to introspect it and therefore assumed only one input Int32 parameter.

Pfew, that's what I call a slightly complex bug :) Still I'd suggest to wrap the monitor invocations in try blocks inside ZG.

To post a comment you must log in.
Revision history for this message
Mikkel Kamstrup Erlandsen (kamstrup) wrote :

AWESOME work Michal!

It somehow reminds me a bit of the other integer overflow bug we had because of some missing headers, causing gcc to assume the default function return type of 'int' where it should have been a 'gint64'. This bug would be the dual bug in DBus space :-)

review: Approve
153. By Mikkel Kamstrup Erlandsen <kamstrup@delight>

Merge Michal's branch lp:~mhr3/libzeitgeist/various-fixes :

 * Fixes bug #559350 "zeitgeist-daemon crashed with OverflowError in call_async()"

The cause of this was that once Zeitgeist disappeared from the bus and appeared again, install_monitor() was called which in turn called egg_dbus_connection_register_interface() for an interface which was already registered - probably by a bug in EggDBus, this caused Introspect to stop working and therefore when Zeitgeist wanted to call the actual Notify* method on the monitor object, it wasn't able to introspect it and therefore assumed only one input Int32 parameter.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
The diff is not available at this time. You can reload the page or download it.

Subscribers

People subscribed via source and target branches