Subject: | Can't call method "create_timer" on unblessed reference |
Date: | Thu, 24 Aug 2006 21:48:38 +0100 |
To: | bug-poe-component-client-http [...] rt.cpan.org |
From: | Joel Bernstein <joel [...] fysh.org> |
Hi Rocco,
We seem to have uncovered an odd bug in
POE::Component::Client::HTTP::poco_weeble_connect_done()
Can't call method "create_timer" on unblessed reference at
/usr/local/share/perl/5.8.7/POE/Component/Client/HTTP.pm line 265.
This error is reproducible, but in a very transitory way - we do the
exact same request n times (where n can be 3..50, say) without error,
but then POE crashes with the stacktrace below. Bizarrely, we can have
runs of the application where it is impossible to provoke a crash, and
runs where it crashes very regularly. I can't get my head around this
and would love to prove that it is my application causing the error. It
is so transitory, in fact, that I almost think it's either a Perl bug or
a problem with a remote HTTP server, but none of these seems awfully
likely.
I know that isn't much of a bug report, please let me know (joel on
#poe on MAGnet/Rhizomatic IRC) whether there's anything else I can
gather for you. I'll try to put together a minimal test case tomorrow if
I have the tuits but I'm not confident that I can reproduce this at
will...
I have upgraded POE from 0.36 to 0.3601. This seems to have lowered the
chances of the error occurring, but that may be a red herring.
VERSIONS:
Perl 5.8.7 and 5.8.8
POE 0.3601 and 0.36
POE::Component::Connection::Keepalive 1.0060
POE::Component::Client::HTTP 0.77
POE::Component::Client::Keepalive 0.0801
POE::Component::Client::DNS 0.99
STACKTRACE:
2 -> _child (from /usr/local/share/perl/5.8.8/POE/Resource/Sessions.pm
at 495)
Can't call method "create_timer" on unblessed reference at
/usr/local/share/perl/5.8.8/POE/Component/Client/HTTP.pm line 265.
<us> must call select() from a running session at
/usr/local/share/perl/5.8.8/POE/Kernel.pm line 2068
POE::Kernel::select('POE::Kernel=ARRAY(0x84f202c)',
'GLOB(0x90bf790)') called at
/usr/local/share/perl/5.8.8/POE/Wheel/ReadWrite.pm line 391
POE::Wheel::ReadWrite::DESTROY('POE::Wheel::ReadWrite=ARRAY(0x90b5ce0)')
called at
/usr/local/share/perl/5.8.8/POE/Component/Connection/Keepalive.pm line
44
eval {...} called at
/usr/local/share/perl/5.8.8/POE/Component/Connection/Keepalive.pm line
44
POE::Component::Connection::Keepalive::DESTROY('POE::Component::Connection::Keepalive=ARRAY(0x9041b54)')
called at -e line 0
eval {...} called at -e line 0
(in cleanup) <us> must call select() from a running session at
/usr/local/share/perl/5.8.8/POE/Kernel.pm line 2068
POE::Kernel::select('POE::Kernel=ARRAY(0x84f202c)',
'GLOB(0x90bf790)') called at
/usr/local/share/perl/5.8.8/POE/Wheel/ReadWrite.pm line 391
POE::Wheel::ReadWrite::DESTROY('POE::Wheel::ReadWrite=ARRAY(0x90b5ce0)')
called at
/usr/local/share/perl/5.8.8/POE/Component/Connection/Keepalive.pm line
44
eval {...} called at
/usr/local/share/perl/5.8.8/POE/Component/Connection/Keepalive.pm line
44
POE::Component::Connection::Keepalive::DESTROY('POE::Component::Connection::Keepalive=ARRAY(0x9041b54)')
called at -e line 0
eval {...} called at -e line 0
<us> must call select() from a running session at
/usr/local/share/perl/5.8.8/POE/Kernel.pm line 2068
POE::Kernel::select('POE::Kernel=ARRAY(0x84f202c)',
'GLOB(0x905316c)') called at
/usr/local/share/perl/5.8.8/POE/Wheel/ReadWrite.pm line 391
POE::Wheel::ReadWrite::DESTROY('POE::Wheel::ReadWrite=ARRAY(0x90bf1c0)')
called at
/usr/local/share/perl/5.8.8/POE/Component/Connection/Keepalive.pm line
44
eval {...} called at
/usr/local/share/perl/5.8.8/POE/Component/Connection/Keepalive.pm line
44
POE::Component::Connection::Keepalive::DESTROY('POE::Component::Connection::Keepalive=ARRAY(0x905d1b4)')
called at -e line 0
eval {...} called at -e line 0
(in cleanup) <us> must call select() from a running session at
/usr/local/share/perl/5.8.8/POE/Kernel.pm line 2068
POE::Kernel::select('POE::Kernel=ARRAY(0x84f202c)',
'GLOB(0x905316c)') called at
/usr/local/share/perl/5.8.8/POE/Wheel/ReadWrite.pm line 391
POE::Wheel::ReadWrite::DESTROY('POE::Wheel::ReadWrite=ARRAY(0x90bf1c0)')
called at
/usr/local/share/perl/5.8.8/POE/Component/Connection/Keepalive.pm line
44
eval {...} called at
/usr/local/share/perl/5.8.8/POE/Component/Connection/Keepalive.pm line
44
POE::Component::Connection::Keepalive::DESTROY('POE::Component::Connection::Keepalive=ARRAY(0x905d1b4)')
called at -e line 0
eval {...} called at -e line 0
<us> must call select() from a running session at
/usr/local/share/perl/5.8.8/POE/Kernel.pm line 2068
POE::Kernel::select('POE::Kernel=ARRAY(0x84f202c)',
'GLOB(0x8d8fcd4)') called at
/usr/local/share/perl/5.8.8/POE/Wheel/ReadWrite.pm line 391
POE::Wheel::ReadWrite::DESTROY('POE::Wheel::ReadWrite=ARRAY(0x8d90394)')
called at -e line 0
eval {...} called at -e line 0
(in cleanup) <us> must call select() from a running session at
/usr/local/share/perl/5.8.8/POE/Kernel.pm line 2068
POE::Kernel::select('POE::Kernel=ARRAY(0x84f202c)',
'GLOB(0x8d8fcd4)') called at
/usr/local/share/perl/5.8.8/POE/Wheel/ReadWrite.pm line 391
POE::Wheel::ReadWrite::DESTROY('POE::Wheel::ReadWrite=ARRAY(0x8d90394)')
called at -e line 0
eval {...} called at -e line 0
<us> must call select() from a running session at
/usr/local/share/perl/5.8.8/POE/Kernel.pm line 2068
POE::Kernel::select('POE::Kernel=ARRAY(0x84f202c)',
'GLOB(0x8d7ce24)') called at
/usr/local/share/perl/5.8.8/POE/Wheel/SocketFactory.pm line 1120
POE::Wheel::SocketFactory::_shutdown('SCALAR(0x8d7cef0)',
'REF(0x8d7ce60)', 'SCALAR(0x8d7ce9c)', 'SCALAR(0x8d7cea8)',
'SCALAR(0x8d7ceb4)', 'SCALAR(0x8d7ce78)', 'SCALAR(0x8d7cec0)',
'SCALAR(0x8d7ce84)') called at
/usr/local/share/perl/5.8.8/POE/Wheel/SocketFactory.pm line 1098
POE::Wheel::SocketFactory::DESTROY('POE::Wheel::SocketFactory=ARRAY(0x8d7ce54)')
called at -e line 0
eval {...} called at -e line 0
(in cleanup) <us> must call select() from a running session at
/usr/local/share/perl/5.8.8/POE/Kernel.pm line 2068
POE::Kernel::select('POE::Kernel=ARRAY(0x84f202c)',
'GLOB(0x8d7ce24)') called at
/usr/local/share/perl/5.8.8/POE/Wheel/SocketFactory.pm line 1120
POE::Wheel::SocketFactory::_shutdown('SCALAR(0x8d7cef0)',
'REF(0x8d7ce60)', 'SCALAR(0x8d7ce9c)', 'SCALAR(0x8d7cea8)',
'SCALAR(0x8d7ceb4)', 'SCALAR(0x8d7ce78)', 'SCALAR(0x8d7cec0)',
'SCALAR(0x8d7ce84)') called at
/usr/local/share/perl/5.8.8/POE/Wheel/SocketFactory.pm line 1098
POE::Wheel::SocketFactory::DESTROY('POE::Wheel::SocketFactory=ARRAY(0x8d7ce54)')
called at -e line 0
eval {...} called at -e line 0
zsh: exit 255 ./scripts/backend.sh