develooper Front page | perl.perl5.porters | Postings from October 2003

Re: [perl@21451] t/io/openpid.t tests fail on Win32 with :stdio

Thread Previous | Thread Next
From:
Steve Hay
Date:
October 17, 2003 04:27
Subject:
Re: [perl@21451] t/io/openpid.t tests fail on Win32 with :stdio
Message ID:
3F8FD29A.8090004@uk.radan.com
Abe Timmerman wrote:

>Op een wisselvallige herfstdag (Wednesday 15 October 2003 15:15), schreef 
>Steve Hay:
>
>  
>
>>The t/io/openpid.t tests currently fail in bleadperl on Win32 with the
>>
>>:stdio layer:
>>
>>    
>>
>[snip]
>  
>
>>and then hangs.  If I kill the most "junior" perl.exe process in the
>>process tree at this point then the remainder of the test continues.
>>    
>>
>
>[snip]
>
>  
>
>>This problem has been causing my overnight Smokes to hang ever since I
>>switched from perl-5.8.x to perl-current, so I don't know when this
>>problem first arose.
>>    
>>
>
>It has been there for quite a while with MinGW2 in both 5.8.1 and 5.9.0 (which 
>is why I stopped smoking win32 regularly)
>
>Looking at the smoke-reports from my windows machine I'd say somewhere 
>between:
>
>	http://nntp.x.perl.org/group/perl.daily-build.reports/4334
>and
>	http://nntp.x.perl.org/group/perl.daily-build.reports/4717
>
>(I might have missed something in the archives)
>
Found it.

This test worked in Abe's smoke report at patchlevel 19262 
(http://nntp.x.perl.org/group/perl.daily-build.reports/3969), but failed 
at patchlevel 19367 
(http://nntp.x.perl.org/group/perl.daily-build.reports/4313).

Looking through the Changes file it looks like 19286 introduced some 
flags for faststdio and set "usefaststdio" to "define" for 5.8 but 
"undef" for 5.9.  These changes were introduced to non-Configure land in 
19314.

For Win32, Perl 5.8 was using perlio anyway, but win32/config_H.vc got 
changed from:

    #define HAS_FAST_STDIO
    #define USE_FAST_STDIO

to:

    #define HAS_FAST_STDIO
    /*#define USE_FAST_STDIO*/

so when running the test suite with "PERLIO=:stdio :crlf" were are no 
longer using faststdio in bleadperl, whereas we were in 5.8.

Sure enough, if I add

    "usefaststdio=define"

to the CFG_VARS in win32/Makefile then bleadperl now passes the 
t/io/openpid.t test.

The easiest way to get the smoke working again on Win32 (other than just 
skipping the :stdio tests altogether by specifying "defaultenv=>1") is 
just to restore the "#define USE_FAST_STDIO" on Win32 so that faststdio 
is used if PERLIO is set to :stdio.  (Of course, the default setup is 
still to use :perlio, so this won't affect much more than the smokers).  
This doesn't fix the broken openpid.t test under "normal" stdio, of course.

Would there be any merit in introducing another option into the Win32 
Makefile to allow the user to specify "USE_FAST_STDIO {define|undef}"?  
The user (builder) could then more easily override the default if 
required.  Test::Smoke could also be trained to edit that option based 
on "-Dusefaststdio" and all three configurations (perlio, normal stdio, 
faststdio) could then be smoked.  However, that would require a fix for 
the openpid.t test when running under normal stdio, otherwise it just 
hangs the smoke.

- Steve


Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About