http://bugs.winehq.org/show_bug.cgi?id=18575
Summary: FlashFXP installer quits: "Cannot register "C:\Program Files\FlashFXP\IEFlash.dll" Product: Wine Version: 1.1.22 Platform: PC URL: http://www.inicom.net/pages/en.ffxp-download.php OS/Version: Linux Status: NEW Keywords: download, Installer Severity: normal Priority: P2 Component: oleaut32 AssignedTo: wine-bugs@winehq.org ReportedBy: austinenglish@gmail.com
Follow up to bug 5131, FlashFXP's installer quits early, since it can't register its dll. A 'wineserver -k' will kill the installer, and it works fine, but if you click ok to the error, it will rollback the changes and uninstall.
Looking at a +relay: 001d:Call KERNEL32.FindFirstFileA(00d7ea6c "C:\Program Files\FlashFXP\IEFlash.dll",0199e6e4) ret=00406e6c 001d:Ret KERNEL32.FindFirstFileA() retval=ffffffff ret=00406e6c 001d:Call KERNEL32.MultiByteToWideChar(00000000,00000000,00d7ea6c "C:\Program Files\FlashFXP\IEFlash.dll",00000025,0199dff4,00000400) ret=00403d3a 001d:Ret KERNEL32.MultiByteToWideChar() retval=00000025 ret=00403d3a 001d:Call oleaut32.SysReAllocStringLen(0199e834,0199dff4,00000025) ret=00403d94 001d:Call ntdll.RtlAllocateHeap(00110000,00000000,00000050) ret=7e76369d 001d:Ret ntdll.RtlAllocateHeap() retval=00159338 ret=7e76369d 001d:Ret oleaut32.SysReAllocStringLen() retval=00000001 ret=00403d94 001d:Call sfc_os.SfcIsFileProtected(00000000,0015933c L"C:\Program Files\FlashFXP\IEFlash.dll") ret=0043cf6a 001d:Ret sfc_os.SfcIsFileProtected() retval=00000000 ret=0043cf6a 001d:Call oleaut32.SysFreeString(0015933c L"C:\Program Files\FlashFXP\IEFlash.dll") ret=00403cb3 001d:Call ntdll.RtlFreeHeap(00110000,00000000,00159338) ret=7e76383d 001d:Ret ntdll.RtlFreeHeap() retval=00000001 ret=7e76383d 001d:Ret oleaut32.SysFreeString() retval=00000001 ret=00403cb3 001d:Call KERNEL32.FindFirstFileA(00d7ea6c "C:\Program Files\FlashFXP\IEFlash.dll",0199e6a0) ret=00406e6c 001d:Ret KERNEL32.FindFirstFileA() retval=ffffffff ret=00406e6c 001d:Call KERNEL32.FindFirstFileA(00d7ea6c "C:\Program Files\FlashFXP\IEFlash.dll",0199e6a0) ret=00406e6c 001d:Ret KERNEL32.FindFirstFileA() retval=ffffffff ret=00406e6c 001d:Call KERNEL32.GetFileAttributesA(0069148c "C:\Program Files\FlashFXP") ret=004177c5 001d:Ret KERNEL32.GetFileAttributesA() retval=00000010 ret=004177c5 001d:Call KERNEL32.GetFileAttributesA(006bcc58 "C:\Program Files\FlashFXP\") ret=004177c5 001d:Ret KERNEL32.GetFileAttributesA() retval=00000010 ret=004177c5 001d:Call KERNEL32.VirtualAlloc(00ce0000,00010000,00001000,00000004) ret=00401652 001d:Ret KERNEL32.VirtualAlloc() retval=00ce0000 ret=00401652 001d:Call KERNEL32.VirtualFree(00ce0000,00010000,00004000) ret=004016d3 001d:Ret KERNEL32.VirtualFree() retval=00000001 ret=004016d3 001d:Call KERNEL32.FindFirstFileA(00d7ea6c "C:\Program Files\FlashFXP\IEFlash.dll",0199e698) ret=00406e6c 001d:Ret KERNEL32.FindFirstFileA() retval=ffffffff ret=00406e6c 001d:Call ntdll.strcat(0199e800 "Z:\home\austin\Desktop\",1000a168 "FlashFXP_36_Setup.exe") ret=100014ac 001d:Ret ntdll.strcat() retval=0199e800 ret=100014ac 001d:Call ntdll._stricmp(0199e800 "Z:\home\austin\Desktop\FlashFXP_36_Setup.exe",1000a708 "C:\Program Files\FlashFXP\IEFlash.dll") ret=100014b9 001d:Ret ntdll._stricmp() retval=00000017 ret=100014b9 001d:Call KERNEL32.CreateFileA(1000a708 "C:\Program Files\FlashFXP\IEFlash.dll",40000000,00000003,0199e7a4,00000004,00000080,00000000) ret=7e06d71a
points to oleaut32. Indeed, 'winetricks -q dcom98' lets the installer proceed as normal.
http://bugs.winehq.org/show_bug.cgi?id=18575
--- Comment #1 from Juan Lang juan_lang@yahoo.com 2009-05-22 15:09:57 --- (In reply to comment #0)
Looking at a +relay: points to oleaut32. Indeed, 'winetricks -q dcom98' lets the installer proceed as normal.
Sorry, I'm not seeing why it's an oleaut32 bug. Could you elaborate?
http://bugs.winehq.org/show_bug.cgi?id=18575
--- Comment #2 from Austin English austinenglish@gmail.com 2009-05-22 15:23:53 --- (In reply to comment #1)
(In reply to comment #0)
Looking at a +relay: points to oleaut32. Indeed, 'winetricks -q dcom98' lets the installer proceed as normal.
Sorry, I'm not seeing why it's an oleaut32 bug. Could you elaborate?
I could be mistaken, but this line: 001d:Ret oleaut32.SysReAllocStringLen() retval=00000001 ret=00403d94
made me suspect oleaut32, and in turn test native ole and friends. It could of course be a bug in one of the other ole dlls. FWIW, the installer claims to be 'registering COM interfaces' just before that error.
http://bugs.winehq.org/show_bug.cgi?id=18575
--- Comment #3 from Dmitry Timoshkov dmitry@codeweavers.com 2009-05-23 23:38:45 --- Might be a duplicate of bug 3756 or bug 13152.
http://bugs.winehq.org/show_bug.cgi?id=18575
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Depends on| |3756
--- Comment #4 from Austin English austinenglish@gmail.com 2009-05-24 14:01:03 --- (In reply to comment #3)
Might be a duplicate of bug 3756 or bug 13152.
It may be a dupe of 3756...I'm going to mark it as depending on that bug (let's keep this one open, to make searching easier).
http://bugs.winehq.org/show_bug.cgi?id=18575
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|oleaut32 |-unknown
--- Comment #5 from Nikolay Sivov bunglehead@gmail.com 2010-05-07 09:17:55 --- I don't see why it's an oleaut32 bug. Austin, could you attach complete +relay? A part you reported with doesn't contain anything closely related to registration problem.
About this oleaut32 call:
--- 001d:Call oleaut32.SysReAllocStringLen(0199e834,0199dff4,00000025) ret=00403d94 001d:Call ntdll.RtlAllocateHeap(00110000,00000000,00000050) ret=7e76369d 001d:Ret ntdll.RtlAllocateHeap() retval=00159338 ret=7e76369d 001d:Ret oleaut32.SysReAllocStringLen() retval=00000001 ret=00403d94 001d:Call sfc_os.SfcIsFileProtected(00000000,0015933c L"C:\Program Files\FlashFXP\IEFlash.dll") ret=0043cf6a 001d:Ret sfc_os.SfcIsFileProtected() retval=00000000 ret=0043cf6a 001d:Call oleaut32.SysFreeString(0015933c L"C:\Program Files\FlashFXP\IEFlash.dll") ret=00403cb3 ---
For some reason they decided to call SfcIsFileProtected() with BSTR-allocated string. That's the only purpose of this SysReAllocStringLen here (which doesn't fail by the way).
http://bugs.winehq.org/show_bug.cgi?id=18575
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|http://www.inicom.net/pages |http://www.flashfxp.com/dow |/en.ffxp-download.php |nload.php
http://bugs.winehq.org/show_bug.cgi?id=18575
--- Comment #6 from Austin English austinenglish@gmail.com 2010-05-08 17:21:37 --- Created an attachment (id=27815) --> (http://bugs.winehq.org/attachment.cgi?id=27815) +relay trace, tail'ed to 500K lines
Here you go Nikolay.
Still present in 1.1.44.
http://bugs.winehq.org/show_bug.cgi?id=18575
--- Comment #7 from Nikolay Sivov bunglehead@gmail.com 2010-05-08 18:00:56 --- Created an attachment (id=27818) --> (http://bugs.winehq.org/attachment.cgi?id=27818) patch
It seems it doesn't like failure return code from RegCreateKeyExA:
--- 001c:Ret PE DLL (proc=0x2586bb4,module=0x2560000 L"IEFlash.dll",reason=PROCESS_ATTACH,res=(nil)) retval=1 001c:Ret KERNEL32.LoadLibraryExA() retval=02560000 ret=0041a322 001c:Call KERNEL32.SetErrorMode(00000001) ret=0041a355 001c:Ret KERNEL32.SetErrorMode() retval=00000001 ret=0041a355 001c:Call KERNEL32.GetProcAddress(02560000,0041622c "DllRegisterServer") ret=004161e4 001c:Ret KERNEL32.GetProcAddress() retval=02579974 ret=004161e4 ... 001c:Call advapi32.RegCreateKeyExA(80000000,01990eac "CLSID\{E5A1691B-D188-4419-AD02-90002030B8EE}",00000000,025788cc,00000000,0002001f,00000000,0032fb78,0032fb74) ret=02578870 001c:Ret advapi32.RegCreateKeyExA() retval=00000006 ret=02578870 001c:Call user32.LoadStringA(02560000,0000ffad,0032f73c,00000400) ret=02566602 001c:Ret user32.LoadStringA() retval=00000024 ret=02566602 001c:Call KERNEL32.RaiseException(0eedfade,00000001,00000007,0032fb4c) ret=025788c2 ---
Attach a +reg with this patch applied.
http://bugs.winehq.org/show_bug.cgi?id=18575
--- Comment #8 from Austin English austinenglish@gmail.com 2010-05-08 18:10:16 --- Created an attachment (id=27819) --> (http://bugs.winehq.org/attachment.cgi?id=27819) +reg trace
http://bugs.winehq.org/show_bug.cgi?id=18575
--- Comment #9 from Nikolay Sivov bunglehead@gmail.com 2010-05-09 19:22:46 --- Server returns STATUS_OBJECT_TYPE_MISMATCH for passed handle created for HKCR. After some tracing this handle is event handle actually, not a hkey one.
This is what happens:
--- 0009:trace:reg:get_special_root_hkey hkey 0x80000000 0009:trace:reg:NtCreateKey ((nil),L"Machine\Software\Classes",<null>,0,2000000,0x33f448) create_key exit 0x00000000, parent 0x809e6a8, req->parent 0 0009:trace:reg:NtCreateKey <- 0x4 0009:trace:reg:create_key 1: 0x00000000 0009:trace:reg:create_special_root_hkey L"Machine\Software\Classes" -> 0x4 0009:trace:reg:get_special_root_hkey return 0x4 <- ... 0009:trace:ntdll:NtClose 0x4 0009:trace:ntdll:NtCreateEvent event created 0x4 0009:trace:ntdll:NtCreateEvent event created 0x8 0009:trace:ntdll:NtCreateEvent event created 0x10 0009:trace:ntdll:NtCreateEvent event created 0x48 0009:trace:ntdll:NtCreateEvent event created 0x50 0009:trace:ntdll:NtCreateEvent event created 0x58 0009:trace:reg:RegCreateKeyExA 0x80000000 CLSID{E5A1691B-D188-4419-AD02-90002030B8EE} 0 2001f 0x33fb88 0009:trace:reg:get_special_root_hkey hkey 0x80000000 0009:trace:reg:get_special_root_hkey return 0x4 <- 0009:trace:reg:NtCreateKey (0x4,L"CLSID\{E5A1691B-D188-4419-AD02-90002030B8EE}",L"",0,2001f,0x33fb88) 0009:trace:reg:NtCreateKey <- 0x1590b08 0009:trace:reg:create_key 1: 0xc0000024 0009:trace:reg:RegCreateKeyExA ntstatus 0xc0000024 ---
First time cached handle for HKCR special 0x80000000 is created with value 0x4. After that it's closed with NtClose() but remains in advapi32 cache as 0x4. Thread creates an event object then which got free handle with 0x4 value. On next call to RegCreateKeyExA() it's used in place of HKCR. This caused handle type mismatch on server side (and it's true of course), and an error code returned.
http://bugs.winehq.org/show_bug.cgi?id=18575
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|-unknown |msvcrt
--- Comment #10 from Nikolay Sivov bunglehead@gmail.com 2010-05-10 05:58:38 --- Alexandre pointed me to bug 21562, this one is most likely a duplicate of it but let's keep it open, until 21562 is fixed.
Problem is in multiple msvcrt load/unload that breaks things on cleanup (see http://bugs.winehq.org/show_bug.cgi?id=21562#c0 for full description).
http://bugs.winehq.org/show_bug.cgi?id=18575
--- Comment #11 from Nikolay Sivov bunglehead@gmail.com 2010-05-30 06:11:58 --- Austin, retest this one please. I expect it to be fixed with 1.2-rc2.
http://bugs.winehq.org/show_bug.cgi?id=18575
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #12 from Austin English austinenglish@gmail.com 2010-05-30 10:57:54 --- (In reply to comment #11)
Austin, retest this one please. I expect it to be fixed with 1.2-rc2.
Yep, works just fine, aside from a window problem (installer window doesn't show in taskbar, but that's a different issue, probably covered by other bugs).
Thanks!
http://bugs.winehq.org/show_bug.cgi?id=18575
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #13 from Alexandre Julliard julliard@winehq.org 2010-06-11 12:51:28 --- Closing bugs fixed in 1.2-rc3.
http://bugs.winehq.org/show_bug.cgi?id=18575
Bug 18575 depends on bug 3756, which changed state.
Bug 3756 Summary: ATMEL AVRStudio4 crash http://bugs.winehq.org/show_bug.cgi?id=3756
What |Old Value |New Value ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED