Fri Jun 05 10:09:41 2009: Request 46688 was acted upon.
Transaction: Ticket created by SHAY
       Queue: Win32-Process
     Subject: (No subject given)
   Broken in: 0.14
    Severity: Important
       Owner: Nobody
  Requestors: s...@cpan.org
      Status: new
 Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=46688 >


[Emailed to JDB, 27/05/2009. I should have logged it in CPAN/RT instead,
so here it is...]

I've been rebuilding various things with VC9 lately, and came across a
problem in the mod_perl test suite in which the httpd.exe wasn't getting
killed after the tests had finished.

It turns out to be a problem with Win32::Process::KillProcess(), which
seems not to work any more in my VC9 build of perl. I can reproduce the
problem with just this:

use Win32::Process;
my $obj;
Win32::Process::Create(
  $obj, 'C:/Windows/Notepad.exe', 'Notepad', 0, NORMAL_PRIORITY_CLASS(), '.'
);
sleep 2;
my $pid = $obj->GetProcessID();
Win32::Process::KillProcess($pid, 0);

If I change the last line to:

$obj->Kill(0);

then it works okay.

The KillProcess() call works okay in a VC8 build of the same version of
perl (5.10.0), with all the same build options, on the same machine, as
the same user.

I don't know what VC9 has done to break things, but if I change the
OpenProcess() permissions used by KillProcess() to match those used by
Open() then it works again with VC9.

The attached patch does this.

This might also resolve the following old CPAN ticket:

http://rt.cpan.org/Public/Bug/Display.html?id=12672

Attachment: killprocess.pat
Description: Binary data

Reply via email to