Subject: | Problem with Wheel::ReadWrite on Windows |
Date: | Fri, 9 Jan 2009 11:44:26 +0200 |
To: | bug-POE [...] rt.cpan.org |
From: | "Alan Rothstein" <ajrothstein [...] gmail.com> |
Hi, I seem to be having a problem with Wheel::ReadWrite on Windows. Given
the code below (basically I took the logwatcher code from the cookbook and
changed it to use ReadWrite instead of Followtail:
#!/usr/bin/perl -w
use POE qw/Wheel::ReadWrite/;
use strict;
use FileHandle;
$| = 1;
my $filename = $ARGV[0];
die "Usage: $0 <filename>\n" unless $filename;
die "$0: $filename: No such file or directory\n" unless -e $filename;
die "$0: $filename: Permission denied\n" unless -r $filename;
my ($fh) = new FileHandle "<$filename";
POE::Session->create
( inline_states =>
{ _start => \&start,
got_line => sub { print "$_[ARG0]\n" },
got_error => sub { warn "$_[ARG0]\n" },
_stop => sub { die "$_[ARG0]\n" },
}
);
sub start {
$_[HEAP]->{wheel} =
POE::Wheel::ReadWrite->new(
Handle => $fh,
InputEvent => 'got_line',
ErrorEvent => 'got_error',
);
}
$poe_kernel->run();
with POE_ASSERT_DEFAULT=1 I get the following:
Please mail the following information to bug-POE@rt.cpan.org:
<fh> select error: Unknown error at C:/Perl/site/lib/POE/Loop/Select.pm line
214
POE::Kernel::loop_do_timeslice('POE::Kernel=ARRAY(0x1a807f4)') called at
C:/Perl/site/lib/POE/Loop/Select.pm line 335
POE::Kernel::loop_run('POE::Kernel=ARRAY(0x1a807f4)') called at
C:/Perl/site/lib/POE/Kernel.pm line 1286
POE::Kernel::run('POE::Kernel=ARRAY(0x1a807f4)') called at
C:\ajr\home\ken\ken\release\test-ft.pl line 35
Please mail the following information to bug-POE@rt.cpan.org:
<fh> select error: Unknown error at C:/Perl/site/lib/POE/Loop/Select.pm line
214
POE::Kernel::loop_do_timeslice('POE::Kernel=ARRAY(0x1a807f4)') called at
C:/Perl/site/lib/POE/Loop/Select.pm line 335
POE::Kernel::loop_run('POE::Kernel=ARRAY(0x1a807f4)') called at
C:/Perl/site/lib/POE/Kernel.pm line 1286
POE::Kernel::run('POE::Kernel=ARRAY(0x1a807f4)') called at
C:\ajr\home\ken\ken\release\test-ft.pl line 35
<us> must call state() from a running session at
C:/Perl/site/lib/POE/Kernel.pm line 2506
POE::Kernel::state('POE::Kernel=ARRAY(0x1a807f4)',
'POE::Wheel::ReadWrite(1) -> select read') called at
C:/Perl/site/lib/POE/Wheel/ReadWrite.pm line 403
POE::Wheel::ReadWrite::DESTROY('POE::Wheel::ReadWrite=ARRAY(0x1c589bc)')
called at C:\ajr\home\ken\ken\release\test-ft.pl line 0
eval {...} called at C:\ajr\home\ken\ken\release\test-ft.pl line 0
This is the output of perl -V
Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
Platform:
osname=MSWin32, osvers=5.00, archname=MSWin32-x86-multi-thread
uname=''
config_args='undef'
hint=recommended, useposix=true, d_sigaction=undef
useithreads=define, usemultiplicity=define
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=undef, use64bitall=undef, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cl', ccflags ='-nologo -GF -W3 -MD -Zi -DNDEBUG -O1 -DWIN32
-D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DUSE_SITECUSTOMIZE
-DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS
-DUSE_PERLIO -DPERL_MSVCRT_READFIX',
optimize='-MD -Zi -DNDEBUG -O1',
cppflags='-DWIN32'
ccversion='12.00.8804', gccversion='', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=10
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='__int64',
lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='link', ldflags ='-nologo -nodefaultlib -debug -opt:ref,icf
-libpath:"C:\Perl\lib\CORE" -machine:x86'
libpth=\lib
libs= oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib
uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib
msvcrt.lib
perllibs= oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib
uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib
msvcrt.lib
libc=msvcrt.lib, so=dll, useshrplib=true, libperl=perl510.lib
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
cccdlflags=' ', lddlflags='-dll -nologo -nodefaultlib -debug
-opt:ref,icf -libpath:"C:\Perl\lib\CORE" -machine:x86'
Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS
PERL_MALLOC_WRAP PL_OP_SLAB_ALLOC USE_ITHREADS
USE_LARGE_FILES USE_PERLIO USE_SITECUSTOMIZE
Locally applied patches:
ActivePerl Build 1004 [287188]
33741 avoids segfaults invoking S_raise_signal() (on Linux)
33763 Win32 process ids can have more than 16 bits
32809 Load 'loadable object' with non-default file extension
32728 64-bit fix for Time::Local
Built under MSWin32
Compiled at Sep 3 2008 13:16:37
@INC:
C:/Perl/site/lib
C:/Perl/lib
.
I am using the latest subversion release of POE. (I tried 1.003 first.
Same problem)
This works on Linux 1.003 no problem.
Thanks in advance for any help.
- Alan -