Am Mittwoch, den 08.03.2006, 00:09 +0100 schrieb Christian Schneider:
Hi all.
About half a year ago I replaced my old desktop by an AMD64 box and my previous x86 Linux from Scratch (LFS) installation by a x86_64 multilib LFS. And since then I'm not able to run any DirectX title anymore that used to work before.
This is the way I usually compile wine (GCC 3.4.4):
./configure --prefix=/opt/wine-CVS20060307 \ --x-libraries=/usr/X11R6/lib && make depend && make && su -c "make install"
Here are some games that used to work on my old LFS, their behaviour and the error messages. I've also attached a short log of each game to this messages. All these logs have been recorded with the CVS version of wine from 2006/03/05.
Age of Empires 2 starts up, I can hear sound. When I click on "Single Player", the game hangs with the following message:
err:seh:setup_exception stack overflow 24 bytes in thread 0009 eip 55726262 esp 55ca0fe8 stack 0x55ca1000-0x55db0000
Backgammon Pro is an older (7 years or so) backgammon game, quite simple and 2D, but uses DirectDraw. It crashes at startup:
err:ntdll:RtlpWaitForCriticalSection section 0x5574d040 "directory.c: dir_section" wait timed out in thread 000b, blocked by 000c, retrying (60 sec) err:seh:raise_exception Unhandled exception code c0000194 flags 0 addr 0x55701230
Diablo 2 VidTest (D2VidTest.exe) runs fine and suggests Direct3D for rendering. When I click on the ok-button to quit, it keeps hanging:
err:ntdll:RtlpWaitForCriticalSection section 0x6ffa0730 "?" wait timed out in thread 0009, blocked by 000a, retrying (60 sec)
Diablo 2 crashes at startup after some time:
err:ntdll:RtlpWaitForCriticalSection section 0x5574d6c0 "virtual.c: csVirtual" wait timed out in thread 0010, blocked by 0000, retrying (60 sec) err:seh:raise_exception Unhandled exception code c0000194 flags 0 addr 0x55701230
Half-Life crashes at startup:
err:seh:setup_exception nested exception on signal stack in thread 0009 eip 55725f43 esp 55589c90 stack 0x55ca1000-0x55db0000
Monkey Island 4 (OpenGL-mode) crashes at startup:
err:seh:setup_exception stack overflow 240 bytes in thread 0009 eip 557013e6 esp 55ca0f10 stack 0x55ca1000-0x55db0000
StarCraft starts to the title menu, but clicking on "Single Player" crashes it:
err:seh:setup_exception stack overflow 276 bytes in thread 0009 eip 557013e6 esp 55ca0eec stack 0x55ca1000-0x55db0000
WarCraft 3 (OpenGL-mode) doesn't show up anything, just hangs silently.
As you can see, the most common errors are err:seh:setup_exception and err:ntdll:RtlpWaitForCriticalSection. I've also done some more tests with other games like Revolt, Anno 1503, Half-Life 2, and the errors all look alike.
I have tried the following things to solve the problem: * Deleted my ~/.wine, over and over again ;-) * Compiled wine without any optimization flags * Compiled wine on a x86 Debian box and copied the installation over * Copied my ~/.wine to that Debian box, where most of the games run fine * Tried different wine versions, starting with pre-0.9 versions, ending with the latest CVS version * Used winetools to setup an environment with many native DLLs. Installation of most of the software including IE worked fine, but did not help though. * Searched this mailing list archive and the web for similar errors
Something is definitely going wrong with this. Anybody an idea? I would appreciate any help.
Cheers,
Christian Schneider
I found out that the problem doesn't seem to be related DirectX nor x86_64 libs. My games were all installed on a FAT32 partition which is also available for my parallel installed Windows XP. But the programs that worked I had installed directely to drive C: (~/.wine/drive_c).
Now after I installed any of the games to the fake windows directory, they worked again! Renaming the installation directory and setting a symlink to the same game directory on the FAT32 parition, and the game crashed again.
The debug messages showed that the last called function always was ntdll.NtQueryDirectoryFile. Grepping this function name from the log file showed the last call to it:
0009:Call ntdll.NtQueryDirectoryFile(0000001c,00000000,00000000,00000000,55daeac8,55899bb0,00002000,00000003,00000000,55899b94,00000000) ret=559c6246 0009:Ret ntdll.NtQueryDirectoryFile() retval=80000006 ret=559c6246 0009:Call ntdll.NtQueryDirectoryFile(00000070,00000000,00000000,00000000,55dade68,558d1dd0,00002000,00000003,00000000,558d1db4,00000000) ret=559c6246 0009:Ret ntdll.NtQueryDirectoryFile() retval=00000000 ret=559c6246 0009:Call ntdll.NtQueryDirectoryFile(00000070,00000000,00000000,00000000,55dade68,558d1dd0,00002000,00000003,00000000,558d1db4,00000000) ret=559c6246 0009:Ret ntdll.NtQueryDirectoryFile() retval=00000000 ret=559c6246 0009:Call ntdll.NtQueryDirectoryFile(00000070,00000000,00000000,00000000,55dade68,558d1e28,00002000,00000003,00000000,558d1e0c,00000000) ret=559c6246 0009:Ret ntdll.NtQueryDirectoryFile() retval=80000006 ret=559c6246 000b:Call ntdll.NtQueryDirectoryFile(0000001c,00000000,00000000,00000000,55daea48,5588d4b8,00002000,00000003,00000000,5588d49c,00000000) ret=559c8246 000b:Ret ntdll.NtQueryDirectoryFile() retval=80000006 ret=559c8246 0009:Call ntdll.NtQueryDirectoryFile(0000009c,00000000,00000000,00000000,55dad048,558f2a58,00002000,00000003,00000000,558f2a3c,00000000) ret=559c6246 err:seh:setup_exception nested exception on signal stack in thread 0009 eip 55725f43 esp 55589c90 stack 0x55ca1000-0x55db0000
Now what to do. Should I open a bug report?
Cheers,
Christian Schneider