[Pidgin] #15493: fetching URLs freezes pidgin
Pidgin
trac at pidgin.im
Mon Apr 15 07:16:20 EDT 2013
#15493: fetching URLs freezes pidgin
----------------------------+---------------------------
Reporter: FernandoMiguel | Owner: rekkanoryo
Type: defect | Status: new
Milestone: | Component: unclassified
Version: 2.10.7 | Resolution:
Keywords: |
----------------------------+---------------------------
Comment (by suokko):
Replying to [comment:23 datallah]:
> This looks like something for the ubuntu package maintainers to look at
- it isn't something that other people are experiencing.
I reproduced this in debian and managed to figure out reason for the
freeze. I managed to somewhat undesrtand reason for issue after looking
the glib code. When spawning a process glib creates child watch source
that is supposed to catch SIGCHLD and let pidgin continue execution after
child completes.
I managed to look into program state after pidgin froze problem appears to
be that waitpid in g_child_watch_source_new reported given pid still
running. But just a few code lines later pidgin gets stuck waiting SIGCHLD
that never appears. That means something either blocked or handled SIGCHLD
instead of child_watch_source.
There is at least one dangerous looking catch in my gdb tracing attempt to
figure out cause of missing SIGCHLD. I saw pidgin calling waitpid(-1, ...)
from main context. That is documented to be incompatible with child source
watch objects in https://developer.gnome.org/glib/2.34/glib-The-Main-
Event-Loop.html#g-child-watch-source-new
But as far I can seed waitpid(-1, ...) should happen during life time of
child watch source object because child watch source is only used in
internal "main" loop in g_spawn_sync.
Too bad I couldn't reproduce the issue during tracing so I can't dirrectly
see the issue from trace log. But I hope the stuff that I have so far
observed might help some pidgin developer to figure out possible source of
issue like place where SIGCHLD might be handled or blocked instead of
g_spwan_sync event loop.
--
Ticket URL: <https://developer.pidgin.im/ticket/15493#comment:25>
Pidgin <http://pidgin.im>
Pidgin
More information about the Tracker
mailing list