[Bug 45284] Multiple Microsoft Office installers crash with Windows 8+ setting due to missing 'user32.RegisterPointerDeviceNotifications' stub (Office 2013)
wine-bugs at winehq.org
wine-bugs at winehq.org
Wed Jun 6 17:42:13 CDT 2018
https://bugs.winehq.org/show_bug.cgi?id=45284
Anastasius Focht <focht at gmx.net> changed:
What |Removed |Added
----------------------------------------------------------------------------
Blocks| |45302
--- Comment #2 from Anastasius Focht <focht at gmx.net> ---
Hello folks,
commit
https://source.winehq.org/git/wine.git/commitdiff/0b27528c5673fe9879be7c8af25306f930138ac1
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
--
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.
More information about the wine-bugs
mailing list