PROT_EXEC mmap/mprotect, i386 PAE + NX broken, x86-64 2.6.17-rc2

Marcus Meissner marcus at jet.franken.de
Sat Apr 22 02:38:20 CDT 2006


On Sat, Apr 22, 2006 at 04:30:24AM +0100, Alistair John Strachan wrote:
> Hi,
> 
> Just a heads up that WINE seems to suffer from breakage if executed as a 32bit 
> binary on an x86-64 kernel as of 2.6.17-rc, because (according to Andi Kleen) 
> i386 NX is now enabled by default, and on x86-64 i386 behaves like a PAE 
> enabled i386 kernel when performing IA32 emulation.
> 
> I've attached the entire thread for reference, as unfortunately I do not have 
> the time to debug this problem, but thought that probably one of you would 
> like to know.
> 
> Thread is also available to read here:
> 
> http://lkml.org/lkml/2006/4/21/99
> 
> Andi suspects that WINE is not making one of its mappings PROT_EXEC which 
> causes a fault with NX enabled.

Well, in your case it seems to be the main executable, since it faults
at its very first instruction.

> [alistair] 11:17 [~/.wine/drive_c/Program Files/Warcraft III] wine war3.exe -opengl
> wine: Unhandled page fault on write access to 0x00495000 at address 0x495000 (thread 0009), starting debugger...

> =>1 0x00495000 EntryPoint in war3 (0x00495000)
>   2 0xf7f763ab wine_switch_to_stack+0x17 in libwine.so.1 (0xf7f763ab)
> 0x00495000 EntryPoint in war3: pushl    %eax

Please run with:
	WINEDEBUG=+virtual wine war3.exe -opengl

And look for the virtual entries in the vicinity of 495000.

Ciao, Marcus



More information about the wine-devel mailing list