Skip Menu |

This queue is for tickets about the POE-Loop-Tk CPAN distribution.

Report information
The Basics
Id: 47788
Status: resolved
Priority: 0/
Queue: POE-Loop-Tk

People
Owner: Nobody in particular
Requestors: hinrik.sig [...] gmail.com
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



Subject: t/30_loops/tk/wheel_run.t fails (timeout reached)
t/30_loops/tk/wheel_run.t fails on my machine (see first attachment). I then noticed that I only had Ubuntu's "perl-tk" package installed but not the "tk" one. After installing "tk", it fails differently (see second attachment).
Subject: with_tk.txt
$ perl -Ilib t/30_loops/tk/wheel_run.t 1..99 ok 1 - new: at least one io event ok 2 - new: only valid conduits ok 3 - new: cannot mix deprecated Filter with StdioFilter ok 4 - new: Program is needed inactivity timeout reached! at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 142. not ok 5 - coderef/default flush count (9349) # Failed test 'coderef/default flush count (9349)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 297. # got: '0' # expected: '3' not ok 6 - coderef/pty-pipe flush count (9349) # Failed test 'coderef/pty-pipe flush count (9349)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 297. # got: '0' # expected: '3' not ok 7 - coderef/pipe flush count (9349) # Failed test 'coderef/pipe flush count (9349)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 297. # got: '0' # expected: '3' not ok 8 - string/pause_resume flush count (9349) # Failed test 'string/pause_resume flush count (9349)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 297. # got: '0' # expected: '6' not ok 9 - coderef/pty flush count (9349) # Failed test 'coderef/pty flush count (9349)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 297. # got: '0' # expected: '3' not ok 10 - string/killing flush count (9349) # Failed test 'string/killing flush count (9349)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 297. # got: '0' # expected: '2' not ok 11 - string/pty flush count (9349) # Failed test 'string/pty flush count (9349)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 297. # got: '0' # expected: '3' not ok 12 - string/pipe flush count (9349) # Failed test 'string/pipe flush count (9349)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 297. # got: '0' # expected: '3' XS_Tk__Callback_Call error:<rv> session (POE::Session=ARRAY(0x12b8548)) does not exist at lib/POE/Session.pm line 595 POE::Session::ID('POE::Session=ARRAY(0x12b8548)') called at lib/POE/Resource/Aliases.pm line 127 POE::Kernel::_data_alias_loggable('POE::Kernel=ARRAY(0xe57340)', 'POE::Session=ARRAY(0x12b8548)') called at lib/POE/Kernel.pm line 874 POE::Kernel::_dispatch_event('POE::Kernel=ARRAY(0xe57340)', 'POE::Session=ARRAY(0x1318500)', 'POE::Session=ARRAY(0x12b8548)', '_stop', 8, 'ARRAY(0x12b8638)', 'lib/POE/Resource/Sessions.pm', 494, undef, ...) called at lib/POE/Resource/Sessions.pm line 491 POE::Kernel::_data_ses_stop('POE::Kernel=ARRAY(0xe57340)', 'POE::Session=ARRAY(0x1318500)') called at lib/POE/Resource/Signals.pm line 417 POE::Kernel::_data_sig_free_terminated_sessions('POE::Kernel=ARRAY(0xe57340)') called at lib/POE/Kernel.pm line 988 POE::Kernel::_dispatch_event('POE::Kernel=ARRAY(0xe57340)', 'POE::Kernel=ARRAY(0xe57340)', 'POE::Kernel=ARRAY(0xe57340)', '_signal', 16, 'ARRAY(0x8b1680)', 'lib/POE/Loop/TkCommon.pm', 39, undef, ...) called at lib/POE/Loop/TkCommon.pm line 35 POE::Kernel::__ANON__() called at /usr/lib/perl5/Tk/Widget.pm line 363 eval {...} called at /usr/lib/perl5/Tk/Widget.pm line 363 eval {...} called at /usr/lib/perl5/Tk/Widget.pm line 363 Tk::Widget::_Destroyed('Tk::MainWindow=HASH(0xfabc50)') called at /usr/lib/perl5/Tk/MainWindow.pm line 76 Tk::MainWindow::_Destroyed('Tk::MainWindow=HASH(0xfabc50)') called at /usr/lib/perl5/Tk/MainWindow.pm line 160 eval {...} called at /usr/lib/perl5/Tk/MainWindow.pm line 160 Tk::MainWindow::END() called at t/30_loops/tk/wheel_run.t line 36 eval {...} called at t/30_loops/tk/wheel_run.t line 36 # Looks like you planned 99 tests but only ran 12. # Looks like you failed 8 tests of 12 run.
Subject: no_tk.txt
$ perl -Ilib t/30_loops/tk/wheel_run.t 1..99 ok 1 - new: at least one io event ok 2 - new: only valid conduits ok 3 - new: cannot mix deprecated Filter with StdioFilter ok 4 - new: Program is needed inactivity timeout reached! at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 142. not ok 5 - string/pty-pipe flush count (8350) # Failed test 'string/pty-pipe flush count (8350)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 297. # got: '0' # expected: '3' not ok 6 - coderef/pipe flush count (8350) # Failed test 'coderef/pipe flush count (8350)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 297. # got: '0' # expected: '3' not ok 7 - string/default flush count (8350) # Failed test 'string/default flush count (8350)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 297. # got: '0' # expected: '3' not ok 8 - string/killing flush count (8350) # Failed test 'string/killing flush count (8350)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 297. # got: '0' # expected: '2' not ok 9 - coderef/pty-pipe flush count (8350) # Failed test 'coderef/pty-pipe flush count (8350)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 297. # got: '0' # expected: '3' XS_Tk__Callback_Call error:<rv> session (POE::Session=ARRAY(0x128b548)) does not exist at lib/POE/Session.pm line 595 POE::Session::ID('POE::Session=ARRAY(0x128b548)') called at lib/POE/Resource/Aliases.pm line 127 POE::Kernel::_data_alias_loggable('POE::Kernel=ARRAY(0xe2a340)', 'POE::Session=ARRAY(0x128b548)') called at lib/POE/Kernel.pm line 874 POE::Kernel::_dispatch_event('POE::Kernel=ARRAY(0xe2a340)', 'POE::Session=ARRAY(0xbee5d0)', 'POE::Session=ARRAY(0x128b548)', '_stop', 8, 'ARRAY(0x128b638)', 'lib/POE/Resource/Sessions.pm', 494, undef, ...) called at lib/POE/Resource/Sessions.pm line 491 POE::Kernel::_data_ses_stop('POE::Kernel=ARRAY(0xe2a340)', 'POE::Session=ARRAY(0xbee5d0)') called at lib/POE/Resource/Signals.pm line 417 POE::Kernel::_data_sig_free_terminated_sessions('POE::Kernel=ARRAY(0xe2a340)') called at lib/POE/Kernel.pm line 988 POE::Kernel::_dispatch_event('POE::Kernel=ARRAY(0xe2a340)', 'POE::Kernel=ARRAY(0xe2a340)', 'POE::Kernel=ARRAY(0xe2a340)', '_signal', 16, 'ARRAY(0xb91230)', 'lib/POE/Loop/TkCommon.pm', 39, undef, ...) called at lib/POE/Loop/TkCommon.pm line 35 POE::Kernel::__ANON__() called at /usr/lib/perl5/Tk/Widget.pm line 363 eval {...} called at /usr/lib/perl5/Tk/Widget.pm line 363 eval {...} called at /usr/lib/perl5/Tk/Widget.pm line 363 Tk::Widget::_Destroyed('Tk::MainWindow=HASH(0xf7ec50)') called at /usr/lib/perl5/Tk/MainWindow.pm line 76 Tk::MainWindow::_Destroyed('Tk::MainWindow=HASH(0xf7ec50)') called at /usr/lib/perl5/Tk/MainWindow.pm line 160 eval {...} called at /usr/lib/perl5/Tk/MainWindow.pm line 160 Tk::MainWindow::END() called at t/30_loops/tk/wheel_run.t line 36 eval {...} called at t/30_loops/tk/wheel_run.t line 36 # Looks like you planned 99 tests but only ran 9. # Looks like you failed 5 tests of 9 run.
I just checked with Hinrik in IRC. The problem is still valid after POE 1.266 and POE::Loop::Tk 1.302.
Can't reproduce on FreeBSD, and I can't get Tk to install on OSX. Can you provide a temporary shell on the affected machine? Ping me in IRC.
Thank you for the use of a shell. The latest releases seem to work: rcaputo@hinrikbox:~/POE-Loop-Tk-1.302$ perl t/poe_loop_tk/wheel_run.t 1..99 ok 1 - new: at least one io event ok 2 - new: only valid conduits ok 3 - new: cannot mix deprecated Filter with StdioFilter ok 4 - new: Program is needed ok 5 - string/pause_resume response type ok 6 - string/pause_resume stdout response ok 7 - string/pipe response type ok 8 - string/pipe stdout response ok 9 - coderef/default response type ok 10 - coderef/default stdout response ok 11 - string/default response type ok 12 - string/default stdout response ok 13 - string/killing response type ok 14 - string/killing stdout response ok 15 - coderef/shutdown response type ok 16 - coderef/shutdown stdout response ok 17 - coderef/pipe response type ok 18 - coderef/pipe stdout response ok 19 - string/pty-pipe response type ok 20 - string/pty-pipe stdout response ok 21 - coderef/pty-pipe response type ok 22 - coderef/pty-pipe stdout response ok 23 - coderef/pty response type ok 24 - coderef/pty stdout response ok 25 - string/pty response type ok 26 - string/pty stdout response ok 27 - string/pipe response type ok 28 - string/pipe stderr response ok 29 - string/killing response type ok 30 - string/killing stdout response ok 31 - coderef/default response type ok 32 - coderef/default stderr response ok 33 - string/pause_resume response type ok 34 - string/pause_resume stderr response ok 35 - string/default response type ok 36 - string/default stderr response ok 37 - coderef/pipe response type ok 38 - coderef/pipe stderr response ok 39 - string/pause_resume response type ok 40 - string/pause_resume stdout response ok 41 - string/killing close ok 42 - string/killing driver_out_octets at close ok 43 - string/killing driver_out_messages at close ok 44 - string/pause_resume response type ok 45 - string/pause_resume stdout response ok 46 - string/pipe close ok 47 - string/pipe driver_out_octets at close ok 48 - string/pipe driver_out_messages at close ok 49 - string/pty-pipe response type ok 50 - string/pty-pipe stderr response ok 51 - coderef/default close ok 52 - coderef/default driver_out_octets at close ok 53 - coderef/default driver_out_messages at close ok 54 - coderef/pty response type ok 55 - coderef/pty stdout response ok 56 - string/default close ok 57 - string/default driver_out_octets at close ok 58 - string/default driver_out_messages at close ok 59 - string/pty response type ok 60 - string/pty stdout response ok 61 - coderef/pty-pipe response type ok 62 - coderef/pty-pipe stderr response ok 63 - string/pause_resume response type ok 64 - string/pause_resume stderr response ok 65 - coderef/pipe close ok 66 - coderef/pipe driver_out_octets at close ok 67 - coderef/pipe driver_out_messages at close ok 68 - string/pause_resume response type ok 69 - string/pause_resume stdout response ok 70 - string/pause_resume response type ok 71 - string/pause_resume stderr response ok 72 - string/pause_resume close ok 73 - string/pause_resume driver_out_octets at close ok 74 - string/pause_resume driver_out_messages at close ok 75 - string/pty-pipe close ok 76 - string/pty-pipe driver_out_octets at close ok 77 - string/pty-pipe driver_out_messages at close ok 78 - coderef/pty close ok 79 - coderef/pty driver_out_octets at close ok 80 - coderef/pty driver_out_messages at close ok 81 - string/pty close ok 82 - string/pty driver_out_octets at close ok 83 - string/pty driver_out_messages at close ok 84 - coderef/pty-pipe close ok 85 - coderef/pty-pipe driver_out_octets at close ok 86 - coderef/pty-pipe driver_out_messages at close ok 87 - coderef/shutdown response type ok 88 - coderef/shutdown stdout response ok 89 - coderef/shutdown close ok 90 - coderef/pty-pipe flush count (11070) ok 91 - coderef/pty flush count (11070) ok 92 - coderef/pipe flush count (11070) ok 93 - coderef/default flush count (11070) ok 94 - string/pty-pipe flush count (11070) ok 95 - string/pty flush count (11070) ok 96 - string/pipe flush count (11070) ok 97 - string/default flush count (11070) ok 98 - string/killing flush count (11070) ok 99 - string/pause_resume flush count (11070) rcaputo@hinrikbox:~/POE-Loop-Tk-1.302$ prove t/poe_loop_tk/wheel_run.t t/poe_loop_tk/wheel_run.t .. ok All tests successful. Files=1, Tests=99, 14 wallclock secs ( 0.03 usr 0.00 sys + 0.26 cusr 0.05 csys = 0.34 CPU) Result: PASS
The problem appears to have been resolved. I'm not sure if it's the newer POE or a later version of Tk. Can you verify whether the problem persists after upgrading POE and Tk?
Unfortunately the problem persists. See attachment.
Subject: wheel_run.txt
$ tar zxvf POE-Loop-Tk-1.302.tar.gz POE-Loop-Tk-1.302/ POE-Loop-Tk-1.302/CHANGES POE-Loop-Tk-1.302/lib/ POE-Loop-Tk-1.302/lib/POE/ POE-Loop-Tk-1.302/lib/POE/Loop/ POE-Loop-Tk-1.302/lib/POE/Loop/Tk.pm POE-Loop-Tk-1.302/lib/POE/Loop/TkActiveState.pm POE-Loop-Tk-1.302/lib/POE/Loop/TkCommon.pm POE-Loop-Tk-1.302/Makefile.PL POE-Loop-Tk-1.302/MANIFEST POE-Loop-Tk-1.302/MANIFEST.SKIP POE-Loop-Tk-1.302/META.yml POE-Loop-Tk-1.302/README POE-Loop-Tk-1.302/t/ POE-Loop-Tk-1.302/t/00_info.t $ cd POE-Loop-Tk-1.302/ lib t CHANGES Makefile.PL MANIFEST MANIFEST.SKIP META.yml README $ perl -MPOE -E'say $POE::VERSION' 1.286 $ perl -MPOE::Test::Loops -E'say $POE::Test::Loops::VERSION' 1.032 $ perl Makefile.PL ============================================= Prompts may be bypassed by running: /usr/bin/perl Makefile.PL --default ============================================= Some of POE::Loop::Tk's tests require a functional network. You can skip these network tests if you'd like. Would you like to skip the network tests? [n] y WARNING: META_MERGE is not a known parameter. WARNING: CONFIGURE_REQUIRES is not a known parameter. WARNING: META_ADD is not a known parameter. Checking if your kit is complete... Looks good 'CONFIGURE_REQUIRES' is not a known MakeMaker parameter name. 'META_ADD' is not a known MakeMaker parameter name. 'META_MERGE' is not a known MakeMaker parameter name. Writing Makefile for POE::Loop::Tk $ perl -Ilib t/poe_loop_tk/wheel_run.t 1..99 ok 1 - new: at least one io event ok 2 - new: only valid conduits ok 3 - new: cannot mix deprecated Filter with StdioFilter ok 4 - new: Program is needed inactivity timeout reached! at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 145. not ok 5 - string/pty flush count (6161) # Failed test 'string/pty flush count (6161)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 308. # got: '0' # expected: '3' not ok 6 - string/pty-pipe flush count (6161) # Failed test 'string/pty-pipe flush count (6161)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 308. # got: '0' # expected: '3' not ok 7 - coderef/pipe flush count (6161) # Failed test 'coderef/pipe flush count (6161)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 308. # got: '0' # expected: '3' not ok 8 - coderef/pty flush count (6161) # Failed test 'coderef/pty flush count (6161)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 308. # got: '0' # expected: '3' not ok 9 - string/pause_resume flush count (6161) # Failed test 'string/pause_resume flush count (6161)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 308. # got: '0' # expected: '6' not ok 10 - string/killing flush count (6161) # Failed test 'string/killing flush count (6161)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 308. # got: '0' # expected: '2' not ok 11 - string/pipe flush count (6161) # Failed test 'string/pipe flush count (6161)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 308. # got: '0' # expected: '3' not ok 12 - string/default flush count (6161) # Failed test 'string/default flush count (6161)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 308. # got: '0' # expected: '3' not ok 13 - coderef/default flush count (6161) # Failed test 'coderef/default flush count (6161)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 308. # got: '0' # expected: '3' not ok 14 - coderef/pty-pipe flush count (6161) # Failed test 'coderef/pty-pipe flush count (6161)' # at /usr/local/share/perl/5.10.0/POE/Test/Loops/wheel_run.pm line 308. # got: '0' # expected: '3' # Looks like you planned 99 tests but ran 14. # Looks like you failed 10 tests of 14 run. # Looks like your test exited with 1 just after 14.
From: jozef [...] kutej.net
the problem seems to be with 64-bit machines - see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=571423 works on my laptop but on x86_64 it eats all the cpu after: t/poe_loop_tk/comp_tcp_concurrent.t ........... 1..18 # You might see a 'disconnect' error during this test. # It may be ignored. ok 1 - callback server : 1 connections open ok 2 - acceptor server : one connection open ok 3 - callback server : 2 connections open ok 4 - callback server : 3 connections open ok 5 - callback server : 4 connections open strace to the perl process shows just - read(4, 0xb69284, 4096) = -1 EAGAIN (Resource temporarily unavailable) read(4, 0xb69284, 4096) = -1 EAGAIN (Resource temporarily unavailable) select(64, [0 4 5 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63], [31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63], [], NULL) = -1 EBADF (Bad file descriptor) that is looping for ever. after I've killed the perl process the test continue with all ok besides these tests: inactivity timeout reached! at /usr/share/perl5/POE/Test/Loops/wheel_run.pm line 145. not ok 5 - coderef/pipe flush count (21511) # Failed test 'coderef/pipe flush count (21511)' # at /usr/share/perl5/POE/Test/Loops/wheel_run.pm line 308. # got: '0' # expected: '3' not ok 6 - string/pty flush count (21511) # Failed test 'string/pty flush count (21511)' # at /usr/share/perl5/POE/Test/Loops/wheel_run.pm line 308. # got: '0' # expected: '3' not ok 7 - string/pipe flush count (21511) # Failed test 'string/pipe flush count (21511)' # at /usr/share/perl5/POE/Test/Loops/wheel_run.pm line 308. # got: '0' # expected: '3' not ok 8 - coderef/pty flush count (21511) # Failed test 'coderef/pty flush count (21511)' # at /usr/share/perl5/POE/Test/Loops/wheel_run.pm line 308. # got: '0' # expected: '3' not ok 9 - coderef/pty-pipe flush count (21511) # Failed test 'coderef/pty-pipe flush count (21511)' # at /usr/share/perl5/POE/Test/Loops/wheel_run.pm line 308. # got: '0' # expected: '3' not ok 10 - coderef/default flush count (21511) # Failed test 'coderef/default flush count (21511)' # at /usr/share/perl5/POE/Test/Loops/wheel_run.pm line 308. # got: '0' # expected: '3' not ok 11 - string/killing flush count (21511) # Failed test 'string/killing flush count (21511)' # at /usr/share/perl5/POE/Test/Loops/wheel_run.pm line 308. # got: '0' # expected: '2' not ok 12 - string/pty-pipe flush count (21511) # Failed test 'string/pty-pipe flush count (21511)' # at /usr/share/perl5/POE/Test/Loops/wheel_run.pm line 308. # got: '0' # expected: '3' not ok 13 - string/default flush count (21511) # Failed test 'string/default flush count (21511)' # at /usr/share/perl5/POE/Test/Loops/wheel_run.pm line 308. # got: '0' # expected: '3' not ok 14 - string/pause_resume flush count (21511) # Failed test 'string/pause_resume flush count (21511)' # at /usr/share/perl5/POE/Test/Loops/wheel_run.pm line 308. # got: '0' # expected: '6' # Looks like you planned 99 tests but ran 14. # Looks like you failed 10 tests of 14 run. # Looks like your test exited with 1 just after 14. Dubious, test returned 1 (wstat 256, 0x100) Failed 95/99 subtests the rest of the tests are passing.
Yeah, I just tried it on a 32bit machine of mine and it passes there.
From: jozef [...] kutej.net
Try to install: http://search.cpan.org/CPAN/authors/id/S/SR/SREZIC/Tk-804.028_502.tar.gz Than the tests are passing on "my" amd64. Cheers, Jozef
On Wed Mar 17 12:16:15 2010, JKUTEJ wrote: Show quoted text
> Try to install: > > http://search.cpan.org/CPAN/authors/id/S/SR/SREZIC/Tk-804.028_502.tar.gz > > Than the tests are passing on "my" amd64.
Do you mean that this was a bug in Tk, but now it's fixed?
The Debian bug has been closed, and by all accounts this is working now on 32- and 64-bit machines.