Subject: | Perl 5.10/x86-64 crash with POE::Component::Schedule |
Here is attached a script that uses both POE::Devel::Top and
POE::Component::Schedule.
The script makes Perl crash (segmentation fault) at the end of the first
display of the P::D::T report.
When the POE::Devel::Top->spawn call is disabled in the script, Perl
does not crash.
POE 1.289
POE::API::Peek 2.15
POE::Devel::Top 0.01
POE::Component::Schedule 0.95
This is Perl 5.10.0 for x86_64-linux-gnu-thread-multi running on Ubuntu
9.10.
(gdb) where
#0 *__GI___libc_free (mem=0x61) at malloc.c:3687
#1 0x00007f07a5de88c5 in Perl_op_clear () from /usr/lib/libperl.so.5.10
#2 0x00007f07a5de698d in Perl_op_free () from /usr/lib/libperl.so.5.10
#3 0x00007f07a5de6954 in Perl_op_free () from /usr/lib/libperl.so.5.10
#4 0x00007f07a5de6954 in Perl_op_free () from /usr/lib/libperl.so.5.10
#5 0x00007f07a5de6954 in Perl_op_free () from /usr/lib/libperl.so.5.10
#6 0x00007f07a5de6b7f in Perl_cv_undef () from /usr/lib/libperl.so.5.10
#7 0x00007f07a5e47763 in Perl_sv_clear () from /usr/lib/libperl.so.5.10
#8 0x00007f07a5e47a82 in Perl_sv_free2 () from /usr/lib/libperl.so.5.10
#9 0x00007f07a5e4766c in Perl_sv_clear () from /usr/lib/libperl.so.5.10
#10 0x00007f07a5e47a82 in Perl_sv_free2 () from /usr/lib/libperl.so.5.10
#11 0x00007f07a5e25012 in Perl_hv_free_ent () from /usr/lib/libperl.so.5.10
#12 0x00007f07a5e262b1 in ?? () from /usr/lib/libperl.so.5.10
#13 0x00007f07a5e28122 in Perl_hv_undef () from /usr/lib/libperl.so.5.10
#14 0x00007f07a5e477a6 in Perl_sv_clear () from /usr/lib/libperl.so.5.10
#15 0x00007f07a5e47a82 in Perl_sv_free2 () from /usr/lib/libperl.so.5.10
#16 0x00007f07a5e4766c in Perl_sv_clear () from /usr/lib/libperl.so.5.10
#17 0x00007f07a5e47a82 in Perl_sv_free2 () from /usr/lib/libperl.so.5.10
#18 0x00007f07a5e2a578 in Perl_av_undef () from /usr/lib/libperl.so.5.10
#19 0x00007f07a5e47788 in Perl_sv_clear () from /usr/lib/libperl.so.5.10
#20 0x00007f07a5e47a82 in Perl_sv_free2 () from /usr/lib/libperl.so.5.10
#21 0x00007f07a5e4766c in Perl_sv_clear () from /usr/lib/libperl.so.5.10
#22 0x00007f07a5e47a82 in Perl_sv_free2 () from /usr/lib/libperl.so.5.10
---Type <return> to continue, or q <return> to quit---
#23 0x00007f07a5e289a0 in Perl_av_clear () from /usr/lib/libperl.so.5.10
#24 0x00007f07a5e64273 in Perl_leave_scope () from /usr/lib/libperl.so.5.10
#25 0x00007f07a5e36839 in Perl_pp_unstack () from /usr/lib/libperl.so.5.10
#26 0x00007f07a5e32f86 in Perl_runops_standard () from
/usr/lib/libperl.so.5.10
#27 0x00007f07a5e3124c in perl_run () from /usr/lib/libperl.so.5.10
#28 0x0000000000400d7c in main ()
--
Olivier Mengué - http://o.mengue.free.fr/
Subject: | POE-Devel-Top-crash.pl |
#!/usr/local/bin/perl
# Test derived from 14-session-ref-3.t
# Test creating a schedule giving to P::C::S a session ID (instead of a session
# object).
use strict;
use warnings;
use POE qw(Component::Schedule Devel::Top);
use POE qw(Component::Schedule);
use DateTime::Set;
POE::Devel::Top->spawn;
POE::Session->create(
inline_states => {
_start => sub {
$poe_kernel->yield('create_schedule');
},
create_schedule => sub {
$_[HEAP]{sched} = POE::Component::Schedule->add(
$_[SESSION]->ID, Tick => DateTime::Set->from_recurrence(
# Infinite set
after => DateTime->now,
recurrence => sub {
return $_[0]->add( seconds => 1 )
},
),
[ 2 ], # Tick counter storage
);
},
Tick => sub {
},
_stop => sub {
},
},
);
POE::Kernel->run();