[PATCH 2/5] ntdll: Implement RtlWalkFrameChain() for x86 and x86_64.

Paul Gofman pgofman at codeweavers.com
Fri Oct 22 08:53:17 CDT 2021


On 10/22/21 16:48, Giovanni Mascellani wrote:
> Hi,
>
> Il 21/10/21 18:03, Paul Gofman ha scritto:
>> +    start = test_walk_stack;
>> +    end = (BYTE *)start + 0x1000;
>> +    todo_wine_if(sizeof(void *) == 4)
>> +    ok(addrs[0] >= start && addrs[0] < end, "Address is not inside 
>> test function, start %p, end %p, addr %p.\n",
>> +            start, end, addrs[0]);
>> +    todo_wine_if(sizeof(void *) == 4)
>> +    ok(addrs2[0] >= start && addrs2[0] < end, "Address is not inside 
>> test function, start %p, end %p, addr %p.\n",
>> +            start, end, addrs2[0]);
>
> Another check you could do is whether addrs[1] == 
> __builtin_extract_return_addr(__builtin_return_address(0)). Probably 
> you don't even need __builtin_extract_return_addr, because I think it 
> is required only for architectures for which we do not compile anyway.
>
> Giovanni.
>
Yes, I could, but do you think another check is really needed? It feels 
to me that might make the check more fragile than it already is. I'd 
rather consider maybe just dropping such check if it will be considered 
concerning. I added that only because I spotted the actual bug on x86 
skipping the first frame and wanted to illustrate / verify that.




More information about the wine-devel mailing list