начал тут сегфолтится один мой скриптик с ГУИ. так как С за 15 лет я уже забыл, но смутно помню perl, это perl5.16 + GTK2.
судя по всему, это из-за перехода на threaded perl.
вот, вырезал отдельно ту часть, где сегфолт. если закоментарить назначение хэндлера на SIGCHLD, то все работает:
#$SIG{CHLD} = sub {
# print "SIGCHLD\n";
#};
вот сам скрипт (нужен x11-toolkits/p5-Gtk2, или как там оно у вас):
#!/usr/bin/perl
use Gtk2 '-init';
# GTK stuff
my $window = Gtk2::Window->new;
$window->set_title("TEST");
my $button = Gtk2::Button->new();
$button->signal_connect("clicked" => \&callback);
my $label = Gtk2::Label->new("Button");
$button->add($label);
$window->add($button);
$window->show_all;
# Handle SIGCHLD
$SIG{CHLD} = sub {
print "SIGCHLD\n";
};
# Start the app
Gtk2->main;
0;
# When the button is clicked
sub callback {
print "Forking... ";
my $pid = fork();
die "cannot fork" unless defined $pid;
if ($pid == 0) {
print "child\n";
exit 0;
}
print "parent\n";
}
как видно, хэндлер даже не выполняется. просто сразу сегфолт:
Forking... parent
child
Segmentation fault
что тут блин надо?