https://bugs.winehq.org/show_bug.cgi?id=47287
Bug ID: 47287 Summary: Accessible Event Watcher Tool 'accevent.exe' from Windows 10 SDK (10.0.17763.x) crashes on unimplemented function oleacc.dll.AccessibleObjectFromEvent Product: Wine Version: 4.9 Hardware: x86-64 OS: Linux Status: NEW Severity: normal Priority: P2 Component: oleacc Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net Distribution: ---
Hello folks,
as it says. Main menu 'Events', select 'Start Listening' and then click random main menu item again -> crash.
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x64
$ wine ./accevent.exe ... 0036:err:ntdll:NtQueryInformationToken Unhandled Token Information class 26! wine: Call from 0x7b45323c to unimplemented function oleacc.dll.AccessibleObjectFromEvent, aborting wine: Unimplemented function oleacc.dll.AccessibleObjectFromEvent called at address 0x7b45323c (thread 0036), starting debugger... Unhandled exception: unimplemented function oleacc.dll.AccessibleObjectFromEvent called in 64-bit code (0x000000007b45323c). Register dump: rip:000000007b45323c rsp:0000000000248940 rbp:0000000000248a10 eflags:00000202 ( - -- I - - - ) rax:0000000000248960 rbx:0000000080000100 rcx:0000000000248960 rdx:0000000000248980 rsi:0000000000248a50 rdi:0000000000248990 r8:0000000000000002 r9:0000000000248a40 r10:0000000000000000 r11:0000000000659550 r12:000000018000a058 r13:0000000000000000 r14:0000000180005cc0 r15:0000000000000001 ... Backtrace: =>0 0x000000007b45323c RaiseException+0x6c(code=<is not available>, flags=<is not available>, nbargs=<is not available>, args=<is not available>) [/home/focht/projects/wine/mainline-src/dlls/kernel32/except.c:86] in kernel32 (0x0000000000248a10) 1 0x00007f6170d48dad __wine_spec_unimplemented_stub+0x3c(module=<is not available>, function=<is not available>) [/home/focht/projects/wine/mainline-src/dlls/winecrt0/stub.c:32] in oleacc (0x0000000000248a60) 2 0x00007f6170d230f7 __wine_stub_AccessibleObjectFromEvent+0x16() in oleacc (0x0000000000248b00) 0x000000007b45323c RaiseException+0x6c [/home/focht/projects/wine/mainline-src/dlls/kernel32/except.c:86] in kernel32: leaq 0xfffffffffffffff0(%rbp),%rsp 86 } Modules: Module Address Debug info Name (108 modules) ELF 7b400000- 7b86c000 Dwarf kernel32<elf> -PE 7b420000- 7b86c000 \ kernel32 ELF 7bc00000- 7bd55000 Deferred ntdll<elf> -PE 7bc20000- 7bd55000 \ ntdll ELF 7c000000- 7c004000 Deferred <wine-loader> PE 140000000- 14002f000 Deferred accevent PE 180000000- 18000d000 Deferred event ... ELF 7f617f6fc000- 7f617faa1000 Dwarf libwine.so.1 ELF 7f617faa3000- 7f617fccc000 Deferred ld-linux-x86-64.so.2 ELF 7ffd4edfc000- 7ffd4edfd000 Deferred [vdso].so Threads: process tid prio (all id:s are in hex) ... 00000035 (D) C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64\accevent.exe 00000038 0 00000036 0 <== --- snip ---
--- snip --- $ winedump -j import event.dll | sed -n '/OLEACC/,/^$/p'
offset 0000663c OLEACC.dll Hint/Name Table: 00007580 TimeDateStamp: 00000000 (Thu Jan 1 01:00:00 1970) ForwarderChain: 00000000 First thunk RVA: 000050C8 Thunk Ordn Name 000050c8 25 ObjectFromLresult 000050d0 27 WindowFromAccessibleObject 000050d8 4 AccessibleObjectFromEvent 000050e0 18 GetRoleTextW 000050e8 20 GetStateTextW --- snip ---
Wine source:
https://source.winehq.org/git/wine.git/blob/HEAD:/dlls/oleacc/oleacc.spec
--- snip --- 2 @ stub AccessibleObjectFromEvent --- snip ---
Microsoft docs:
https://docs.microsoft.com/en-us/windows/desktop/api/oleacc/nf-oleacc-access...
$ sha1sum 17763.1.180914-1434.rs5_release_WindowsSDK.iso e702b5e5f2597d01eaee1eb1be7a34b0da0b6211 17763.1.180914-1434.rs5_release_WindowsSDK.iso
$ du -sh 17763.1.180914-1434.rs5_release_WindowsSDK.iso 815M 17763.1.180914-1434.rs5_release_WindowsSDK.iso
$ wine --version wine-4.9-95-g6d05fae6f7
Regards
https://bugs.winehq.org/show_bug.cgi?id=47287
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download URL| |https://software-download.m | |icrosoft.com/download/pr/17 | |763.1.180914-1434.rs5_relea | |se_WindowsSDK.iso
https://bugs.winehq.org/show_bug.cgi?id=47287
Vijay Kamuju infyquest@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |infyquest@gmail.com
--- Comment #1 from Vijay Kamuju infyquest@gmail.com --- Created attachment 64594 --> https://bugs.winehq.org/attachment.cgi?id=64594 stub for AccessibleObjectFromEvent
try this stub patch
https://bugs.winehq.org/show_bug.cgi?id=47287
pattietreutel katyaberezyaka@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |katyaberezyaka@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=47287
--- Comment #2 from Anastasius Focht focht@gmx.net --- Hello Vijay,
the stub prevents the crash. Instead a message 'OBJ_CREATE\t [Error: getting object: hr=0xFFFFFFFF80004001' is displayed in the log window each time the user interface is navigated.
--- snip --- $ pwd /home/focht/wine-apps/wineprefix64-win10sdk/drive_c/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x64
$ WINEDEBUG=+seh,+relay,+oleacc wine ./accevent.exe >>log.txt 2>&1 ... 0036:Call winevent proc 0x180001310 (hook=30042,event=8000,hwnd=0x20044,object_id=0,child_id=0,tid=0036,time=69baad) 0036:Call user32.SetRectEmpty(00248a50) ret=180003969 0036:Ret user32.SetRectEmpty() retval=00000001 ret=180003969 0036:Call user32.IsWindowVisible(00020044) ret=1800039f9 0036:Ret user32.IsWindowVisible() retval=00000001 ret=1800039f9 0036:Call oleaut32.VariantInit(00248990) ret=180003ba5 0036:trace:variant:VariantInit (0x248990) 0036:Ret oleaut32.VariantInit() retval=00000000 ret=180003ba5 0036:Call oleacc.AccessibleObjectFromEvent(00020044,00000000,00000000,002489f0,00248990) ret=180003bc2 0036:fixme:oleacc:AccessibleObjectFromEvent 0x20044 0 0 0x2489f0 0x248990: stub 0036:Ret oleacc.AccessibleObjectFromEvent() retval=80004001 ret=180003bc2 0036:Call KERNEL32.FormatMessageW(00001000,00000000,80004001,00000400,00248ae8,7f6a000003c4,00000000) ret=180004834 0036:Ret KERNEL32.FormatMessageW() retval=00000000 ret=180004834 0036:Call user32.SendMessageW(00010076,00000180,00000000,00248a70) ret=140001744 0036:Call window proc 0x6e6fcae0 (hwnd=0x10076,msg=LB_ADDSTRING,wp=00000000,lp=00248a70) ... 0036:Ret window proc 0x6e6fcae0 (hwnd=0x10076,msg=LB_ADDSTRING,wp=00000000,lp=00248a70) retval=00000000 0036:Ret user32.SendMessageW() retval=00000000 ret=140001744 ... 0036:Call user32.TabbedTextOutW(0001006a,00000001,00000000,000b5ec0 L"OBJ_CREATE\t [Error: getting object: hr=0xFFFFFFFF80004001 - ]",0000003d,00000001,0009b9a0,00000000) ret=6e6fb0af ... --- snip ---
It passes object_id=0 (OBJID_WINDOW in this case), child_id=0 from winevent proc straight to 'AccessibleObjectFromEvent' as shown in the example snippet:
https://docs.microsoft.com/en-us/windows/desktop/api/oleacc/nf-oleacc-access...
--- snip --- void CALLBACK HandleWinEvent(HWINEVENTHOOK hook, DWORD event, HWND hwnd, LONG idObject, LONG idChild, DWORD dwEventThread, DWORD dwmsEventTime) { IAccessible* pAcc = NULL; VARIANT varChild; HRESULT hr = AccessibleObjectFromEvent(hwnd, idObject, idChild, &pAcc, &varChild); if ((hr == S_OK) && (pAcc != NULL)) { // Do something with the accessible object, then release it. // ... pAcc->Release(); } } --- snip ---
https://docs.microsoft.com/en-us/windows/desktop/winauto/winevents
So as of now, the Microsoft Active Accessibility (MSAA) server part/test isn't useful unless this gets implemented.
We could just this one track an actual semi-stub/implementation of the API (needs revised summary) or splitting it into another one.
Regards
https://bugs.winehq.org/show_bug.cgi?id=47287
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|https://software-download.m |https://web.archive.org/web |icrosoft.com/download/pr/17 |/20190317015617/https://sof |763.1.180914-1434.rs5_relea |tware-download.microsoft.co |se_WindowsSDK.iso |m/download/pr/17763.1.18091 | |4-1434.rs5_release_WindowsS | |DK.iso
https://bugs.winehq.org/show_bug.cgi?id=47287
François Gouget fgouget@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |fgouget@codeweavers.com Keywords| |patch
https://bugs.winehq.org/show_bug.cgi?id=47287
Piotr Caban piotr.caban@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |piotr.caban@gmail.com
--- Comment #3 from Piotr Caban piotr.caban@gmail.com --- The function is implemented by 602a36a2538e. Please retest.
https://bugs.winehq.org/show_bug.cgi?id=47287
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Status|NEW |RESOLVED Fixed by SHA1| |602a36a2538e356ae8e64b442e9 | |a5ad7f3748bd7
--- Comment #4 from Anastasius Focht focht@gmx.net --- Hello folks,
this was fixed by commit https://source.winehq.org/git/wine.git/commitdiff/602a36a2538e356ae8e64b442e... ("oleacc: Implement AccessibleObjectFromEvent.").
Part of Wine 6.17 release.
Thanks Connor. Piotr for the reminder.
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x64
$ WINEDEBUG=+seh,+relay,+oleacc wine ./accevent.exe >>log.txt 2>&1 ... 0120:Call oleacc.AccessibleObjectFromEvent(000100b4,00000000,00000000,00118d40,00118ce0) ret=016b3bc2 0120:trace:oleacc:AccessibleObjectFromEvent 00000000000100B4 0 0 0000000000118D40 0000000000118CE0 ... 0120:trace:oleacc:AccessibleObjectFromWindow 00000000000100B4 0 {618736e0-3c3d-11cf-810c-00aa00389b71} 0000000000118BD0 ... 0120:trace:oleacc:CreateStdAccessibleObject 00000000000100B4 0 {618736e0-3c3d-11cf-810c-00aa00389b71} 0000000000118BD0 ... 0120:trace:oleacc:find_class_data got window class: L"#32768" ... 0120:fixme:oleacc:find_class_data unhandled window class: L"#32768" 0120:trace:oleacc:Window_QueryInterface (00000000001BBCC0)->({618736e0-3c3d-11cf-810c-00aa00389b71} 0000000000118BD0) 0120:trace:oleacc:Window_AddRef (00000000001BBCC0) ref = 2 0120:trace:oleacc:Window_Release (00000000001BBCC0) ref = 1 0120:fixme:oleacc:Window_get_accChild (00000000001BBCC0)->(0000000000118BE0 {VT_I4: 0} 0000000000118BD8) 0120:trace:oleacc:AccessibleObjectFromEvent get_accChild failed with 0x80004001! 0120:Ret oleacc.AccessibleObjectFromEvent() retval=00000000 ret=016b3bc2 0120:fixme:oleacc:Window_get_accName (00000000001BBCC0)->(0000000000118BD0 {VT_I4: 0} 0000000000118BB0) ... 0120:fixme:oleacc:Window_get_accRole (00000000001BBCC0)->(0000000000118C10 {VT_I4: 0} 0000000000118C30) ... 0120:fixme:oleacc:Window_get_accState (00000000001BBCC0)->(0000000000118C10 {VT_I4: 0} 0000000000118C30) ... 0120:fixme:oleacc:Window_accLocation (00000000001BBCC0)->(0000000000118BD0 0000000000118BD4 0000000000118BD8 0000000000118BDC 0000000000118B70 {VT_I4: 0}) ... --- snip ---
Direct download links for minimal install:
https://download.microsoft.com/download/5/C/3/5C3770A3-12B4-4DB4-BAE7-99C624...
https://download.microsoft.com/download/5/C/3/5C3770A3-12B4-4DB4-BAE7-99C624...
https://download.microsoft.com/download/5/C/3/5C3770A3-12B4-4DB4-BAE7-99C624...
https://download.microsoft.com/download/5/C/3/5C3770A3-12B4-4DB4-BAE7-99C624...
https://download.microsoft.com/download/5/C/3/5C3770A3-12B4-4DB4-BAE7-99C624...
https://download.microsoft.com/download/5/C/3/5C3770A3-12B4-4DB4-BAE7-99C624...
https://download.microsoft.com/download/5/C/3/5C3770A3-12B4-4DB4-BAE7-99C624...
https://download.microsoft.com/download/5/C/3/5C3770A3-12B4-4DB4-BAE7-99C624...
You can get the direct download links by running the the Windows 10 SDK web-installer, selecting the wanted packages and inspecting the log file.
Alternatively unpack the offline install (ISO in URL field) and "grep" for the main app MSI package. Run the msi installer multiple times until it doesn't complain about missing CAB files.
https://developer.microsoft.com/en-us/windows/downloads/sdk-archive/
I've created snapshots for those on archive.org. Just prepend "https://web.archive.org/web/*/" to the original direct links from MDC.
One liner for downloading all required payloads:
--- snip --- for file in \ 15bc5316e373960d82abc253bceaa25d.cab \ 2630bae9681db6a9f6722366f47d055c.cab \ 61d57a7a82309cd161a854a6f4619e52.cab \ 68de71e3e2fb9941ee5b7c77500c0508.cab \ 69661e20556b3ca9456b946c2c881ddd.cab \ b82881a61b7477bd4eb5de2cd5037fe2.cab \ e072b3b3d3164e26b63338dce51862a7.cab \ e3d1b35aecfccda1b4af6fe5988ac4be.cab \ "Windows SDK for Windows Store Apps Tools-x86_en-us.msi" ; \ do \ wget "https://download.microsoft.com/download/5/C/3/5C3770A3-12B4-4DB4-BAE7-99C624..." || break ; \ done --- snip ---
Minimal install:
--- snip --- $ wine msiexec -i "Windows SDK for Windows Store Apps Tools-x86_en-us.msi" --- snip ---
After minimal install:
--- snip --- $ find .wine/drive_c/ -iname "acc*.exe"
.wine/drive_c/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/arm64/AccChecker/AccCheckConsole.exe .wine/drive_c/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/arm64/AccChecker/acccheckui.exe .wine/drive_c/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/arm64/accevent.exe .wine/drive_c/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x64/AccChecker/AccCheckConsole.exe .wine/drive_c/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x64/AccChecker/acccheckui.exe .wine/drive_c/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x64/accevent.exe .wine/drive_c/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/arm/AccChecker/AccCheckConsole.exe .wine/drive_c/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/arm/AccChecker/acccheckui.exe .wine/drive_c/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/arm/accevent.exe .wine/drive_c/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x86/AccChecker/AccCheckConsole.exe .wine/drive_c/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x86/AccChecker/acccheckui.exe .wine/drive_c/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x86/accevent.exe --- snip ---
$ wine --version wine-6.22
Regards
https://bugs.winehq.org/show_bug.cgi?id=47287
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #5 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 6.23.
https://bugs.winehq.org/show_bug.cgi?id=47287
Michael Stefaniuc mstefani@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |6.0.x
https://bugs.winehq.org/show_bug.cgi?id=47287
Michael Stefaniuc mstefani@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|6.0.x |---
--- Comment #6 from Michael Stefaniuc mstefani@winehq.org --- Removing the 6.0.x milestone from bug fixes included in 6.0.4.