Can't run DirectX games on x86_64 biarch Linux SOLVED

Christian Schneider mail at chrschn.de
Sat Mar 11 15:09:10 CST 2006


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




More information about the wine-devel mailing list