openssl: nmake test on Windows 11: 10-test_exp.t Can't spawn "..\..\test\exptest.exe": No such file or directory

I am trying to build openssl on Windows 11, using Strawberry Perl version 5.32.1, and “x64 Native Tools Command Prompt for VS 2022”:

>git clone https://github.com/openssl/openssl.git
>cd openssl
>perl Configure
      Configuring OpenSSL version 3.2.0-dev for target VC-WIN64A
      Using os-specific seed configuration
      Created configdata.pm
      Running configdata.pm
      Created makefile.in
      Created makefile
      Created include\openssl\configuration.h
    
      **********************************************************************
      ***                                                                ***
      ***   OpenSSL has been successfully configured                     ***
      ***                                                                ***
      ***   If you encounter a problem while building, please open an    ***
      ***   issue on GitHub <https://github.com/openssl/openssl/issues>  ***
      ***   and include the output from the following command:           ***
      ***                                                                ***
      ***       perl configdata.pm --dump                                ***
      ***                                                                ***
      ***   (If you are new to OpenSSL, you might want to consult the    ***
      ***   'Troubleshooting' section in the INSTALL.md file first)      ***
      ***                                                                ***
      **********************************************************************

>nmake
>nmake test

Microsoft (R) Program Maintenance Utility Version 14.33.31630.0
Copyright (C) Microsoft Corporation.  All rights reserved.

        "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.33.31629\bin\HostX64\x64\nmake.exe" /                   depend

Microsoft (R) Program Maintenance Utility Version 14.33.31630.0
Copyright (C) Microsoft Corporation.  All rights reserved.

        "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.33.31629\bin\HostX64\x64\nmake.exe" /                   _tests

Microsoft (R) Program Maintenance Utility Version 14.33.31630.0
Copyright (C) Microsoft Corporation.  All rights reserved.

        IF EXIST .manifest DEL /F /Q .manifest
        IF EXIST libssl-3-x64.dll DEL /F /Q libssl-3-x64.dll
        cmd /C ""link" /nologo /debug /dll  /nologo /debug @C:\Users\hakon\AppData\Local\Temp\nm8A4.tmp /implib:libssl.lib || (DEL /Q libssl-3-x64.* libssl.lib & EXIT 1)"
LINK : libssl-3-x64.dll not found or not built by the last incremental link; performing full link
   Creating library libssl.lib and object libssl.exp
        IF EXIST libssl-3-x64.dll.manifest  "mt" -nologo -manifest libssl-3-x64.dll.manifest -outputresource:libssl-3-x64.dll
        IF EXIST apps\libssl-3-x64.dll DEL /Q /F apps\libssl-3-x64.dll
        IF EXIST test\libssl-3-x64.dll DEL /Q /F test\libssl-3-x64.dll
        IF EXIST fuzz\libssl-3-x64.dll DEL /Q /F fuzz\libssl-3-x64.dll
 
[...]

@C:\Users\hakon\AppData\Local\Temp\nmFA0.tmp || (DEL /Q legacy.* providers\legacy.* & EXIT 1)"
        IF EXIST providers\legacy.dll.manifest  "mt" -nologo -manifest providers\legacy.dll.manifest -outputresource:providers\legacy.dll
        cmd /C "set "SRCTOP=." & set "BLDTOP=." & set "PERL=C:\Strawberry\perl\bin\perl.exe" & set "FIPSKEY=f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" & "C:\Strawberry\perl\bin\perl.exe" ".\test\run_tests.pl" "
00-prep_fipsmodule_cnf.t .. skipped: FIPS module config file only supported in a fips build
Files=1, Tests=0,  1 wallclock secs ( 0.02 usr +  0.02 sys =  0.03 CPU)
Result: NOTESTS
01-test_abort.t .................... ok
01-test_fipsmodule_cnf.t ........... skipped: Test only supported in a fips build
01-test_sanity.t ................... ok
01-test_symbol_presence.t .......... skipped: This is unsupported on MSYS, MinGW or MSWin32
01-test_test.t ..................... ok
02-test_errstr.t ................... skipped: This is unsupported on MSYS/MinGW or MSWin32
02-test_internal_context.t ......... ok
02-test_internal_ctype.t ........... ok
02-test_internal_exts.t ............ ok
02-test_internal_keymgmt.t ......... ok
02-test_internal_provider.t ........ ok
02-test_lhash.t .................... ok
02-test_list.t ..................... ok
02-test_localetest.t ............... skipped: Locale tests not available on Windows or VMS
02-test_ordinals.t ................. ok
02-test_priority_queue.t ........... skipped: No priority queues tests without QUIC
02-test_sparse_array.t ............. ok
02-test_stack.t .................... ok
03-test_exdata.t ................... ok
03-test_fipsinstall.t .............. skipped: Test only supported in a fips build
03-test_internal_asn1.t ............ ok
03-test_internal_asn1_dsa.t ........ ok
03-test_internal_bn.t .............. skipped: This test is unsupported in a shared library build on Windows

[...]

06-test_algorithmid.t .............. ok
06-test_rdcpu_sanity.t ............. ok
07-test_bio_comp.t ................. skipped: No compression algorithms
10-test_bn.t ....................... ok
10-test_exp.t ......................
Can't spawn "..\..\test\exptest.exe": No such file or directory at ..\..\util\wrap.pl line 54.
C:\Strawberry\perl\bin\perl.exe ..\..\util\wrap.pl ..\..\test\exptest.exe => 255
not ok 1 - running exptest
10-test_exp.t ...................... 1/? ---------------------------------------
#   Failed test 'running exptest'
#   at C:\Users\hakon\test\openssl\openssl\util\perl/OpenSSL/Test/Simple.pm line 77.
10-test_exp.t ...................... Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/1 subtests
15-test_dh.t ....................... ok
15-test_dsa.t ...................... ok
15-test_dsaparam.t ................. ok
15-test_ec.t ....................... ok

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Comments: 20 (9 by maintainers)

Most upvoted comments

It is reproducible with 2.16rc10 as well, I filled a bug report: https://bugzilla.nasm.us/show_bug.cgi?id=3392824 .

So @hakonhagland - it looks like the workaround for now is to downgrade to NASM 2.15.05.

… which is recommended anyway for now, since that’s a stable release. That is, unless you intended to experiment with the bleeding edge 😉 (and I’m sure the NASM folks are grateful for these sorts of experiments)

@hakonhagland, NASM 2.16rc9 could be the issue. It emits bad opcodes, look at the diff with the objdump output from 2.15.05.

image