--- AnyEvent/t/62_cocoa_03_child.t 2011/10/01 22:39:29 1.6 +++ AnyEvent/t/62_cocoa_03_child.t 2013/07/30 23:14:32 1.9 @@ -20,6 +20,7 @@ use AnyEvent; + BEGIN { $^W = 0 } BEGIN { $ENV{PERL_ANYEVENT_LOOP_TESTS} or ((print qq{1..0 # SKIP PERL_ANYEVENT_LOOP_TESTS not true\n}), exit 0) } BEGIN { eval q{use AnyEvent::Impl::Cocoa;1} or ((print qq{1..0 # SKIP AnyEvent::Impl::Cocoa not loadable\n}), exit 0) } @@ -45,6 +46,13 @@ unless ($pid) { print "ok ${it}2 # child $$\n"; + + # POE hits a race condition when the child dies too quickly + # because it checks for child exit before installing the signal handler. + # seen in version 1.352 - earlier versions had the same bug, but + # polled for child exits regularly, so only caused a delay. + sleep 1 if $AnyEvent::MODEL eq "AnyEvent::Impl::POE"; + POSIX::_exit 3; } my $w = AnyEvent->child (pid => $pid, cb => sub { @@ -55,7 +63,10 @@ $cv->recv; - my $pid2 = fork || POSIX::_exit 7; + my $pid2 = fork || do { + sleep 1 if $AnyEvent::MODEL eq "AnyEvent::Impl::POE"; + POSIX::_exit 7; + }; my $cv2 = AnyEvent->condvar;