I'm using AS Perl v5.8.8 build 817 on XP Pro. I just reinstalled it so
had no extra modules installed except PAR and PAR-Packer. I installed
Win32-API and uncommented the first or second use statements -- got the
Parent and Child output, no problem (though sometimes in reverse order,
but only with one of those lines uncommented).
I then installed Win32-Process-Info and uncommented the "use
Win32::Process::Info;" line. This time I got the VS JIT debugger popup
with the message "An unhandled win32 exception occurred in perl.exe
[3608]." (The number changes each time.)
I then installed Win32-OLE and got the crash with any of the OLE use
statements uncommented.
Garyl Erickson
Mgr., Integration Engineering
Veicon Technology, Inc. <http://www.veicon.com>
Malcolm Nooning wrote:
Hello,
I would like to ask a few people who have a Windows2000 or WindowsXP
machine to run a short code snippet.
There is no one forum on which to ask for this, so I am picking on
this par forum and asking for forgiveness for interrupting your normal
flow of thought.
I am in communication with the author of Win32::Process::Info about an
Activestate Windows fork problem versus Win32::Process::Info. The
author has responded at
http://rt.cpan.org/Public/Bug/Display.html?id=24286
It seems that the mere presence of a "use Win32::Process::Info"
statement, along with even an empty fork(), causes a perl interpreter
crash. As it turns out, there are a number of "use xxxx" things that
will result in a perl interpreter crash, if there is a Windows fork
involved.
If you have a windows 2K or XP machine, please run the code snippet
below, after uncommenting each "use" statement, one at a time, in
turn, to see if your machine, too, exhibits the perl interpreter
crash. On my machine, any of the last four will cause it. I find it
hard to believe that such an important problem would never have been
reported before. I need to know if it is particular to my machine.
Thanks
----------------------paste
#!/usr/bin/perl -w
#use Win32::API;
#use Win32API::Registry;
#use Win32::OLE;
#use Win32::OLE::Const;
#use Win32::OLE::Variant;
#use Win32::Process::Info;
if (my $pid = fork()) {
print "Parent\n";
}
elsif(defined $pid) {
print "Child\n";
exit;
} else {
print "Failed to fork:$!:\n";
}
--------------------------end paste