X-Recipient: archive-cygwin@delorie.com
X-SWARE-Spam-Status: No, hits=-2.6 required=5.0 	tests=AWL,BAYES_00
X-Spam-Check-By: sourceware.org
From: "Matthew Kidd" <matthew.j.kidd@gmail.com>
To: <cygwin@cygwin.com>
Subject: Cygwin1.dll 1.7.1 causes ActivePerl 5.10 hang on gzip pipe close on Windows Server 2003
Date: Thu, 18 Mar 2010 16:16:05 -0700
Message-ID: <58B8917600CC4A9A8F674736E4D6E215@ghc.local>
MIME-Version: 1.0
Content-Type: text/plain; 	charset="us-ascii"
Content-Transfer-Encoding: 7bit
Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe@cygwin.com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin@cygwin.com>
List-Help: <mailto:cygwin-help@cygwin.com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner@cygwin.com
Mail-Followup-To: cygwin@cygwin.com
Delivered-To: mailing list cygwin@cygwin.com

I upgraded to Cygwin 1.7.1 on a (64-bit) Windows Server 2003 and immediately
ran into trouble. It seems that Perl can no longer shutdown pipes related to
Cygwin executables. Here is some example code:

#!/usr/bin/perl

use strict;

# my $fname = 'Y:\path\to\ratherbigfile.gz';
my $fname = '/cygdrive/y/path/to/ratherbigfile.gz';

open(FH, "gzip -dc $fname |") || die 'open failed.';
for (1..4) { my $fline = <FH>; print $fline; }

close(FH);
print "done\n";
 

Before Cygwin 1.7.1 this code ran fine. It printed out four lines, closed
the pipe, and exited. But now it hangs at the close(FH) statement and the
child gzip process maxes out a core continuing to uncompress the big file. I
either have to kill the gzip process or the Perl process. This problem
happens whether I use a Windows style file path or a Unix style file path.
It doesn't matter if I use 32-bit or 64-bit Perl.

If I replace the cygwin1.dll file from the 1.7.1 installation with an older
version of cygwin1.dll from a different installation (specifically 1.5.25
cr-0x5f1), the code above works fine (though I imagine mixing and matching
DLL version is not a good long term solution).

  - Matthew Kidd



--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

