[Bug 35149] New: RSA SecurID token v411 installer hangs during processing of EULA (large RTF passed twice: window text and richedit streamin callback)
wine-bugs at winehq.org
wine-bugs at winehq.org
Tue Dec 17 05:31:42 CST 2013
http://bugs.winehq.org/show_bug.cgi?id=35149
Bug ID: 35149
Summary: RSA SecurID token v411 installer hangs during
processing of EULA (large RTF passed twice: window
text and richedit streamin callback)
Product: Wine
Version: 1.7.8
Hardware: x86
OS: Linux
Status: NEW
Severity: normal
Priority: P2
Component: msi
Assignee: wine-bugs at winehq.org
Reporter: focht at gmx.net
Classification: Unclassified
Hello folks,
as mentioned here http://bugs.winehq.org/show_bug.cgi?id=35145#c2
--- quote ---
What version of the RSA client? I've never been able to install it, the msi
installer hangs.
--- quote ---
After choosing the location which decides if domestic or export EULA should be
displayed, the installer seems hang.
Actually it churns on one CPU with 100% trying to break up the complex RTF
passed in as one chunk with window text and the same content added a _second_
time using richedit streamin callback.
Source:
http://source.winehq.org/git/wine.git/blob/3271b982632e7730d6cee373f4c9a4af37012036:/dlls/msi/dialog.c#l1295
--- snip ---
1295 static UINT msi_dialog_scrolltext_control( msi_dialog *dialog, MSIRECORD
*rec )
1296 {
...
1308 hRichedit = LoadLibraryA("riched20");
1309
1310 style = WS_BORDER | ES_MULTILINE | WS_VSCROLL |
1311 ES_READONLY | ES_AUTOVSCROLL | WS_TABSTOP;
1312 control = msi_dialog_add_control( dialog, rec, szRichEdit20W, style );
...
--- snip ---
The large RTF content will be loaded from column 10 and passed as one chunk to
dialog_create_window().
Additionally MSI_RecordGetString() runs deformat_string() on that RTF which
also takes some time.
--- snip ---
781 /* everything except radio buttons */
782 static msi_control *msi_dialog_add_control( msi_dialog *dialog,
783 MSIRECORD *rec, LPCWSTR szCls, DWORD style )
784 {
785 DWORD attributes;
786 LPCWSTR text, name;
787 DWORD exstyle = 0;
788
789 name = MSI_RecordGetString( rec, 2 );
790 attributes = MSI_RecordGetInteger( rec, 8 );
791 ext = MSI_RecordGetString( rec, 10 );
792
793 TRACE("%s, %s, %08x, %s, %08x\n", debugstr_w(szCls), debugstr_w(name),
794 attributes, debugstr_w(text), style);
795
796 if( attributes & msidbControlAttributesVisible )
797 style |= WS_VISIBLE;
798 if( ~attributes & msidbControlAttributesEnabled )
799 style |= WS_DISABLED;
800 if( attributes & msidbControlAttributesSunken )
801 exstyle |= WS_EX_CLIENTEDGE;
802
803 dialog_map_events( dialog, name );
804
805 return dialog_create_window( dialog, rec, exstyle, szCls, name, text,
style, dialog->hwnd );
806 }
--- snip ---
All these things seem kind of redundant and inefficient because some lines
later the same content is added again, now with more efficient richedit
streamin callback mechanism (see msi_scrolltext_add_text()):
--- snip ---
1295 static UINT msi_dialog_scrolltext_control( msi_dialog *dialog, MSIRECORD
*rec )
1296 {
...
1325 /* subclass the static control */
1326 info->oldproc = (WNDPROC) SetWindowLongPtrW( control->hwnd,
GWLP_WNDPROC,
1327 (LONG_PTR)MSIScrollText_WndProc );
1328 SetPropW( control->hwnd, szButtonData, info );
1329
1330 /* add the text into the richedit */
1331 text = MSI_RecordGetString( rec, 10 );
1332 if (text)
1333 msi_scrolltext_add_text( control, text );
1334
1335 return ERROR_SUCCESS;
1336 }
--- snip ---
If you avoid the first load via window text in scrolltext control case, the
EULA is displayed almost instantly.
===
The 'hickup' when adding the content twice - through window text and richedit
streamin callback could be also subject to some bug.
With 'winetricks -q riched20' it still takes an awful lot time: ~25 seconds
with i5 2.60 GHz machine - but at least it finishes unlike Wine builtin (maybe
it does ... after 1 hour?)
$ sha1sum RSASecurIDToken411.zip
e0e98c04bd8e1ba52fcf73e058703ccbb85d3252 RSASecurIDToken411.zip
$ du -sh RSASecurIDToken411.zip
20M RSASecurIDToken411.zip
$ wine --version
wine-1.7.8-232-g3bad812
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