Control: tags -1 + confirmed upstream fixed-upstream On Wed, Aug 20, 2008 at 02:38:10PM +0200, Bas van Sisseren wrote: > Package: perl > Version: 5.10.0-13 > Severity: normal > > When system-calls are processed, all signals are enqueued until the next perl > instruction is executed. When the fork() system-call is processed, and the > parent receives a signal just before the fork() call, both the parent and the > child will process the enqueued signals. > > Imho, the enqueued signal-list should be flushed when we are the child process > after the fork(). > > Example code: > ============================== > use strict; > use Time::HiRes qw( alarm ); > > my $ppid = $$; > my $fork = 0; > $SIG{ALRM} = sub { > print "[SIGALRM] ppid=$ppid pid=$$ fork=$fork\n" if $$ != $ppid; > }; > > for (1..10000) { > alarm(0.0002 + rand() * 0.0002); > $fork = 1; > my $pid = fork(); > $fork = 0; > if (!defined $pid) { > warn "fork(): $!\n"; > } elsif ($pid == 0) { > exit(0); > } > } > > sleep(1); > ==============================
This doesn't happen in blead, so tagging bug appropriately; it'll be fixed in a future Debian release. Dominic. -- Dominic Hargreaves | http://www.larted.org.uk/~dom/ PGP key 5178E2A5 from the.earth.li (keyserver,web,email) -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org