https://bugs.winehq.org/show_bug.cgi?id=40446
Bug ID: 40446 Summary: WinSCP is missing text in the "About" window Product: Wine Version: 1.9.7 Hardware: x86 URL: http://winscp.net/download/winscp577.zip OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: mshtml Assignee: wine-bugs@winehq.org Reporter: t.artem@mailcity.com Distribution: ---
Run WinSCP, invoke Tools -> About, see no text.
Logged errors in console:
fixme:ieframe:PersistStreamInit_InitNew (0x1c1728) fixme:ieframe:OleControl_OnAmbientPropertyChange Unknown dispID -702 fixme:ieframe:OleControl_OnAmbientPropertyChange Unknown dispID -701 fixme:ieframe:OleControl_OnAmbientPropertyChange Unknown dispID -703 fixme:ieframe:OleControl_OnAmbientPropertyChange Unknown dispID -704 fixme:iphlpapi:NotifyIpInterfaceChange (family 0, callback 0x6a0a6836, context 0x215da80, init_notify 0, handle 0x2a6e7f4): stub fixme:imm:ImmGetDescriptionW (0x4090409, (nil), 0): semi stub fixme:imm:ImmGetDescriptionW (0x4090409, 0x503f508, 9): semi stub fixme:imm:ImmReleaseContext (0x40116, 0x1b7458): stub fixme:win:EnumDisplayDevicesW ((null),0,0x32a304,0x00000000), stub! fixme:ntdll:NtLockFile I/O completion on lock not implemented yet fixme:ieframe:BrowserService_GetTravelLog 0x1e00b0 0x32ae98 fixme:mshtml:OleControl_OnAmbientPropertyChange edit mode is not supported fixme:ieframe:ClientSite_GetContainer (0x1c17ec)->(0x32ae7c) fixme:mshtml:nsChannel_GetContentDisposition (0x1fcec0)->(0x3285e8) fixme:mshtml:nsChannel_GetContentDispositionHeader (0x1fcec0)->(0x327d3c) err:mshtml:update_window_doc SetDesignMode failed: 80070057 fixme:ieframe:ClientSite_GetContainer (0x1c17ec)->(0x32dd4c) fixme:ieframe:DocHostUIHandler_GetDropTarget (0x1c17ec) fixme:win:WINNLSEnableIME hwnd 0x40084 enable -1: stub! fixme:ntdll:EtwRegisterTraceGuidsW (0x69ee122c, 0x503c9f8, {509962e0-406b-46f4-99ba-5a009f8d2225}, 3, 0x5e60ab8, (null), (null), 0x503ca28): stub fixme:ntdll:EtwRegisterTraceGuidsW register trace class {a3da04e0-57d7-482a-a1c1-61da5f95bacb} fixme:ntdll:EtwRegisterTraceGuidsW register trace class {917b96b1-ecad-4dab-a760-8d49027748ae} fixme:ntdll:EtwRegisterTraceGuidsW register trace class {26d1e091-0ae7-4f49-a554-4214445c505c} fixme:mountmgr:harddisk_ioctl Unsupported ioctl 2d1400 (device=2d access=0 func=500 method=0) fixme:mountmgr:harddisk_ioctl Unsupported ioctl 2d1400 (device=2d access=0 func=500 method=0) err:mshtml:do_ns_command DoCommand("cmd_fontFace") failed: 80004005 fixme:ieframe:PropertyNotifySink_OnChanged unimplemented dispid 1005 fixme:mshtml:HTMLDocument_put_designMode Unsupported arg L"Off" fixme:ieframe:ClientSite_GetContainer (0x1c17ec)->(0x32f1ec) fixme:mshtml:nsChannel_GetContentDisposition (0x1fce28)->(0x32ec68) fixme:mshtml:nsChannel_GetContentDispositionHeader (0x1fce28)->(0x32e3bc) err:mshtml:update_window_doc SetDesignMode failed: 80070057 fixme:ieframe:ControlSite_OnFocus (0x1c17ec)->(0) fixme:ieframe:InPlaceSite_OnInPlaceDeactivateEx fNoRedraw (1) ignored fixme:mshtml:HlinkTarget_SetBrowseContext (0x1e15c8)->((nil))
https://bugs.winehq.org/show_bug.cgi?id=40446
Artem S. Tashkinov t.artem@mailcity.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |source
https://bugs.winehq.org/show_bug.cgi?id=40446
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download
https://bugs.winehq.org/show_bug.cgi?id=40446
Martin Prikryl martin@winscp.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |martin@winscp.net
--- Comment #1 from Martin Prikryl martin@winscp.net --- I'm the author of WinSCP.
An embedded Internet Explorer control is used to render the "Portions copyright" box. The code to load the contents (a streamed in-memory HTML) just crashes on Wine. The crash is silently ignored and the dialog is displayed with the box empty.
https://bugs.winehq.org/show_bug.cgi?id=40446
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever confirmed|0 |1
--- Comment #2 from Nikolay Sivov bunglehead@gmail.com --- Can confirm with 1.9.15.
https://bugs.winehq.org/show_bug.cgi?id=40446
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |minor
https://bugs.winehq.org/show_bug.cgi?id=40446
C0rn3j spleefer90@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |spleefer90@gmail.com
--- Comment #3 from C0rn3j spleefer90@gmail.com --- Created attachment 56429 --> https://bugs.winehq.org/attachment.cgi?id=56429 WinSCP 5.9.3 portable Wine 2.0rc1
Can confirm, still happens on 2.0rc1
https://bugs.winehq.org/show_bug.cgi?id=40446
rebe@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |rebe@gmx.net
--- Comment #4 from rebe@gmx.net --- Source code of WinSCP is available btw. https://winscp.net/download/WinSCP-5.11.3-Source.zip
Still an issue under a current Wine?
https://bugs.winehq.org/show_bug.cgi?id=40446
--- Comment #5 from Artem S. Tashkinov t.artem@mailcity.com --- (In reply to rebe from comment #4)
Source code of WinSCP is available btw. https://winscp.net/download/WinSCP-5.11.3-Source.zip
Still an issue under a current Wine?
Yes.
Instead of the help message it says "Cannot display".
https://bugs.winehq.org/show_bug.cgi?id=40446
Zhiyi Zhang zzhang@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |zzhang@codeweavers.com
--- Comment #6 from Zhiyi Zhang zzhang@codeweavers.com --- Still persist in wine-3.3
https://bugs.winehq.org/show_bug.cgi?id=40446
--- Comment #7 from Gijs Vermeulen gijsvrm@gmail.com --- Created attachment 64195 --> https://bugs.winehq.org/attachment.cgi?id=64195 terminal output with wine-4.6
Still present in Wine 4.6
https://bugs.winehq.org/show_bug.cgi?id=40446
mgruber mgruber_72@yahoo.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |mgruber_72@yahoo.de
--- Comment #8 from mgruber mgruber_72@yahoo.de --- Still happens in Wine 5.0.
https://bugs.winehq.org/show_bug.cgi?id=40446
Damjan Jovanovic damjan.jov@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |damjan.jov@gmail.com
--- Comment #9 from Damjan Jovanovic damjan.jov@gmail.com --- We can't directly use the WinSCP source code (https://github.com/winscp/winscp/blob/master/source/forms/About.cpp) to figure out what its “About” box does to our web browser component, as it: #include <WebBrowserEx.hpp> which I can't find anywhere; presumably it's some kind of compiler vendor extension, as it uses Embarcadero C++ Builder XE6 Professional to build.
However comparing the contents of that file against our WINEDEBUG='+resource' run, we can roughly figure out where it's failing. Output, with irrelevant lines removed:
---snip--- 0151:trace:resource:LoadStringW L"Filemanager Toolset library Version 2.6" loaded ! 0151:trace:resource:LoadStringW L"https://jcl.delphi-jedi.org/" loaded ! 0151:trace:resource:LoadStringW L"JEDI Code Library (JCL) %s" loaded ! 0151:trace:resource:LoadStringW L"https://bitbucket.org/uweraabe/pngcomponents" loaded ! 0151:trace:resource:LoadStringW L"Copyright \00a9 Uwe Raabe and Martijn Saly" loaded ! 0151:trace:resource:LoadStringW L"PngComponents 1.4.1" loaded ! ---snip---
which is exactly what happens in method TAboutDialog::DoLoadThirdParty():
---snip--- AddPara(ThirdParty, LoadStr(ABOUT_FILEMANAGER) + Br + LoadStr(ABOUT_FILEMANAGER_COPYRIGHT));
#endif
UnicodeString JclVersion = FormatVersion(JclVersionMajor, JclVersionMinor, JclVersionRelease); AddPara(ThirdParty, FMTLOAD(ABOUT_JCL, (JclVersion)) + Br + CreateLink(LoadStr(ABOUT_JCL_URL)));
AddPara(ThirdParty, LoadStr(ABOUT_PNG) + Br + LoadStr(ABOUT_PNG_COPYRIGHT) + Br + CreateLink(LoadStr(ABOUT_PNG_URL))); ---snip---
which means the failure probably happens somewhere here: ---snip--- 300 ThirdParty = GenerateAppHtmlPage(DefaultFont.get(), ThirdPartyPanel, ThirdParty, false); 301 302 LoadBrowserDocument(FThirdPartyWebBrowser, ThirdParty); 303 } ---snip---
Those functions appear to come from that WebBrowserEx.hpp header file mentioned earlier, which can't be found anywhere.
What else can we discover from Wine's debug log?
---snip--- 0151:fixme:mshtml:HTMLDocument_put_designMode Unsupported arg L"Off" 0151:fixme:ieframe:ClientSite_GetContainer (0332F460)->(0031EBD4) 0151:err:mshtml:create_document_node SetDesignMode failed: 80070057 ---snip---
Hacking HTMLDocument_put_designMode() to return S_OK instead of the current E_NOTIMPL changes nothing. The last line with create_document_node(), is irrelevant as that result, 80070057 (a Gecko failure), is ignored.
That leaves ieframe:ClientSite_GetContainer() which returns E_NOTIMPL. Hacking it to return E_NOINTERFACE and set *ppContainer=NULL doesn't change anything. Returning S_OK and setting *ppContainer=NULL causes WinSCP to crash. Maybe it requires that function to succeed and return a valid IOleContainter.
https://bugs.winehq.org/show_bug.cgi?id=40446
--- Comment #10 from Damjan Jovanovic damjan.jov@gmail.com --- Adding a stubbed ieframe:ClientSite_GetContainer() didn't help, even though all the methods called (LockContainer, Release) return S_OK.
However I did see I was wrong. GenerateAppHtmlPage() and LoadBrowserDocument() are not functions in some third-party library, they are within-application functions in source/windows/GUITools.cpp.
GenerateAppHtmlPage() converts the HTML fragment into a full HTML page, by adding surrounding <html> and <body> tags etc.
LoadBrowserDocument() is more interesting: ---snip--- void LoadBrowserDocument(TWebBrowserEx * WebBrowser, const UnicodeString & Document) { std::unique_ptr<TMemoryStream> DocumentStream(new TMemoryStream()); UTF8String DocumentUTF8 = UTF8String(Document); DocumentStream->Write(DocumentUTF8.c_str(), DocumentUTF8.Length()); DocumentStream->Seek(0, 0);
// For stream-loaded document, when set only after loading from OnDocumentComplete, // browser stops working SetBrowserDesignModeOff(WebBrowser);
TStreamAdapter * DocumentStreamAdapter = new TStreamAdapter(DocumentStream.get(), soReference); IPersistStreamInit * PersistStreamInit = NULL; if (DebugAlwaysTrue(WebBrowser->Document != NULL) && SUCCEEDED(WebBrowser->Document->QueryInterface(IID_IPersistStreamInit, (void **)&PersistStreamInit)) && DebugAlwaysTrue(PersistStreamInit != NULL)) { PersistStreamInit->Load(static_cast<_di_IStream>(*DocumentStreamAdapter)); } } ---snip---
We don't seem to get as far as PersistStreamInit->Load(), which is a stub on our side anyway.
https://bugs.winehq.org/show_bug.cgi?id=40446
--- Comment #11 from Gijs Vermeulen gijsvrm@gmail.com --- Created attachment 72922 --> https://bugs.winehq.org/attachment.cgi?id=72922 +mshtml,+ieframe,+msctf
Still present with wine-7.15. 'winetricks -q ie8' works around.
https://bugs.winehq.org/show_bug.cgi?id=40446
Evren evren320@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |evren320@hotmail.com
--- Comment #12 from Evren evren320@hotmail.com --- Bug still exist in WinSCP 5.21.6 today, tested with Wine 7.22 and staging 7.22 versions