summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThierry Vignaud <thierry.vignaud@gmail.com>2013-12-28 16:38:14 +0100
committerThierry Vignaud <thierry.vignaud@gmail.com>2013-12-28 16:38:14 +0100
commitd4afbe1de7a5fc9bbe88e478257b582d98f64a79 (patch)
tree964f4cfe03de89ab68c5ea04cb0f8355e973ecb3
parent6b6c2cf938b656a54e4bcd6da4d024c069afff8e (diff)
downloadcontrol-center-d4afbe1de7a5fc9bbe88e478257b582d98f64a79.tar
control-center-d4afbe1de7a5fc9bbe88e478257b582d98f64a79.tar.gz
control-center-d4afbe1de7a5fc9bbe88e478257b582d98f64a79.tar.bz2
control-center-d4afbe1de7a5fc9bbe88e478257b582d98f64a79.tar.xz
control-center-d4afbe1de7a5fc9bbe88e478257b582d98f64a79.zip
try harder to prevent segfaulting on webkit init (mga#10289)
we segfault in SIG_CHLD when temporary webkit threads exit on init: delay setting CHLD handler on forking the 1st tool
-rw-r--r--NEWS3
-rwxr-xr-xcontrol-center6
2 files changed, 8 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index 7a02eeb6..68c3c303 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,6 @@
+- try harder to prevent segfaulting in SIG_CHLD when temporary webkit threads
+ exit on init: delay setting CHLD handler on forking the 1st tool (mga#10289)
+
Version 12.46 - 21 December 2013 Thierry Vignaud
- fix segfault when webkit creates threads for good (mga#10289)
diff --git a/control-center b/control-center
index 67139430..d2bfa2dd 100755
--- a/control-center
+++ b/control-center
@@ -705,7 +705,6 @@ $view->signal_connect('load-finished' => sub {
state $done;
return if $done;
$done = 1;
- $SIG{CHLD} = \&sig_child;
Glib::Timeout->add(100, sub { sig_child('CHLD', 1); 1 });
load_program() if $program;
});
@@ -1203,6 +1202,11 @@ my $pid_exp;
sub fork_ {
my ($prog, $o_pid_table) = @_;
+ state $done;
+ if (!$done) {
+ $done = 1;
+ $SIG{CHLD} = \&sig_child;
+ }
$o_pid_table ||= \@pid_launched;
my $pid = fork();
if (defined $pid) {