Re: Application suddenly stuck at startup

Hi Jonathan,

I don't know if this is the problem but it looks like there are calls being made directly to a Gtk model within a Python thread which I can't image is ok (specifically in _library_artwork_update which is where the deadlock seems to occur). You might try wrapping the code within that function or any call to Gtk within it with calls to Gdk.threads_enter/exit:

Aside from that, I think using Gio instead of attempting to use Python threads and IO mixed with Gtk might help considerably with what you are trying to do.


On Thu, Feb 28, 2013 at 8:01 AM, Jonathan Ballet <jon multani info> wrote:

I'm developing^Whacking on a Gtk application [1] which uses PyGObject since a few months now. It's a client for the Music Player Daemon (mpd).

Suddenly yesterday, I couldn't run it anymore: when I start it, the application initialization at the very beginning is alright, Gtk.Appliction "activate" signal is triggered and answered as usual, and then, everything hangs. *Something* get stuck *somewhere* and I can't run the application anymore...
I tried to put aside all the things that would come up to my mind, which were: I didn't updated any libraries on my system, I stashed my current changes, I switched back the application to master, "git clean -fdx"'d it, switched off the player daemon, even restarted my computer in case a socket or another daemon was off somewhere, and I quickly patched threading.Thread(), threading.Condition() and GLib.idle_add() so they are just stubs so remove potentially blocking things.

I was just trying a new piece of code (which I reverted since then) and I'm pretty sure I restarted the application just a couple of hours before without any troubles. I used to do it several times a day for weeks, and now, I'm really confused.

So I fired up gdb and had a look at the result (see the attached file), and I would say the application is stuck waiting for gdk_threads_dispatch() to return (which seems to be waiting to get a lock) in the main thread (#1)
(There's another thread, waiting for a Condition to be released, but I'm pretty sure it's not the faulty code since 1. it's in another thread, and 2. it still hangs even if I remove this code).

There are probably tons of places where the application abuses Gtk, threads and stuff, and we are trying to sort things out one at a time, but it used to work OK until now, when I don't have anything anymore.

How can I get a clue on what's happening? I don't know where to look know, and I'm as stuck as my application :(

Any tips appreciated,



python-hackers-list mailing list
python-hackers-list gnome org

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]