Regression test always ends in broken build or compilation error

Questions about Wine on Linux
Locked
macchinetta

Regression test always ends in broken build or compilation error

Post by macchinetta »

Hello. I'm trying to do a regression test in order to test a problematic game that in the bug comments is report to work in a specific wine version, but when I try to compile wine trough git (running bisection), it always produce broken build (especially with version less than 4.0) who refuse to run everything, with this error:

Code: Select all

wine: cannot find L"C:\\windows\\system32\\wineboot.exe"
0009:err:process:start_wineboot failed to start wineboot, err 2
While especially with versions greater than 4.0 produce compilation error at every compilation, most of which are related to d3dcompiler34 or d3dcompiler36.

I try to do 'make clean' several times and every git command in order to reset my branch state, but the behavior stays unchanged.

The weirdest thing is that I had already done more than one regression test in the same branch about half a year ago, and I couldn't find any of these errors, I don't understand what can be different.

And of course all versions of wine installed through the packages provided in the arch repository work fine.
macchinetta

Re: Regression test always ends in broken build or compilation error

Post by macchinetta »

Update: this is a complete log with "warn+all":

Code: Select all

0009:warn:computername:GetComputerNameW Status 3221225524 reading computer name from registry
0009:warn:ntdll:FILE_CreateFile L"\\??\\C:\\windows" not found (c0000035)
0009:warn:ntdll:FILE_CreateFile L"\\??\\C:\\windows\\system32" not found (c0000035)
0009:warn:ntdll:NtQueryAttributesFile L"\\??\\B:\\temp\\wine-comp\\wine\\winecfg.exe" not found (c0000034)
000b:warn:ntdll:FILE_CreateFile L"\\??\\C:\\windows" not found (c0000035)
000b:warn:ntdll:FILE_CreateFile L"\\??\\C:\\windows\\system32" not found (c0000035)
000b:warn:module:load_builtin_dll cannot open .so lib for builtin L"wineboot.exe": /media/part-b/temp/wine-comp/wine/programs/wineboot/wineboot.exe.so: impossibile aprire il file oggetto condiviso: File o directory non esistente
000b:warn:module:load_dll Failed to load module L"C:\\windows\\system32\\wineboot.exe"; status=c0000135
wine: cannot find L"C:\\windows\\system32\\wineboot.exe"
0009:err:process:start_wineboot failed to start wineboot, err 2
0009:warn:module:load_builtin_dll cannot open .so lib for builtin L"winecfg.exe": /media/part-b/temp/wine-comp/wine/programs/winecfg/winecfg.exe.so: impossibile aprire il file oggetto condiviso: File o directory non esistente
0009:warn:module:load_dll Failed to load module L"C:\\windows\\system32\\winecfg.exe"; status=c0000135
wine: cannot find L"C:\\windows\\system32\\winecfg.exe"
I looked in the indicated directories and there are no executables in any folder under programs, should there be?
User avatar
Bob Wya
Level 12
Level 12
Posts: 3068
Joined: Sat Oct 16, 2010 7:40 pm

Re: Regression test always ends in broken build or compilation error

Post by Bob Wya »

@macchinetta

It sounds like your 'temporary' Wine Git builds, are failing.
So posting the Wine terminal output isn't terribly useful (at this stage anyway).

Can you post your configure and make logs ?

I presume you are testing with a clean 32-bit WINEPREFIX?

Ta
Bob
macchinetta

Re: Regression test always ends in broken build or compilation error

Post by macchinetta »

Hi. Folder 'temp' is a custom folder who I've created myself.
I followed 'regression testing' wiki page.

Configure log attached, but I not found make log. :?:
(Edit: add make output in attachment).

I also try to pass "--enable-win64" from "building wine" wiki page, this generate a completely new error.

I need to run regression test in wineprefix where steam is installed, that is same wineprefix where wine installed trough arch package run well, anyway I tried in another wine prefix (working with binary wine, too) and errors are the same, I guess things will be same also in a fresh wineprefix.
User avatar
Bob Wya
Level 12
Level 12
Posts: 3068
Joined: Sat Oct 16, 2010 7:40 pm

Re: Regression test always ends in broken build or compilation error

Post by Bob Wya »

@macchinetta

It would be more useful to get the full standard output from running both configure and make.
You can just redirect or tee this to a file.

You'd probably also want to disable (gcc) LTO - since building Wine with LTO enabled does not work.

Bob
macchinetta

Re: Regression test always ends in broken build or compilation error

Post by macchinetta »

Hi.

You means without standard error?

I redirected make output attached in last post with:

Code: Select all

make -j4 > make.backtrace 2>&1
Follow ./configure backtrace redirected to a file in same way.

This time I removed CC="gcc", but I try all way (also CC="-m32" how reported in regression testing wiki page, that refuses to compile at all).
macchinetta

Re: Regression test always ends in broken build or compilation error

Post by macchinetta »

I tried to disable LTO as described 'disable optimization' supposing you means that, nothing changed. Full output in attachment:
configure.output.disabletest.tar.gz
make.output.disabletest.tar.gz


I tried also use clang as compiler, but it stopped due to many compilation error:

Code: Select all

fatal error: too many errors emitted, stopping now [-ferror-limit=]
71 warnings and 20 errors generated.
Full output in attachment:
configureandmakewithclangfulloutput.tar.gz


Also, looking at the previous output well, it ends with compilation errors but is not immediately visible because of the multithreaded compilation as the threads that are not interrupted by the error still print other things after the error which consequently does not appear as the last line.

so the problem is just that every construction fails, even after seven/eight bisect skip, but I can't understand why.
User avatar
Bob Wya
Level 12
Level 12
Posts: 3068
Joined: Sat Oct 16, 2010 7:40 pm

Re: Regression test always ends in broken build or compilation error

Post by Bob Wya »

@macchinetta

Are you trying to compile Wine 3.20 (or subsequent commit) - as per the version info in the make log?
Certainly older versions of Wine ≤2.13 do require a pcap patch to fix building.

Ta
Bob
macchinetta

Re: Regression test always ends in broken build or compilation error

Post by macchinetta »

Yes. I tried to compile wine > 3.0, i tried different version since I run into a compilation error.

All the versions I tried to compile all came out broken like in the make log I posted.

As I said in first post I run into d3dcompiler_36.dll and d3dcompiler_34.dll when I tried to compile wine > 4.0 until last commit.

I also had already tried to compile these versions of wine in the past (about six months ago) and there was no problem.

I don't know what could have changed in my system in the meantime.
macchinetta

Re: Regression test always ends in broken build or compilation error

Post by macchinetta »

Hi. Passing --without-pcap options to ./configure make a working wine building. :-/

Maybe the last time I used this option, too, and then I forgot about it, or maybe Arch changed something in it's libraries and Arch maintainer using a patched wine to push it in repository. :?:

Unless you think it's better to do the test with pcap enabled (using the patch) I would consider the discussion resolved.

Hopefully next time I won't forget about it.
User avatar
Bob Wya
Level 12
Level 12
Posts: 3068
Joined: Sat Oct 16, 2010 7:40 pm

Re: Regression test always ends in broken build or compilation error

Post by Bob Wya »

macchinetta wrote: Fri Jan 17, 2020 5:59 am Hi. Passing --without-pcap options to ./configure make a working wine building. :-/

Maybe the last time I used this option, too, and then I forgot about it, or maybe Arch changed something in it's libraries and Arch maintainer using a patched wine to push it in repository. :?:

Unless you think it's better to do the test with pcap enabled (using the patch) I would consider the discussion resolved.

Hopefully next time I won't forget about it.
Hmm,

pcap isn't very useful for most Windows applications. I've tried to use it to test the Windows version of Wireshark before - but without much success.

It is puzzling how the Arch PKGBUILD for wine does enable pcap support. Obviously that is a much newer version of Wine.

You could try running a "reverse" regression test - to see if there is a fix for this build issue in a specific (later) commit to Wine??!
It's always nice to figure out what is actually causing a build issue - then to stumble on in the dark! 8)

Bob
macchinetta

Re: Regression test always ends in broken build or compilation error

Post by macchinetta »

Done.

Code: Select all

40c9b46500c3606e966d5404d45b68a48609b6ea is the first bad commit
commit 40c9b46500c3606e966d5404d45b68a48609b6ea
Author: Dmitry Timoshkov <[email protected]>
Date:   Thu Feb 28 20:37:47 2019 +0300

    wpcap: Fix compilation with recent pcap/pcap.h versions.
    
    Recent libpcap versions have added inclusion of pcap/socket.h
    to pcap.h that includes sys/socket.h and other system .h files
    that lead to conflicts with winsock2.h.
    
    Signed-off-by: Dmitry Timoshkov <[email protected]>
    Signed-off-by: André Hentschel <[email protected]>
    Signed-off-by: Alexandre Julliard <[email protected]>

 dlls/wpcap/wpcap.c | 1 +
 1 file changed, 1 insertion(+)
This commit is in wine 4.2, description seem pretty clear.

I also found commit that broker compilation with most recent wine version (d3d compiler error):

Code: Select all

[14e7e331ae2e86910dbe3c2d9ecd50aa003dd195] stdio.h: Use __acrt_iob_func to access standard stream files.
Reverting this commit I can compile most recent wine version, vice versa I can't.
Locked