Zebediah Figura 53e890acb9 ntdll-x86_64_Builtin_Frames: Remove patch.
There is no record at all of what this was for.

However, it's not hard to make a good guess. The effect of the patch is to skip
walking the TEB chain if the faulting %esp is *above* the first element in the
TEB chain.

The most obvious thing this protects against is the case where the application
switched stacks and the new stack happened to be at a higher address. Without
this patch, we would walk through the whole TEB chain, since all of its entries
would be below the target frame we are unwinding to. But they wouldn't actually
be "inner to" it, and so we'd incorrectly hit Wine try/catch blocks.

The most notable such try/catch block is the unhandled exception filter itself,
and it would necessarily have been triggered by any such exception if no other
blocks were.

One can further speculate that this patch, like many others in Wine-Staging, was
written for Cygwin, which is known to switch stacks.

Besides Wine commits c22aa54e9977785eafcd7cc3811116e5f4dd2da8, and other more
targeted workarounds to specific functions, the workaround introduced by this
patch was obviated by a similar, but more complete and holistic, workaround
upstream, namely 8fe95d29d32533e8fa28383c0211555eb71ea6c1.

Thus this patch has been, in almost the simplest sense, upstreamed. Remove it.
2024-02-22 23:31:30 -06:00
..
2024-01-24 13:12:34 +11:00