[fpc-pascal] Strange behavior with GLib API call

Matthias Klumpp matthias at nlinux.org
Sun Apr 18 15:07:02 CEST 2010

I am developer of the Listaller Project, a cross-distribution software
manager & installer which uses PackageKit and is completely programmed in
Pascal. (YES, I better did this in C++, when I started the project two
years ago, I decided to play risky)
At time I have a very big problem with a bug reported against the
development version of Listaller. (see:
https://bugs.edge.launchpad.net/listaller/+bug/561012 )
Listaller basically is a library, which performs calls on PackageKit
(http://packagekit.org) to install/uninstall applications. PackageKit
provides an asynchronous GLib2-API which Listaller uses in its library.
Now the lib is used by several GUI tools, compiled for Qt4 or GTK+. Those
tools call the Listaller API which does the async call on PackageKit.
If an Qt4 GUI application does the call, PackageKit processes the command
correctly. If a GTK+ application makes it, the command is somehow broken.
This only happens on Ubuntu, on Fedora 12 everything works fine.
See this listing:
  Distribution | Frontend | Works?
   Ubuntu      |  GTK2    |  No
   Fedora      |  Qt4     |  Yes
   Ubuntu      |  Qt4     |  Yes
   Fedora      |  GTK2    |  Yes

Can someone guess why this happens? (The PackageKit method uses callbacks
and several GLib components like cancellables)
How can the GUI toolkit affect a library procedure?
Why does this only happen with Pascal applications? (All I wrote in C++
works just fine)
Why does it only happen, if the PackageKit API call is executed through the
library? (If I call the method directly in a GTK+ GUI application, it works
I spend days on this bug report and haven't made any progress on it yet.
I use Lazarus and FPC, this happens through all versions of Lazarus and FPC
I tested.
Would be great if someone could comment on this...
Kind regards
  Matthias Klumpp

 You can get the Listaller source code via Git:
   git clone git://gitorious.org/listaller/listaller.git
   (To be compiled with at least Lazarus 0.9.29 and FPC 2.4.1)
 The relevant unit is packagekit.pas, view it here:

More information about the fpc-pascal mailing list