xfce4-panel and SIGTERM
Jasper Huijsmans
jasper at xfce.org
Sun Mar 19 10:05:58 CET 2006
Brian J. Tarricone schreef:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Jasper Huijsmans wrote:
>> Adriano Winter Bess schreef:
>
>> What does it say above this? SIGSEGV in ...
>>
>>> #0 panel_app_get_monitor (n=0) at panel-app.c:815
>>> No locals.
>>> #1 0x080530f4 in panel_resize_function (window=0x80db7b0, panel=0x80db7b0, old=0xbfdbed7c, new=0xbfdbed6c, x=0x80db870,
>>> y=0x80db874) at panel-properties.c:379
>>> priv = (PanelPrivate *) 0x80db890
>>> xmon = <value optimized out>
>>
>> Hmm, maybe the resize function is being called while the panel is being
>> destroyed... I can try to disconnect these handlers, before destroying
>> any widgets.
>
> Note that calling *anything* but a few "safe" libc functions while
> inside a posix signal handler has undefined results. The glib main loop
> may be thread-safe, but it's not really reentrant. Gtk and gdk are not
> even thread-safe. When a posix signal handler runs, you have no idea
> what the state of the rest of the app is in. It could be in the middle
> of some glib function for all you know. If you start calling
> gtk/gdk/glib functions in a signal handler, you can actually make
> matters worse.
>
I know. I only set a variable and check it with a timeout function.
> (Granted, I know I do this in xfmedia, and bad things only seem to
> happen a tiny percentage of the time. Regardless, it's technically
> incorrect.)
>
> There's a very recent thread on gtk-app-devel-list about this stuff, and
> some possible solutions. I don't have a link handy, though.
>
Yeah, they suggest using a pipe and a giochannel to watch writes to it.
I might try and change it to that.
I don't think it can explain current problem though.
Jasper
More information about the Xfce4-dev
mailing list