From 68ad5488ce52a01004db357c4bda2c77d87d4dbd Mon Sep 17 00:00:00 2001 From: Thierry Vignaud Date: Wed, 22 Jan 2014 21:27:38 +0100 Subject: block CHLD signals on startup in order to prevent glib-threading segfaults --- bin/net_applet | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'bin') diff --git a/bin/net_applet b/bin/net_applet index b8201f5..1844e36 100755 --- a/bin/net_applet +++ b/bin/net_applet @@ -2,7 +2,7 @@ use strict; -use POSIX ":sys_wait_h"; +use POSIX qw(:signal_h :sys_wait_h); use lib qw(/usr/lib/libDrakX); # i18n: IMPORTANT: to get correct namespace (drakx-net instead of libDrakX) BEGIN { unshift @::textdomains, 'drakx-net' } @@ -21,6 +21,7 @@ use dbus_object; use network::monitor; use network::signal_strength; use detect_devices; +BEGIN { POSIX::sigprocmask(SIG_BLOCK, POSIX::SigSet->new(SIGCHLD)); } use Gtk3::Notify -init, 'NetApplet'; use ugtk3 qw(:create :helpers :wrappers :dialogs); @@ -275,7 +276,11 @@ $SIG{USR1} = sub { }; # do not create zombies (#20552) -Glib::Timeout->add_seconds(1, sub { $SIG{CHLD} = \&harvester; 0; }); +Glib::Timeout->add_seconds(1, sub { + POSIX::sigprocmask(SIG_UNBLOCK, POSIX::SigSet->new(SIGCHLD)); + $SIG{CHLD} = \&harvester; + 0; + }); sub harvester { my $pid; do { -- cgit v1.2.1