http://bugs.winehq.org/show_bug.cgi?id=58688
--- Comment #17 from Alexandre Julliard julliard@winehq.org --- (In reply to Stian Low from comment #15)
(In reply to Nikolay Sivov from comment #13)
Do we know why it helps, if it actually does?
It helps to the extent that it reproduces good bisect test results and resolves: Unhandled exception: unimplemented function ntdll.NtSetEventBoostPriority
Short explanation:
I simply fleshed out NtSetEventBoostPriority stub as a syscall instead based on existing NtSetEvent syscall.
ABI maps changed by regressive commit ed9f31120b6: --- a/dlls/ntdll/ntdll.spec +++ a/dlls/ntdll/ntdll.spec
- SYSCALL_ENTRY( 0x002d, NtAlertThreadByThreadId, 4 ) \
- SYSCALL_ENTRY( 0x002d, NtSetEventBoostPriority, 0 ) \
- SYSCALL_ENTRY( 0x002d, NtAlertThreadByThreadId, 8 ) \
SYSCALL_ENTRY( 0x002d, NtSetEventBoostPriority, 0 ) \
SYSCALL_ENTRY( 0x0066, NtAlertThreadByThreadId, 4 ) \
SYSCALL_ENTRY( 0x0066, NtAlertThreadByThreadId, 8 ) \
My patch addresses from stub to syscall requirements for NtSetEventBoostPriority(HANDLE) function signature:
- SYSCALL_ENTRY( 0x002d, NtSetEventBoostPriority, 4 ) \
- SYSCALL_ENTRY( 0x002d, NtSetEventBoostPriority, 8 ) \
Longer explanation still pending further review. I'll provide more details as found.
I'm still addressing other stubs that may still be broken but not fixed yet because they have not bugged Xenia Canary so far:
./wine/dlls/ntdll/ntsyscalls.h SYSCALL_STUB( NtApphelpCacheControl ) \ SYSCALL_STUB( NtCreateProcessEx ) \ SYSCALL_STUB( NtMapUserPhysicalPagesScatter ) \ SYSCALL_STUB( NtSetEventBoostPriority ) \ SYSCALL_STUB( NtTraceEvent ) \ SYSCALL_STUB( NtWaitForMultipleObjects32 ) \ SYSCALL_STUB( NtWorkerFactoryWorkerReady )
ntsyscalls.h may have been auto generated with bugs by Perl script: ./wine/tools/make_specfiles
SYSCALL_STUB may be bugged. If so then once fixed, other stubs may not require being fleshed out from stub to syscall as done for NtSetEventBoostPriority. However switching NtSetEventBoostPriority from stub to syscall may still be considered valid and ideal vs leaving less fleshed out.
These very low level changes were authored by Julliard whose wisdom and insights will be appreciated for merge request review: https://gitlab.winehq.org/wine/wine/-/merge_requests/8955
These are not bugs, they are simply new stubs that didn't exist before. It was necessary to add them to make the syscall numbers line up properly.
Apps may start calling them once they see that the function exists, in which case the stub needs to be fleshed out enough to make the app happy. That's a normal thing that happens every time some stub is added.