[packagekit] PackageKit-qt crashes when the daemon fails to start

Adrien Bustany madcat at mymadcat.com
Sun Feb 8 05:10:25 PST 2009


On Sun, 08 Feb 2009 09:54:53 +0000, Richard Hughes <hughsient at gmail.com>
wrote:
> On Sun, 2009-02-08 at 02:15 -0500, Trever Fischer wrote:
>> According to a bug reported against KPackageKit 
>> (http://bugs.kde.org/show_bug.cgi?id=183565) a few days ago,
>> PackageKit-qt can
>> crash a program when packagekitd doesn't startup right. To be a bit more
>> in-
>> depth, it asks the daemon to make a new transaction, and starts tossing
>> around
>> a null transaction ID. The failure to start can be because of some
>> invalid
>> default backend, or just a regular segfault.
> 
> Right, both of which are bad.
> 
>> So, what would be the best way to handle this situation? Have the
library
>>
>> return some error about it not starting? Have the daemon give a more
>> specific
>> error signal about why it couldn't start (if it can live that long)?
> 
> Well, I think the daemon already does -- there's a limit what it can
> pass due to dbus-system activation limitations, but it should
> pass /something/. You then need to catch this error and throw an
> exception.
> 
>> I think adding some method to the Client class to ping the daemon and
see
>> if
>> it is up and making all the transaction-generating methods return NULL
if
>> it
>> isn't up would be a good solution.
> 
> You don't want to introduce startup latency in the GUI tools.
> 
>> Another solution would be adding a check to 
>> see if daemon->GetTid() is null in ClientPrivate::createNewTransaction()
>> and
>> return NULL from there. Either way, the NULL eventually gets sent back
up
>> out
>> of the library.
> 
> Right, but what does NULL really mean? You need context.
> 
>> Regular authentication error checking would catch it, but then 
>> we're using the same error condition for two totally different errors.
> 
> Right, when you setup the transaction, make it clear the method can fail
> and that SomeError will be thrown. In the GLib library, in PkClient and
> PkControl, we return false and set the GError to a local domain, a
> DAEMON_CANNOT_START error code, and the geeky error in the message.
> 
> I don't see a problem in making GUI applications catch setup errors, as
> even if you do GetUpdates when the daemon doesn't support it, it should
> also return an error and be handled in the the GUI rather than crash.
> 

Hi,
I'll investigate this problem, and probably add a new error code in the
enum like the glib lib does...

Thanks for reporting the problem

Adrien

> Richard.
> 



> 
> _______________________________________________
> PackageKit mailing list
> PackageKit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/packagekit



More information about the PackageKit mailing list