https://bugs.winehq.org/show_bug.cgi?id=43490
Bug ID: 43490 Summary: Broken native support for comctl32.dll. Product: Wine Version: 2.14 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: comctl32 Assignee: wine-bugs@winehq.org Reporter: s3141p@gmail.com Distribution: ---
# Summary
Broken native support for comctl32.dll. This results in a number of popular Windows applications partially, or sometime totally, not working anymore, such as IrfanView, Faststone Image Viewer, and XPDF-Xchange viewer. I confirmed that both wine 2.10 2.13, and 2.14 exhibit the same problem. I hypothesize that this issue was introduced in wine 2.8 following the changes for fake dll generation that were announced in https://www.wine-staging.com/news/2017-05-16-release-2.8.html.
# Reproducing this issue
1. Install 32-bit wine 2.14. 2. Install 32-bit IrfanView 4.44 - latest version as of this writing. 3. Install `winetricks comctl32` - Microsoft COM control DLL 5.8 for Windows XP, year 2001.
Note: #2 and #3 have worked together for me for all wine versions up to 2.6 (I skipped 2.8-9, and 2.11-12).
4. Run IrfanView, select menu entry File > Open; IrfanView crashes. Terminal output shows this message:
``` err:wineboot:ProcessRunKeys Error running cmd L"C:\windows\system32\winemenubuilder.exe -a -r" (2) err:module:DelayLoadFailureHook failed to delay load comctl32.dll.HIMAGELIST_QueryInterface wine: Call from 0x7b4367c6 to unimplemented function comctl32.dll.HIMAGELIST_QueryInterface, aborting wine: Unimplemented function comctl32.dll.HIMAGELIST_QueryInterface called at address 0x2e0023:0x7b4367c6 (thread 0031), starting debugger... fixme:service:QueryServiceConfig2W Level 6 not implemented fixme:service:QueryServiceConfig2W Level 6 not implemented fixme:service:QueryServiceConfig2W Level 6 not implemented fixme:service:QueryServiceConfig2W Level 6 not implemented fixme:service:QueryServiceConfig2W Level 6 not implemented fixme:ntdll:EtwEventUnregister (deadbeef) stub. ```
Of course, the Microsoft Windows XP comctl32.dll doesn't implement HIMAGELIST_QueryInterface, which, according to https://msdn.microsoft.com/en-us/library/windows/desktop/bb761510(v=vs.85).a... requires at least Windows Vista. The corresponding wine API is documented in https://source.winehq.org/WineAPI/HIMAGELIST_QueryInterface.html.
Other examples of Windows applications that fail with the same message include: * PDF-Xchange Viewer version 2.5 - it doesn't start at all. * FastStone Image Viewer 6.2 - it hangs with an hourglass mouse pointer.
The obvious work-around is not to load the native comctl32.dll and rely entirely on the built-in dll. While this works, as it has always worked in the past, the native implementation lacks enough functionality that at least IrfanView and Faststone image capture do not work well. That is why several forum threads recommend using Microsoft's comctr32.dll for such applications. For IrfanView, the impairment is mainly cosmetic, so it can be tolerated. Faststone Image Capture, however, can't display thumbnails past the first screenful (about 20-30 pictures) if the native comctl32 DLL isn't loaded.
# Conclusion
IrfanView and other important Windows applications fail to work partially or entirely when the native comctl32.dll is loaded. Before version wine 2.10 (possibly 2.8) they all worked without a glitch. The native comctl32.dll is still needed for full application compatibility because the built-in replacement DLL lacks some functionality (tested with wine 2.14).
https://bugs.winehq.org/show_bug.cgi?id=43490
s3141p@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |s3141p@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=43490
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|comctl32 |-unknown
--- Comment #1 from Nikolay Sivov bunglehead@gmail.com --- (In reply to s3141p from comment #0)
Of course, the Microsoft Windows XP comctl32.dll doesn't implement HIMAGELIST_QueryInterface, which, according to https://msdn.microsoft.com/en-us/library/windows/desktop/bb761510(v=vs.85). aspx requires at least Windows Vista. The corresponding wine API is documented in https://source.winehq.org/WineAPI/HIMAGELIST_QueryInterface.html.
It's supported since XP.
The obvious work-around is not to load the native comctl32.dll and rely entirely on the built-in dll. While this works, as it has always worked in the past, the native implementation lacks enough functionality that at least IrfanView and Faststone image capture do not work well. That is why several forum threads recommend using Microsoft's comctr32.dll for such applications. For IrfanView, the impairment is mainly cosmetic, so it can be tolerated. Faststone Image Capture, however, can't display thumbnails past the first screenful (about 20-30 pictures) if the native comctl32 DLL isn't loaded.
# Conclusion
IrfanView and other important Windows applications fail to work partially or entirely when the native comctl32.dll is loaded. Before version wine 2.10 (possibly 2.8) they all worked without a glitch. The native comctl32.dll is still needed for full application compatibility because the built-in replacement DLL lacks some functionality (tested with wine 2.14).
That was a change to shell32 that made it unusable with native comctl32 v5. Version 6 of comctl32 library is not redistributable.
I suggest to file bug reports for builtin comctl32 (and maybe even get them fixed), so you don't need to install it in a first place.
https://bugs.winehq.org/show_bug.cgi?id=43490
s3141p@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|-unknown |comctl32
https://bugs.winehq.org/show_bug.cgi?id=43490
--- Comment #2 from s3141p@gmail.com --- Changed bug report component field from "unknown" to "comctl32.dll"
https://bugs.winehq.org/show_bug.cgi?id=43490
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|comctl32 |-unknown
https://bugs.winehq.org/show_bug.cgi?id=43490
--- Comment #3 from s3141p@gmail.com --- (In reply to Nikolay Sivov from comment #1)
(In reply to s3141p from comment #0)
Of course, the Microsoft Windows XP comctl32.dll doesn't implement HIMAGELIST_QueryInterface
It's supported since XP.
I meant to say that the native comctl32.dll that gets intalled with `winetricks comctl32` doesn't support HIMAGELIST_QueryInterface. At least, that's my understanding for the error message.
https://bugs.winehq.org/show_bug.cgi?id=43490
s3141p@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|-unknown |comctl32
--- Comment #4 from s3141p@gmail.com --- @bunglehead@... why did you revert my change to the component field from "comctl32" back to "-unknown"? Please explain how I can file a bug report against the built-in comctl32 component, as Nikolay Sivov suggested (it makes sense to me).
Changing the Component field from "-unknown" to "comctl32" again.
https://bugs.winehq.org/show_bug.cgi?id=43490
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|comctl32 |-unknown
--- Comment #5 from Nikolay Sivov bunglehead@gmail.com --- (In reply to s3141p from comment #3)
(In reply to Nikolay Sivov from comment #1)
(In reply to s3141p from comment #0)
Of course, the Microsoft Windows XP comctl32.dll doesn't implement HIMAGELIST_QueryInterface
It's supported since XP.
I meant to say that the native comctl32.dll that gets intalled with `winetricks comctl32` doesn't support HIMAGELIST_QueryInterface. At least, that's my understanding for the error message.
Winetricks installs comctl32 v5, which is redistributable. It does not have this export and it's not supposed to.
(In reply to s3141p from comment #4)
@bunglehead@... why did you revert my change to the component field from "comctl32" back to "-unknown"? Please explain how I can file a bug report against the built-in comctl32 component, as Nikolay Sivov suggested (it makes sense to me).
Changing the Component field from "-unknown" to "comctl32" again.
This report is about inability to use native comctl32, components refer to Wine modules.
https://bugs.winehq.org/show_bug.cgi?id=43490
--- Comment #6 from Rosanne DiMesio dimesio@earthlink.net --- (In reply to s3141p from comment #4)
Please explain how I can file a bug report against the built-in comctl32 component, as Nikolay Sivov suggested (it makes sense to me).
The rule is one problem per bug report, and problems with native dlls for which Wine has a replacement are not generally considered valid bugs. File a new bug report for each problem with builtin comctl32.
https://bugs.winehq.org/show_bug.cgi?id=43490
--- Comment #7 from s3141p@gmail.com --- The issue as regards FastStone Image Viewer has already been reported as https://bugs.winehq.org/show_bug.cgi?id=5129. I added a comment to 5129.
https://bugs.winehq.org/show_bug.cgi?id=43490
TK thomas@keegans.org changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |thomas@keegans.org
--- Comment #8 from TK thomas@keegans.org --- (In reply to s3141p from comment #0)
What is the fake dll generation? I have found that Faststone works as you describe up to and including 2.7, and then breaks after 2.8. I'm trying to get to the bottom of it. I described my tests in a comment at bug 5129.
https://bugs.winehq.org/show_bug.cgi?id=43490
--- Comment #9 from s3141p@gmail.com --- @TK here: https://web.archive.org/web/20170520190419/https://www.wine-staging.com/news...
https://bugs.winehq.org/show_bug.cgi?id=43490
--- Comment #10 from s3141p@gmail.com --- (In reply to TK from comment #8)
(In reply to s3141p from comment #0)
What is the fake dll generation? I have found that Faststone works as you describe up to and including 2.7, and then breaks after 2.8. I'm trying to get to the bottom of it. I described my tests in a comment at bug 5129.
https://bugs.winehq.org/show_bug.cgi?id=43490#c9
https://bugs.winehq.org/show_bug.cgi?id=43490
unxed unxed@mail.ru changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |unxed@mail.ru
--- Comment #11 from unxed unxed@mail.ru --- Bug in FastStone can be worked around using a kind of hack: https://bugs.winehq.org/show_bug.cgi?id=5129#c40