https://bugs.winehq.org/show_bug.cgi?id=45284
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Blocks| |45302
--- Comment #2 from Anastasius Focht focht@gmx.net --- Hello folks,
commit https://source.winehq.org/git/wine.git/commitdiff/0b27528c5673fe9879be7c8af2... added user32.RegisterPointerDeviceNotifications() stub.
Unfortunately the installer still crashes due crappy error handling when the stub returns 'FALSE'.
--- snip --- ... 002e:Call KERNEL32.GetProcAddress(7e720000,00c89a08 "RegisterPointerDeviceNotifications") ret=00c0ff46 002e:Ret KERNEL32.GetProcAddress() retval=7e7318cc ret=00c0ff46 002e:Call user32.RegisterPointerDeviceNotifications(00010072,00000000) ret=00a9c882 002e:fixme:win:RegisterPointerDeviceNotifications (0x10072 0): stub 002e:Ret user32.RegisterPointerDeviceNotifications() retval=00000000 ret=00a9c882 002e:Call user32.SetWindowLongW(00010072,ffffffeb,00000000) ret=00a9c8c7 002e:Ret user32.SetWindowLongW() retval=00e4ad78 ret=00a9c8c7 002e:Call user32.SetWindowLongW(00010072,fffffffc,7e72f3ac) ret=00a9c8d8 002e:Ret user32.SetWindowLongW() retval=00a9c77a ret=00a9c8d8 002e:trace:seh:raise_exception code=c0000005 flags=0 addr=0xa9c8da ip=00a9c8da tid=002e 002e:trace:seh:raise_exception info[0]=00000000 002e:trace:seh:raise_exception info[1]=00000000 002e:trace:seh:raise_exception eax=00a9c77a ebx=00000001 ecx=00000000 edx=7e8f5254 esi=00e4ad78 edi=00e4ad78 002e:trace:seh:raise_exception ebp=0033c818 esp=0033c7fc cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00210206 002e:trace:seh:call_stack_handlers calling handler at 0xc5071d code=c0000005 flags=0 ... --- snip ---
Crash location:
--- snip --- ... 00BAC872 53 PUSH EBX 00BAC873 8935 98C0DE00 MOV DWORD PTR DS:[0DEC098],ESI 00BAC879 FF76 04 PUSH DWORD PTR DS:[ESI+4] ; user32.RegisterPointerDeviceNotifications 00BAC87C FF15 E8E2D900 CALL DWORD PTR DS:[0D9E2E8] 00BAC882 5F POP EDI 00BAC883 85C0 TEST EAX,EAX 00BAC885 74 11 JE SHORT 00BAC898 00BAC887 391E CMP DWORD PTR DS:[ESI],EBX 00BAC889 75 21 JNE SHORT 00BAC8AC 00BAC88B E8 75030000 CALL 00BACC05 00BAC890 8BC8 MOV ECX,EAX 00BAC892 890E MOV DWORD PTR DS:[ESI],ECX 00BAC894 85C9 TEST ECX,ECX 00BAC896 75 07 JNE SHORT 00BAC89F 00BAC898 B8 05400080 MOV EAX,80004005 00BAC89D EB 0F JMP SHORT 00BAC8AE 00BAC89F 8B01 MOV EAX,DWORD PTR DS:[ECX] 00BAC8A1 68 07040000 PUSH 407 00BAC8A6 FF76 04 PUSH DWORD PTR DS:[ESI+4] ; setup internal object vtable/dispatch 00BAC8A9 FF50 08 CALL DWORD PTR DS:[EAX+8] 00BAC8AC 33C0 XOR EAX,EAX 00BAC8AE 5B POP EBX 00BAC8AF 5E POP ESI 00BAC8B0 C3 RETN
00BAC8B1 57 PUSH EDI 00BAC8B2 8BF9 MOV EDI,ECX 00BAC8B4 837F 04 00 CMP DWORD PTR DS:[EDI+4],0 00BAC8B8 74 1E JE SHORT 00BAC8D8 00BAC8BA 6A 00 PUSH 0 00BAC8BC 6A EB PUSH -15 00BAC8BE FF77 04 PUSH DWORD PTR DS:[EDI+4] ; user32.SetWindowLongW 00BAC8C1 FF15 18E1D900 CALL DWORD PTR DS:[0D9E118] 00BAC8C7 FF35 DCE0D900 PUSH DWORD PTR DS:[0D9E0DC] 00BAC8CD 6A FC PUSH -4 00BAC8CF FF77 04 PUSH DWORD PTR DS:[EDI+4] ; user32.SetWindowLongW 00BAC8D2 FF15 18E1D900 CALL DWORD PTR DS:[0D9E118] ; internal object vtable/dispatch from 0x00BAC8A9 00BAC8D8 8B0F MOV ECX,DWORD PTR DS:[EDI] ; NULL 00BAC8DA 8B01 MOV EAX,DWORD PTR DS:[ECX] ; *boom* 00BAC8DC FF50 0C CALL DWORD PTR DS:[EAX+0C] 00BAC8DF FF37 PUSH DWORD PTR DS:[EDI] 00BAC8E1 E8 00C80700 CALL 00C290E6 00BAC8E6 8327 00 AND DWORD PTR DS:[EDI],00000000 00BAC8E9 393D 98C0DE00 CMP DWORD PTR DS:[0DEC098],EDI 00BAC8EF 75 07 JNE SHORT 00BAC8F8 00BAC8F1 8325 98C0DE00 0 AND DWORD PTR DS:[0DEC098],00000000 00BAC8F8 57 PUSH EDI 00BAC8F9 E8 B4B0FBFF CALL NetUI::HFree 00BAC8FE 5F POP EDI 00BAC8FF C3 RETN --- snip ---
The stub needs to return 'TRUE' to go further:
--- snip --- ... 002e:Call KERNEL32.GetProcAddress(7e720000,00c89a08 "RegisterPointerDeviceNotifications") ret=00c0ff46 002e:Ret KERNEL32.GetProcAddress() retval=7e7318cc ret=00c0ff46 002e:Call user32.RegisterPointerDeviceNotifications(00010072,00000000) ret=00a9c882 002e:fixme:win:RegisterPointerDeviceNotifications (0x10072 0): stub 002e:Ret user32.RegisterPointerDeviceNotifications() retval=00000001 ret=00a9c882 002e:Call ntdll.RtlAllocateHeap(00e40000,00000000,00000020) ret=00a09108 002e:Ret ntdll.RtlAllocateHeap() retval=00e4ad58 ret=00a09108 002e:Call KERNEL32.GetProcAddress(7e720000,00c89a2e "GetPointerDevices") ret=00c0ff46 002e:Ret KERNEL32.GetProcAddress() retval=00000000 ret=00c0ff46 002e:Call KERNEL32.GetLastError() ret=00c0ff52 002e:Ret KERNEL32.GetLastError() retval=0000007f ret=00c0ff52 002e:Call KERNEL32.RaiseException(c06d007f,00000000,00000001,0033c7f4) ret=00c0ff85 002e:trace:seh:raise_exception code=c06d007f flags=0 addr=0x7b446f66 ip=7b446f66 tid=002e 002e:trace:seh:raise_exception info[0]=0033c7a8 002e:trace:seh:raise_exception eax=7b435631 ebx=00000000 ecx=00000000 edx=0033c79c esi=0033c79c edi=0033c760 002e:trace:seh:raise_exception ebp=0033c738 esp=0033c6d4 cs=330023 ds=33002b es=f7c4002b fs=f7c40063 gs=f7c4006b flags=00200216 002e:trace:seh:call_stack_handlers calling handler at 0xc5071d code=c06d007f flags=0 ... --- snip ---
That's a missing 'user32.GetPointerDevices()' stub. I've created bug 45302 to track that one.
$ wine --version wine-3.9-230-g868fb05e77
Regards