https://bugs.winehq.org/show_bug.cgi?id=55584
Bug ID: 55584 Summary: Possibly incorrect handling of end_c in ARM64 process_unwind_codes Product: Wine Version: unspecified Hardware: aarch64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: ntdll Assignee: wine-bugs@winehq.org Reporter: wine@corsix.org Distribution: ---
In signal_arm64.c, unwind code 0xe5 (end_c) is considered in three places: 1. get_sequence_len 2. The while loop at the start of process_unwind_codes which skips codes 3. The main while loop in process_unwind_codes which performs codes
Place 1 looks correct. Place 2 also looks fine, though I hope we'd never see end_c there (because we should only skip an amount identified by get_sequence_len). I am less certain about place 3 though; it currently treats end_c like end, whereas I think it should treat end_c like nop.
The documentation at https://learn.microsoft.com/en-us/cpp/build/arm64-exception-handling?view=ms... isn't great in describing end_c, though the example at "Unwind code for region 2" is a fairly clear example of end_c behaving like a nop for place 3.
https://bugs.winehq.org/show_bug.cgi?id=55584
Vijay Kamuju infyquest@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |infyquest@gmail.com Resolution|--- |FIXED Fixed by SHA1| |1abebca6dc024505a72bd564c6e | |998107102c1c4 Status|UNCONFIRMED |RESOLVED
--- Comment #1 from Vijay Kamuju infyquest@gmail.com --- Fix merged - https://source.winehq.org/git/wine.git/commit/1abebca6dc024505a72bd564c6e998...
https://bugs.winehq.org/show_bug.cgi?id=55584
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #2 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 9.3.