ntdll: Ignore invalid exit_frame when exiting thread.
Alexandre Julliard
julliard at winehq.org
Mon Apr 18 05:53:00 CDT 2016
Sebastian Lackner <sebastian at fds-team.de> writes:
> On 18.04.2016 12:27, Alexandre Julliard wrote:
>> Sebastian Lackner <sebastian at fds-team.de> writes:
>>
>>> Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
>>> ---
>>>
>>> When applications switch to a custom stack, exit_frame is not necessarily
>>> valid anymore.
>>
>> How does it become invalid? Does the app unmap the previous stack?
>
> Yes, MSYS2/Cygwin will switch to its own stack and deallocate the old one.
> This patch alone is not sufficient because there are still a couple of other
> references to the old stack (like the debug_info struct in start_thread).
>
> If preferred, this issue can also be solved differently by calculting exit_frame
> dynamically based on StackBase (after a couple of other bugs are fixed).
> Disadvantage is that if applications mess around with StackBase, I'm not sure if
> we should trust that the new stack is set up properly.
The reason for exit_frame is to prevent pthread_exit from trying to
unwind the stack. I'm wondering how that will work if it was
deallocated. Did you look into this? Does pthread detect that we are on
a different stack? And doesn't pthread also put its own structures on
the stack?
--
Alexandre Julliard
julliard at winehq.org
More information about the wine-devel
mailing list