[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