http://bugs.winehq.org/show_bug.cgi?id=25243
Summary: Viva Pinata fails installation and startup Product: Wine Version: 1.3.7 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: shannon.vanwagner@gmail.com
Created an attachment (id=32047) --> (http://bugs.winehq.org/attachment.cgi?id=32047) starting Viva Pinata.exe with debug module
Viva Pinata install fails with "Feature Transfer Error". Game also fails to start, perhaps because it's not installed all the way.
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #1 from Shannon VanWagner shannon.vanwagner@gmail.com 2010-11-20 21:34:47 CST --- Created an attachment (id=32048) --> (http://bugs.winehq.org/attachment.cgi?id=32048) wine Startup.exe debug log
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #2 from Shannon VanWagner shannon.vanwagner@gmail.com 2010-11-20 21:35:27 CST --- Created an attachment (id=32049) --> (http://bugs.winehq.org/attachment.cgi?id=32049) terminal output from starting game
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #3 from Shannon VanWagner shannon.vanwagner@gmail.com 2010-11-20 21:49:02 CST --- Created an attachment (id=32050) --> (http://bugs.winehq.org/attachment.cgi?id=32050) winedebug from install
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #4 from Austin English austinenglish@gmail.com 2010-11-21 01:49:08 CST --- err:module:import_dll Library X3DAudio1_1.dll (which is needed by L"C:\Program Files\Microsoft Games\Viva Pinata\Viva Pinata.exe") not found err:module:import_dll Library xlive.dll (which is needed by L"C:\Program Files\Microsoft Games\Viva Pinata\Viva Pinata.exe") not found
Try 'winetricks -q xact xlive'.
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #5 from Austin English austinenglish@gmail.com 2010-11-21 01:49:19 CST --- Err, gfw, not xlive.
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #6 from Shannon VanWagner shannon.vanwagner@gmail.com 2010-11-29 20:04:02 CST --- Created an attachment (id=32234) --> (http://bugs.winehq.org/attachment.cgi?id=32234) terminal output from viva pinata install
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #7 from Shannon VanWagner shannon.vanwagner@gmail.com 2010-11-29 20:08:48 CST --- Previous terminal output attachment was after winetricks -q gfw. Installation still failed with "Feature Transfer Error". Now I'll run winetricks -q xact as well and try again.
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #8 from Shannon VanWagner shannon.vanwagner@gmail.com 2010-11-29 20:15:17 CST --- Still fails after winetricks -q xact gfw, error dialog shows
Titlebar: Feature Transfer Error Error: -1603 Fatal error during installation Consult Windows Installer Help (Msi.chm) or MSDN for more information.
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #9 from Shannon VanWagner shannon.vanwagner@gmail.com 2010-11-29 20:16:56 CST --- Created an attachment (id=32235) --> (http://bugs.winehq.org/attachment.cgi?id=32235) terminal output for vivapinata install fail after gfw xact
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #10 from Shannon VanWagner shannon.vanwagner@gmail.com 2010-11-29 20:26:48 CST --- Here's some interesting output... what clsid is fffff... and do I need to install vcrun2008 or something?
shannon@ubuntu-530n:~/.wisotool/cache/pinataAll$ wine setup.exe /S /v/qn fixme:storage:create_storagefile Storage share mode not implemented. fixme:advapi:LookupAccountNameW (null) L"shannon" (nil) 0x329014 (nil) 0x329018 0x32900c - stub fixme:advapi:LookupAccountNameW (null) L"shannon" 0x176200 0x329014 0x176300 0x329018 0x32900c - stub fixme:advapi:LookupAccountNameW (null) L"shannon" (nil) 0x329014 (nil) 0x329018 0x32900c - stub fixme:advapi:LookupAccountNameW (null) L"shannon" 0x18e950 0x329014 0x185c18 0x329018 0x32900c - stub fixme:sxs:cache_QueryAssemblyInfo 0x1f37e0, 0x00000001, L"Microsoft.VC80.CRT, version=8.0.50727.762, publicKeyToken=1fc8b3b9a1e18e3b, processorArchitecture=x86", 0x32a258 fixme:sxs:cache_QueryAssemblyInfo 0x1f37e0, 0x00000001, L"policy.8.0.Microsoft.VC80.CRT, version=8.0.50727.762, publicKeyToken=1fc8b3b9a1e18e3b, processorArchitecture=x86", 0x32a258 err:rpc:I_RpcReceive we got fault packet with status 0x80010108 err:ole:dispatch_rpc no apartment found for ipid {ffffffff-ffff-ffff-2000-00001b000000} err:rpc:I_RpcReceive we got fault packet with status 0x80010108
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #11 from Shannon VanWagner shannon.vanwagner@gmail.com 2010-11-29 20:32:19 CST --- Created an attachment (id=32236) --> (http://bugs.winehq.org/attachment.cgi?id=32236) terminal output
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #12 from Shannon VanWagner shannon.vanwagner@gmail.com 2010-11-29 20:46:11 CST --- Something I notice is on disk 1, there's "program files/Microsoft Games" whereas on disk 2, it's "program files/microsoft games". So when I tried copying both disk contents for program files into "program files/Microsoft Games", the game installed! So I winetricks vcrun2005 xact gfw, then copied both disks into a directory, then moved contents of "<copiedDir>/program files/microsoft games/viva pinata" into "<copiedDir>/program files/Microsoft Games/Viva Pinata". The install finishes!
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #13 from Shannon VanWagner shannon.vanwagner@gmail.com 2010-11-29 20:48:04 CST --- Created an attachment (id=32238) --> (http://bugs.winehq.org/attachment.cgi?id=32238) terminal output from install complete
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #14 from Shannon VanWagner shannon.vanwagner@gmail.com 2010-11-29 22:04:27 CST --- Created an attachment (id=32239) --> (http://bugs.winehq.org/attachment.cgi?id=32239) patched Startup.exe, then when you click the button, you get a "launch from startup.exe" error
This game won't run with the normal cd patches. So this problem seems to be one of copy protection.
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #15 from Shannon VanWagner shannon.vanwagner@gmail.com 2010-11-29 22:05:27 CST --- Created an attachment (id=32240) --> (http://bugs.winehq.org/attachment.cgi?id=32240) This is what shows after clicking the green button on the startup.exe dialog
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #16 from Shannon VanWagner shannon.vanwagner@gmail.com 2010-11-29 22:06:43 CST --- So I was testing using this winetricks -q vcrun2005 ie6 xact gfw d3dx9_36 msxml4
The problem is that the game is adamant about asking for the cdrom
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #17 from Shannon VanWagner shannon.vanwagner@gmail.com 2010-11-30 20:35:55 CST --- Seems the only hope for this game to work is when there is an updated version released that allows the game to see the game cd as inserted (when it actually is) during gameplay. It's a shame that these types of controls prevent people who are using legitimately purchased versions from being able to play these games in wine.
http://bugs.winehq.org/show_bug.cgi?id=25243
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |obfuscation CC| |focht@gmx.net
--- Comment #18 from Anastasius Focht focht@gmx.net 2011-06-14 07:58:29 CDT --- Hello,
can you run "ProtectionID" tool (http://pid.gamecopyworld.com/) on the main binaries (*.exe, *.dll) to identify exact copy protection? Copy/paste the output of the log window here - only executables that have been flagged containing protection.
See this bug: http://bugs.winehq.org/show_bug.cgi?id=27349 for examples what kind of information is relevant from "Protection ID".
Regards
http://bugs.winehq.org/show_bug.cgi?id=25243
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |Installer Status|UNCONFIRMED |NEW CC| |austinenglish@gmail.com Ever Confirmed|0 |1
--- Comment #19 from Austin English austinenglish@gmail.com 2011-06-14 17:36:47 CDT --- (In reply to comment #18)
Hello,
can you run "ProtectionID" tool (http://pid.gamecopyworld.com/) on the main binaries (*.exe, *.dll) to identify exact copy protection? Copy/paste the output of the log window here - only executables that have been flagged containing protection.
See this bug: http://bugs.winehq.org/show_bug.cgi?id=27349 for examples what kind of information is relevant from "Protection ID".
Regards
Scanning -> D:\program files\Microsoft Games\Viva Pinata\Startup.exe File Type : 32-Bit Exe (Subsystem : Win GUI / 2), Size : 2010304 (01EACC0h) Byte(s) -> File Appears to be Digitally Signed @ Offset 01E88C0h, size : 02400h / 09216 byte(s) -> File has 1444032 (01608C0h) bytes of appended data starting at offset 088000h [File Heuristics] -> Flag : 00000000000000001100000000000111 (0x0000C007) [!] Safedisc v4.81.000 detected ! [i] Appended data contents.... [.] o: 0x00088028 / t: <0xA8726B03> <0xEF01996C> <0x00000001> / s: 00303952 byte(s) -> ~de02a3.tmp [.] o: 0x000D239F / t: <0xA8726B03> <0xEF01996C> <0x0000044C> / s: 00015887 byte(s) -> clcd32.dll [.] o: 0x000D61D5 / t: <0xA8726B03> <0xEF01996C> <0x0000044C> / s: 00004123 byte(s) -> clcd16.dll [.] o: 0x000D7214 / t: <0xA8726B03> <0xEF01996C> <0x0000044D> / s: 00037971 byte(s) -> mcp.dll [.] o: 0x000E0690 / t: <0xA8726B03> <0xEF01996C> <0x0000000B> / s: 00005446 byte(s) -> SecDrv04.VxD [.] o: 0x000E1BFB / t: <0xA8726B03> <0xEF01996C> <0x00000000> / s: 00072192 byte(s) -> ~e5.0001 [.] o: 0x000F3622 / t: <0xA8726B03> <0xEF01996C> <0x00000000> / s: 00045056 byte(s) -> PfdRun.pfd [.] o: 0x000FE64A / t: <0xA8726B03> <0xEF01996C> <0x00000000> / s: 00959004 byte(s) -> ~df394b.tmp [CompilerDetect] -> Visual C++ 8.0 (Visual Studio 2005) - Scan Took : 0.613 Second(s)
Scanning -> D:\program files\Microsoft Games\Viva Pinata\Viva Pinata.exe File Type : 32-Bit Exe (Subsystem : Win GUI / 2), Size : 11056128 (0A8B400h) Byte(s) -> File Appears to be Digitally Signed @ Offset 0A89000h, size : 02400h / 09216 byte(s) [File Heuristics] -> Flag : 00000000000000000000000000000100 (0x00000004) [!] Games For Windows Live detected ! [CompilerDetect] -> Visual C++ 8.0 (Visual Studio 2005) - Scan Took : 0.430 Second(s)
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #20 from Austin English austinenglish@gmail.com 2011-06-14 17:38:21 CDT --- Install still fails with wine-1.3.22-31-g98394f2, btw. Game requires XP, refuses to install in 2K/NT mode.
http://bugs.winehq.org/show_bug.cgi?id=25243
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Viva Pinata fails |Microsoft Viva Pinata fails |installation and startup |on startup (Wine-Gecko | |"SetThreadName" MSVC | |exception 0x406d1388 breaks | |SafeDisc debugger)
--- Comment #21 from Anastasius Focht focht@gmx.net 2012-04-20 19:05:17 CDT --- Hello,
I had the right feeling about this one ... bought the game for a few bugs and it was delivered today :)
Two-disc version, installs fine (CD changes: 1-2-1) so the first part of this bug is actually "fixed".
ProtectionID tool gives:
--- snip --- -=[ ProtectionID v0.6.4.0 JULY]=- (c) 2003-2010 CDKiLLER & TippeX Build 07/08/10-17:57:05 Ready...
Scanning -> Z:\home\focht.wine\drive_c\Program Files (x86)\Microsoft Games\Viva Pinata\Startup.exe File Type : 32-Bit Exe (Subsystem : Win GUI / 2), Size : 2010304 (01EACC0h) Byte(s) -> File Appears to be Digitally Signed @ Offset 01E88C0h, size : 02400h / 09216 byte(s) -> File has 1444032 (01608C0h) bytes of appended data starting at offset 088000h [File Heuristics] -> Flag : 00000000000000001100000000000111 (0x0000C007) [!] Safedisc v4.81.000 detected ! [i] Appended data contents.... [.] o: 0x00088028 / t: <0xA8726B03> <0xEF01996C> <0x00000001> / s: 00303952 byte(s) -> ~de02a3.tmp [.] o: 0x000D239F / t: <0xA8726B03> <0xEF01996C> <0x0000044C> / s: 00015887 byte(s) -> clcd32.dll [.] o: 0x000D61D5 / t: <0xA8726B03> <0xEF01996C> <0x0000044C> / s: 00004123 byte(s) -> clcd16.dll [.] o: 0x000D7214 / t: <0xA8726B03> <0xEF01996C> <0x0000044D> / s: 00037971 byte(s) -> mcp.dll [.] o: 0x000E0690 / t: <0xA8726B03> <0xEF01996C> <0x0000000B> / s: 00005446 byte(s) -> SecDrv04.VxD [.] o: 0x000E1BFB / t: <0xA8726B03> <0xEF01996C> <0x00000000> / s: 00072192 byte(s) -> ~e5.0001 [.] o: 0x000F3622 / t: <0xA8726B03> <0xEF01996C> <0x00000000> / s: 00045056 byte(s) -> PfdRun.pfd [.] o: 0x000FE64A / t: <0xA8726B03> <0xEF01996C> <0x00000000> / s: 00959004 byte(s) -> ~df394b.tmp [CompilerDetect] -> Visual C++ 8.0 (Visual Studio 2005) - Scan Took : 0.470 Second(s)
Scanning -> Z:\home\focht.wine\drive_c\Program Files (x86)\Microsoft Games\Viva Pinata\Viva Pinata.exe File Type : 32-Bit Exe (Subsystem : Win GUI / 2), Size : 11056128 (0A8B400h) Byte(s) -> File Appears to be Digitally Signed @ Offset 0A89000h, size : 02400h / 09216 byte(s) [File Heuristics] -> Flag : 00000000000000000000000000000100 (0x00000004) [!] Games For Windows Live detected ! [CompilerDetect] -> Visual C++ 8.0 (Visual Studio 2005) - Scan Took : 0.175 Second(s) --- snip ---
The game exits on startup.
The reason is an unfortunate combination of SafeDisc's design (debugger + debuggee) and Wine-Gecko engine being overly "helpful" with debugging hints.
When the game is started using the launcher it creates a second process by design which acts as debugger to the first one (parent):
--- snip --- 0024:trace:process:__wine_kernel_init starting process name=L"C:\Program Files (x86)\Microsoft Games\Viva Pinata\Startup.exe" argv[0]=L"C:\Program Files (x86)\Microsoft Games\Viva Pinata\Startup.exe" ... 0024:Call KERNEL32.CreateProcessA(0032f4a8 "C:\users\focht\Temp\~e5.0001",0032f5b0 ""C:\users\focht\Temp\~e5.0001" 35 "C:\users\focht\Temp\""~e5.0001.dir.0000"",00000000,00000000,00000000,00000030,00000000,0032fc08 "C:\users\focht\Temp\",0032f460,0032f450) ret=00489eb9 0024:trace:process:create_process_impl app L"C:\users\focht\Temp\~e5.0001" cmdline L""C:\users\focht\Temp\~e5.0001" 35 "C:\users\focht\Temp\""~e5.0001.dir.0000"" 0024:trace:process:open_exe_file looking for L"C:\users\focht\Temp\~e5.0001" 0024:trace:process:create_process_impl starting L"C:\users\focht\Temp\~e5.0001" as Win32 binary (0x400000-0x416000) ... 0026:trace:loaddll:load_builtin_dll Loaded L"KERNEL32.dll" at 0x7b810000: builtin 0026:Call KERNEL32.__wine_kernel_init() ret=7bc530d2 0026:trace:process:init_current_directory starting in L"C:\users\focht\Temp\" 0x10 0026:trace:process:__wine_kernel_init starting process name=L"C:\users\focht\Temp\~e5.0001" argv[0]=L"C:\users\focht\Temp\~e5.0001" 0026:trace:loaddll:load_native_dll Loaded L"C:\users\focht\Temp\~e5.0001" at 0x400000: native 0024:trace:process:create_process_impl started process pid 0025 tid 0026 0024:Ret KERNEL32.CreateProcessA() retval=00000001 ret=00489eb9 ... 0026:Ret KERNEL32.CreateThread() retval=0000003c ret=00402dbd ... 0027:Starting thread proc 0x402cc2 (arg=0x416ee8) ... 0027:Call KERNEL32.DebugActiveProcess(00000023) ret=667ad4da 0027:Ret KERNEL32.DebugActiveProcess() retval=00000001 ret=667ad4da ... 0027:Call KERNEL32.WaitForDebugEvent(0062e3dc,ffffffff) ret=667ad513 0027:Ret KERNEL32.WaitForDebugEvent() retval=00000001 ret=667ad513 --- snip ---
The debugger expects events/exceptions from child as part of the software protection.
For example when an int 3 (safedisc nanomite) is seen by debugger it checks where exception occurred. The debugger decides if the opcode is to be emulated or decrypted by using WriteProcessMemory (writing the original opcode back to child address space and re-executing code).
--- snip --- ... 0024:trace:seh:raise_exception code=80000003 flags=0 addr=0x404ca1 ip=00404ca2 tid=0024 0024:trace:seh:raise_exception eax=00000001 ebx=00000001 ecx=00000000 edx=00000000 esi=0047e2ac edi=0043f4e0 0024:trace:seh:raise_exception ebp=0032fd94 esp=0032fd68 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00000206 0027:Ret KERNEL32.WaitForDebugEvent() retval=00000001 ret=667ad5b4 0027:Call ntdll.RtlAllocateHeap(00630000,00000000,000002ec) ret=6678eca6 0027:Ret ntdll.RtlAllocateHeap() retval=006499b0 ret=6678eca6 0027:Call KERNEL32.GetVersionExA(0062e330) ret=667ae700 0027:Ret KERNEL32.GetVersionExA() retval=00000001 ret=667ae700 0027:Call KERNEL32.GetThreadContext(00000078,006499c0) ret=667ae2cf 0027:Ret KERNEL32.GetThreadContext() retval=00000001 ret=667ae2cf 0027:Call ntdll.RtlAllocateHeap(00630000,00000000,00000008) ret=6678eca6 0027:Ret ntdll.RtlAllocateHeap() retval=0064ac08 ret=6678eca6 0027:Call ntdll.RtlAllocateHeap(00630000,00000000,00000008) ret=6678eca6 0027:Ret ntdll.RtlAllocateHeap() retval=0064ac80 ret=6678eca6 0027:Call KERNEL32.ReadProcessMemory(00000074,00404ca0,0062de40,00000010,0062dab0) ret=667adf40 0027:Ret KERNEL32.ReadProcessMemory() retval=00000001 ret=667adf40 0027:Call KERNEL32.WriteProcessMemory(00000074,00404ca1,0062dea4,00000002,0062dab0) ret=667adefb 0027:Ret KERNEL32.WriteProcessMemory() retval=00000001 ret=667adefb ... 0027:Call KERNEL32.FlushInstructionCache(00000074,00404ca1,00000008) ret=667ae4f5 0027:Ret KERNEL32.FlushInstructionCache() retval=00000001 ret=667ae4f5 0027:Call KERNEL32.SetThreadContext(00000078,006499c0) ret=667ae29d 0027:Ret KERNEL32.SetThreadContext() retval=00000001 ret=667ae29d 0027:Call ntdll.RtlAllocateHeap(00630000,00000000,00000080) ret=6678eca6 0027:Ret ntdll.RtlAllocateHeap() retval=0064acb8 ret=6678eca6 0027:Call KERNEL32.GetModuleHandleA(0064acb8 "Kernel32") ret=6674f76d 0027:Ret KERNEL32.GetModuleHandleA() retval=7b810000 ret=6674f76d 0027:Call ntdll.RtlFreeHeap(00630000,00000000,0064acb8) ret=6678ea06 0027:Ret ntdll.RtlFreeHeap() retval=00000001 ret=6678ea06 0027:Call ntdll.RtlAllocateHeap(00630000,00000000,00000080) ret=6678eca6 0027:Ret ntdll.RtlAllocateHeap() retval=0064acb8 ret=6678eca6 0027:Call ntdll.RtlFreeHeap(00630000,00000000,0064acb8) ret=6678ea06 0027:Ret ntdll.RtlFreeHeap() retval=00000001 ret=6678ea06 0027:Call KERNEL32.ContinueDebugEvent(00000023,00000024,00010002) ret=6675f9eb 0027:Ret KERNEL32.ContinueDebugEvent() retval=00000001 ret=6675f9eb 0027:Call ntdll.RtlFreeHeap(00630000,00000000,006499b0) ret=6678ea06 0027:Ret ntdll.RtlFreeHeap() retval=00000001 ret=6678ea06 0027:Call KERNEL32.WaitForDebugEvent(0062e3dc,ffffffff) ret=667ad5b4 --- snip ---
This works as designed.
Consider the following snippet when the Wine-Gecko engine is loaded:
--- snip --- 0024:Call mshtml.DllGetClassObject(0032ca08,7e5ea4ec,0032c8bc) ret=7e50ac12 0024:trace:mshtml:DllGetClassObject (CLSID_HTMLDocument {00000001-0000-0000-c000-000000000046} 0x32c8bc) ... 0024:trace:mshtml:load_gecko () ... 0024:trace:mshtml:check_version "Wine Gecko 1.5" 0024:trace:mshtml:load_xul (L"C:\windows\syswow64\gecko\1.5\wine_gecko\\xul.dll") ... 0024:Call KERNEL32.LoadLibraryExW(0032c284 L"C:\windows\syswow64\gecko\1.5\wine_gecko\\xul.dll",00000000,00000008) ret=7d2e1b86 0027:Ret KERNEL32.WaitForDebugEvent() retval=00000001 ret=667ad5b4 ... 0027:Call KERNEL32.ContinueDebugEvent(00000023,00000024,00010002) ret=6675f9eb 0027:Ret KERNEL32.ContinueDebugEvent() retval=00000001 ret=6675f9eb 0027:Call ntdll.RtlFreeHeap(00630000,00000000,0064ac08) ret=6678ea06 0027:Ret ntdll.RtlFreeHeap() retval=00000001 ret=6678ea06 0027:Call KERNEL32.WaitForDebugEvent(0062e3dc,ffffffff) ret=667ad5b4 0024:trace:loaddll:load_builtin_dll Loaded L"C:\windows\system32\msvcrt.dll" at 0x7d1c0000: builtin 0027:Ret KERNEL32.WaitForDebugEvent() retval=00000001 ret=667ad5b4 ... 002d:Call KERNEL32.IsDebuggerPresent() ret=6a89b761 002d:Ret KERNEL32.IsDebuggerPresent() retval=00000001 ret=6a89b761 002d:Call KERNEL32.GetCurrentThreadId() ret=6a89b723 002d:Ret KERNEL32.GetCurrentThreadId() retval=0000002d ret=6a89b723 002d:Call KERNEL32.RaiseException(406d1388,00000000,00000004,00f2e8e0) ret=6a89b7ab 002d:trace:seh:raise_exception code=406d1388 flags=0 addr=0x7b839357 ip=7b839357 tid=002d 002d:trace:seh:raise_exception info[0]=00001000 002d:trace:seh:raise_exception info[1]=00160584 002d:trace:seh:raise_exception info[2]=0000002d 002d:trace:seh:raise_exception info[3]=00000000 002d:trace:seh:raise_exception eax=7b826381 ebx=7b8aa728 ecx=00000000 edx=00f2e814 esi=00f2e8e0 edi=00f2e860 002d:trace:seh:raise_exception ebp=00f2e848 esp=00f2e7e4 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00000283 --- snip ---
Gecko checks if a debugger is present/active and issues a special "SetThreadName" msvc exception (code 0x406d1388) because it assumes there is someone who debugs the process. Unfortunately it's not the user but SafeDisc itself which acts as debugger by design.
--- snip --- 0027:Ret KERNEL32.WaitForDebugEvent() retval=00000001 ret=667ad5b4 ... 0027:Call KERNEL32.ContinueDebugEvent(00000023,0000002d,80010001) ret=6675f9eb 0027:Ret KERNEL32.ContinueDebugEvent() retval=00000001 ret=6675f9eb 0027:Call ntdll.RtlFreeHeap(00630000,00000000,0064b3f8) ret=6678ea06 0027:Ret ntdll.RtlFreeHeap() retval=00000001 ret=6678ea06 0027:Call KERNEL32.WaitForDebugEvent(0062e3dc,ffffffff) ret=667ad5b4 002d:trace:seh:call_stack_handlers calling handler at 0x7bc91b99 code=406d1388 flags=0 002d:Call KERNEL32.UnhandledExceptionFilter(00f2e2b4) ret=7bc91bd3 002d:Ret KERNEL32.UnhandledExceptionFilter() retval=00000000 ret=7bc91bd3 002d:trace:seh:call_stack_handlers handler at 0x7bc91b99 returned 1 0027:Ret KERNEL32.WaitForDebugEvent() retval=00000001 ret=667ad5b4 ... 0027:Call KERNEL32.WaitForDebugEvent(0062e3dc,ffffffff) ret=667ad5b4 002d:err:seh:raise_exception Unhandled exception code 406d1388 flags 0 addr 0x7b839357 0027:Ret KERNEL32.WaitForDebugEvent() retval=00000001 ret=667ad5b4 --- snip ---
The SafeDisc debugger doesn't expect this legacy exception and can't handle it -> processes get terminated.
For testing I modified the code (ntdll) to swallow this exception and it helps: the game launcher runs further and shows html-based GUI.
One approach could be to modify Wine-Gecko to not issue this exception either by disabling this feature in Wine-Gecko builds or providing config option to turn it off. Actually I don't see much benefit in having some named threads when debugging applications that load Gecko engine.
$ wine --version wine-1.5.2-191-gd080774
Regards
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #22 from Anastasius Focht focht@gmx.net 2012-04-21 07:52:23 CDT --- Hello,
this is the problematic part, causing SafeDisc protected apps that load Gecko engine through mshtml to fail:
Wine-gecko source: http://wine.git.sourceforge.net/git/gitweb.cgi?p=wine/wine-gecko;a=blob;f=ip...
--- snip --- 48 void PlatformThread::SetName(const char* name) { 49 // The debugger needs to be around to catch the name in the exception. If 50 // there isn't a debugger, we are just needlessly throwing an exception. 51 if (!::IsDebuggerPresent()) 52 return; 53 54 THREADNAME_INFO info; 55 info.dwType = 0x1000; 56 info.szName = name; 57 info.dwThreadID = CurrentId(); 58 info.dwFlags = 0; 59 60 MOZ_SEH_TRY { 61 RaiseException(kVCThreadNameException, 0, sizeof(info)/sizeof(DWORD), 62 reinterpret_cast<DWORD_PTR*>(&info)); 63 } MOZ_SEH_EXCEPT(EXCEPTION_CONTINUE_EXECUTION) { 64 } 65 } --- snip ---
Regards
http://bugs.winehq.org/show_bug.cgi?id=25243
Jacek Caban jacek@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jacek@codeweavers.com
--- Comment #23 from Jacek Caban jacek@codeweavers.com 2012-04-21 12:23:50 CDT --- Thanks a lot for finding it. I will disable this code in our wine-gecko builds.
http://bugs.winehq.org/show_bug.cgi?id=25243
Jacek Caban jacek@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|-unknown |mshtml
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #24 from Jacek Caban jacek@codeweavers.com 2012-04-24 04:53:42 CDT --- The fix is in Wine Gecko git:
http://wine.git.sourceforge.net/git/gitweb.cgi?p=wine/wine-gecko;a=commitdif...
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #25 from Anastasius Focht focht@gmx.net 2012-04-24 14:01:13 CDT --- Hello Jacek,
thanks for the fix.
I'm not sure about resolution ...
If this bug gets resolution 'fixed' Alexandre might close it as part of next Wine 1.5.3 release. Actually this needs to be deferred until your next official Wine-Gecko release which is due at some point in future.
So keep it open? 'upstream'? (no really because Wine-Gecko is part of Wine)
Regards
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #26 from Austin English austinenglish@gmail.com 2012-04-24 14:03:40 CDT --- (In reply to comment #25)
Hello Jacek,
thanks for the fix.
I'm not sure about resolution ...
If this bug gets resolution 'fixed' Alexandre might close it as part of next Wine 1.5.3 release. Actually this needs to be deferred until your next official Wine-Gecko release which is due at some point in future.
So keep it open? 'upstream'? (no really because Wine-Gecko is part of Wine)
Regards
I'd argue for upstream, then close it as fixed once a new wine-gecko is released.
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #27 from Jacek Caban jacek@codeweavers.com 2012-04-24 14:35:58 CDT --- As far as Wine is concerned, it's not fixed, so let's leave it open. That's what we did in similar situations in the past.
IMO upstream is not the right resolution here. It's not something Mozilla may be interested in, so it's Wine Gecko-specific. Wine Gecko is not a separated project nor has its own bug tracker, it's more a separate repository meant for Wine. If we wanted to be more correct about this bug resolution, we'd probably need new product in Wine Bugzilla, but that's probably not worth the trouble for its low activity. Perhaps separated component would be more appropriate.
http://bugs.winehq.org/show_bug.cgi?id=25243
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|mshtml |wine-gecko-unknown Version|1.3.7 |unspecified AssignedTo|wine-bugs@winehq.org |jacek@codeweavers.com Product|Wine |Wine-gecko
--- Comment #28 from Austin English austinenglish@gmail.com 2012-04-24 21:01:11 CDT --- (In reply to comment #27)
As far as Wine is concerned, it's not fixed, so let's leave it open. That's what we did in similar situations in the past.
IMO upstream is not the right resolution here. It's not something Mozilla may be interested in, so it's Wine Gecko-specific. Wine Gecko is not a separated project nor has its own bug tracker, it's more a separate repository meant for Wine. If we wanted to be more correct about this bug resolution, we'd probably need new product in Wine Bugzilla, but that's probably not worth the trouble for its low activity. Perhaps separated component would be more appropriate.
Actually, I think that's most appropriate. This way it's still marked fixed, but won't be automatically closed at the next wine release.
Cheers :)
http://bugs.winehq.org/show_bug.cgi?id=25243
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #29 from Austin English austinenglish@gmail.com 2012-04-24 21:01:24 CDT --- Annnnd, fixed.
http://bugs.winehq.org/show_bug.cgi?id=25243
Jerome Leclanche adys.wh@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |adys.wh@gmail.com
--- Comment #30 from Jerome Leclanche adys.wh@gmail.com 2012-04-24 21:29:39 CDT --- (In reply to comment #29) jacek, how come the wine-gecko repository is not part of http://source.winehq.org/git/ ? Seems like a more logical place for people to find it.
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #31 from Alexandre Julliard julliard@winehq.org 2012-04-25 04:22:45 CDT --- (In reply to comment #28)
Actually, I think that's most appropriate. This way it's still marked fixed, but won't be automatically closed at the next wine release.
It also means it won't show up as a fixed bug when Wine gets the new Gecko. I think leaving it open as a Wine bug would be better, just like we leave bugs open even when they have a fix, until the fix lands in the main Wine git.
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #32 from Jacek Caban jacek@codeweavers.com 2012-05-04 13:16:24 CDT --- I've cherry-picked the fix to wine-gecko-1.6 branch:
http://wine.git.sourceforge.net/git/gitweb.cgi?p=wine/wine-gecko;a=commit;h=...
and it's in beta build:
http://www.winehq.org/pipermail/wine-devel/2012-May/095424.html
Please confirm that it's fixed in beta.
Austin, Alexandre, product is already added and, while I don't have strong preferences about handling wine-gecko bugs, we need any decision about it. The idea that seems to satisfy all needs is to keep the bug resolved in wine-gecko product and move it to Wine product instead of closing after new Gecko lands in Wine.
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #33 from Austin English austinenglish@gmail.com 2012-05-04 13:19:30 CDT --- (In reply to comment #32)
Austin, Alexandre, product is already added and, while I don't have strong preferences about handling wine-gecko bugs, we need any decision about it. The idea that seems to satisfy all needs is to keep the bug resolved in wine-gecko product and move it to Wine product instead of closing after new Gecko lands in Wine.
I like this plan.
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #34 from Alexandre Julliard julliard@winehq.org 2012-05-04 15:12:21 CDT --- I don't think it should be a separate product, Gecko is a part of Wine, only with a different build process. Nobody is using Gecko as a product, they are using Wine, and seeing bugs with Wine. The fact that there is some Gecko code in there is an implementation detail.
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #35 from Jerome Leclanche adys.wh@gmail.com 2012-05-04 15:30:46 CDT --- (In reply to comment #34) I think it's a little silly to have it as a product too, a component seems like a better solution. Can't the wine-gecko component be excluded from AJ's "closing bugs ..." script? It's also not exactly the end of the world if the bugs don't appear in the appropriate release.
http://bugs.winehq.org/show_bug.cgi?id=25243
--- Comment #36 from Austin English austinenglish@gmail.com 2012-05-07 20:06:33 CDT --- (In reply to comment #34)
I don't think it should be a separate product, Gecko is a part of Wine, only with a different build process. Nobody is using Gecko as a product, they are using Wine, and seeing bugs with Wine. The fact that there is some Gecko code in there is an implementation detail.
Could your script exclude wine-gecko components, perhaps?
http://bugs.winehq.org/show_bug.cgi?id=25243
Jacek Caban jacek@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |9fa443dcd9d16265a2d2b41441c | |ea17c3c07e782 Component|wine-gecko-unknown |mshtml AssignedTo|jacek@codeweavers.com |wine-bugs@winehq.org Product|Wine-gecko |Wine
--- Comment #37 from Jacek Caban jacek@codeweavers.com 2012-06-13 13:18:56 CDT --- New Gecko is in Wine.
http://bugs.winehq.org/show_bug.cgi?id=25243
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #38 from Alexandre Julliard julliard@winehq.org 2012-06-22 13:31:39 CDT --- Closing bugs fixed in 1.5.7.
http://bugs.winehq.org/show_bug.cgi?id=25243
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Version|unspecified |1.3.7