http://bugs.winehq.org/show_bug.cgi?id=10467
--- Comment #53 from Alexandre Julliard julliard@winehq.org 2008-03-26 11:58:35 --- Re-visiting the guard page thing: (this bug really needs to be split...)
(In reply to comment #6)
Attached patch fixes this. Notice it uses NtCurrentTeb()->Tib.StackLimit rather than the current NtCurrentTeb()->DeallocationStack to setup guard page address. This is required because .NET runtime starts page guard walking by looking at Tib.StackLimit until it reaches current stack pointer area.
StackLimit is supposed to point above the guard page, it's the start of the valid area (and yes there are apps that depend on this). So if .NET starts looking from StackLimit, creating a Windows-style guard page is not going to help.