>> With Visual Studio 10 x64, I get the following error at configure time:
>> 
>>      ...
>>      D:\build.ntx64vs10>perl ms\uplink-x86_64.pl masm  1>ms\uptable.asm 
>>      D:\build.ntx64vs10>ml64 -c -Foms\uptable.obj ms\uptable.asm 
>>       Assembling: ms\uptable.asm
>>      ms\uptable.asm(356) : error A2088:END directive required at end of file
>>      ms\uptable.asm(356) : fatal error A1010:unmatched block nesting : 
>> _lazy18
>>      Microsoft (R) Macro Assembler (x64) Version 10.00.40219.01
>>      Copyright (C) Microsoft Corporation.  All rights reserved.
>>      D:\build.ntx64vs10>perl util\mk1mf.pl VC-WIN64A  1>ms\nt.mak 
>>      ...
>
>Which Perl? There was somewhat similar failure reported in mixture of
>different run-time environments like native Windows, MSYS, Cygwin. If
>it's not "native" Perl like ActiveState, then switch to "native" one.
>Otherwise it might be interference with antivirus, most likely Windows
>Defender. If you at his point can run 'ml64 -c -Foms\uptable.obj
>ms\uptable.asm' manually from command prompt, then switch off your
>antivirus. The fact that it works with other compilers is
>circumstantial, this kind of failure is about delicate timing.

I'm using:

        >perl -v

        This is perl 5, version 12, subversion 4 (v5.12.4) built for 
MSWin32-x86-multi-thread
        (with 9 registered patches, see perl -V for more detail)

        Copyright 1987-2010, Larry Wall

        Binary build 1205 [294981] provided by ActiveState 
http://www.ActiveState.com
        Built Jun 20 2011 18:35:25

I'm not running any antivirus software, including WIndows Defender (I
explicitly disabled it).  

But your mention of "delicate timing" prompted me to look at the
ms/uplink-x86_64.pl script more closely and I think I figured out the
problem: buffering.

It appears that, on windows at least, pipes do not always get flushed when
they are closed.  I verified this was happening by modifying ms/do_win64a.bat
to run:

        :ml64
        perl ms\uplink-x86_64.pl masm > ms\uptable.asm
        TYPE MS\UPTABLE.ASM
        ml64 -c -Foms\uptable.obj ms\uptable.asm

and verified that indeed, the file was sometimes truncated.

My proposed patch, with which I can no longer reproduce the problem:

--- ms/uplink-x86_64.pl.~1~     2008-12-19 02:17:29.000000000 -0800
+++ ms/uplink-x86_64.pl 2012-05-21 15:22:37.555669600 -0700
@@ -3,6 +3,8 @@
 $output=shift;
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
 open STDOUT,"| $^X ${dir}../crypto/perlasm/x86_64-xlate.pl $output";
+# disable stdio buffering, which isn't always flushed to pipes.
+$| = 1;
 push(@INC,"${dir}.");

 require "uplink-common.pl";
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to