Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

POE::Component::Client::Keepalive crashes perl (5.16) on Windows

0 views
Skip to first unread message

Michael Lackhoff

unread,
Feb 15, 2015, 7:15:02 AM2/15/15
to p...@perl.org
Hi,

I am trying to install an application on a new PC that uses
POE::Component::Client::HTTP to get web pages in parallel. But I am
having problems installing it. When it comes to the dependency mentioned
in the Subject perl crashes several times during dmake test. It is not
just a simple test failure but a Windows dialog box appears, saying that
perl.exe has crashed.

A previous installation from 2009 works without any problems but since
it is still on XP I thought it is time for an update. As a possible
workaround I even tried to install the old versions from 2009. With them
I didn't get crashes but test failures and hangs during dmake test.

The current system I want to install it on is Windows 7 x64 with
Strawberry Perl 5.16.3.1 32bit (but same result for 64 bit).
It was much better with Perl 5.20.1 x64 (kept hanging in
50_bisbee_timeout.t) but since there are no mod_perl binaries for 5.20
yet, this is not an option for me. Because of other parts of my stack I
am even bound to 32bit and for that 5.16 is the last one available (s.
http://people.apache.org/~stevehay/)

Any ideas how to get it installed? Of course I am willing to do any
debugging that might help fixing the problems.

Or are there any reliable alternatives I could use to load web pages in
parallel within a cross platform application (Linux, Windows)?

-Michael

Rocco Caputo

unread,
Feb 15, 2015, 1:45:01 PM2/15/15
to Michael Lackhoff, p...@perl.org
> On Feb 15, 2015, at 06:59, Michael Lackhoff <mic...@lackhoff.de> wrote:
>
> When it comes to the dependency mentioned
> in the Subject perl crashes several times during dmake test. It is not
> just a simple test failure but a Windows dialog box appears, saying that
> perl.exe has crashed.

Hello, Michael.

In these cases I usually use something like Devel::Trace to find out which line(s) of Perl were executing before the dialog pops up. Output will be super verbose, but it's the last ten lines (or so) that really matter.

While it's possible to turn on crash dumps and examine them in a debugger, I've found this to be generally unhelpful on Windows. The same goes for Windows system call traces. There's a tool for that, but Perl tends to crash in its own code.

Please be sure you're using the latest available versions of POE, POE::Component::Resolver, and POE::Component::Client::Keepalive. The PPM build system is often stuck on some earlier version.

It feels like the most problematic part of POE::Component::Client::Keepalive's stack would be POE::Component::Resolver. It's all "pure Perl", but the resolver uses POE::Wheel::Run to move blocking DNS calls into subprocesses.

POE::Wheel::Run uses Windows-specific modules to avoid problems with fork(). Many of these modules are bundled with Perl, but maybe PPM and/or CPAN contain newer versions. As a general recommendation, I suppose it wouldn't hurt to make sure these are up to date: Win32API::File, Win32::Console, Win32::Process, Win32::Job, and Win32. There may be unmet minimum version requirements for your particular setup.

If you get Devel::Trace working, sending me the last output before the popup might help.

--
Rocco Caputo <rca...@pobox.com>

0 new messages