http://bugs.winehq.org/show_bug.cgi?id=20887
Summary: Dragon Age: Origins: Fails to find the DVD Product: Wine Version: 1.1.32 Platform: PC-x86-64 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: martin@seelge.de
Created an attachment (id=25030) --> (http://bugs.winehq.org/attachment.cgi?id=25030) wine daorigins.exe log using warn+all
When launching the DVD version of the application, it displays an error message about not finding the DVD and exits.
As far as I could find out the application uses a "simple" DVD check but I could not get a specific copy protection name.
http://bugs.winehq.org/show_bug.cgi?id=20887
--- Comment #1 from M. martin@seelge.de 2009-12-01 05:56:16 --- (From update of attachment 25030) The last 10 lines, (beginning with a missing mscoree.dll) appear after the error message has been displayed and clicked.
http://bugs.winehq.org/show_bug.cgi?id=20887
M. martin@seelge.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #25030|0 |1 is obsolete| |
--- Comment #2 from M. martin@seelge.de 2009-12-01 06:18:55 --- Created an attachment (id=25031) --> (http://bugs.winehq.org/attachment.cgi?id=25031) wine daorigins.exe log using warn+all
New log, forgot to mount the dvd on the first one.
http://bugs.winehq.org/show_bug.cgi?id=20887
--- Comment #3 from Vitaliy Margolen vitaliy@kievinfo.com 2009-12-01 09:21:00 --- Is your dvd mapped in winecfg to a particular drive?
http://bugs.winehq.org/show_bug.cgi?id=20887
--- Comment #4 from M. martin@seelge.de 2009-12-01 10:18:12 --- Yes, it is mapped to D:
http://bugs.winehq.org/show_bug.cgi?id=20887
--- Comment #5 from Vitaliy Margolen vitaliy@kievinfo.com 2009-12-01 19:23:39 --- How did you installed your program? Exact steps & commands please.
http://bugs.winehq.org/show_bug.cgi?id=20887
--- Comment #6 from M. martin@seelge.de 2009-12-02 15:38:23 --- Thanks for your reply, I tried three methods, here are the exact steps:
Method 1: "rm -rf ~/bin/wine" "export WINEPREFIX=~/bin/wine" "winecfg" - just checking that the DVD is mapped correctly "wine /media/DragonAge/setup.exe" - Installer Language: [Ok] (preselected: "English") - Welcome Message: [Next] - EULA: marked "I accept...", then [I agree] - Serial code: entered, then [Next] - Install Type: marked "Custom Install", then [Next] (required in order to skip directX) - Install Location: [Next] (preselected: "C:\Program Files\Dragon Age") - Start Menu Folder: marked "Do not create a Start Menu folder", then [Next] - Shortcuts: [Install] (preselected: nothing) - Automated installation starts - running NetFx20SP2_x86 fails (lots of "rollbacks not supported" messages), does not interrupt installation - extracting application resources works - "could not load: C:\windows\temp\nsm111c.tmp\nsisService.dll" appears in the list of actions - Install DirectX: [No] - running PhysX_9.09.0408_SystemSoftware.exe fails with a thread deadlock err:ntdll:RtlpWaitForCriticalSection section 0x7bcaa764 "loader.c: loader_section" wait timed out in thread 001c, blocked by 001f, retrying (60 sec) wine: Critical section 7bcaa764 wait failed at address 0x7bc34c7d (thread 001c), starting debugger...) - Program Error: [Close] (Wine error message, this closes the installation) Note that the installation is otherwise complete (with the exception of additional languages from the second DVD). The installation of this PhysX version fails also on the already playable non-DVD versions. "cd ~/bin/wine/drive_c/Program\ Files/Dragon\ Age/bin_ship/" "wine DAOriginsConfig.exe" - This creates (partially empty) configuration data in "~/BioWare/Dragon Age" "wine daorigins.exe" - "Could not find the Dragon Age disk." [OK]
Method 2: Similar to method 1 but additionally calling "winetricks vcrun2005 physx msxml3" prior to starting the installation. Same error message on running "wine daorigins.exe" as before.
Method 3: Similar to method 2 for the registry entries but then copying and overwriting the complete game data ("$WINEPREFIX/drive_c/Program\ Files/Dragon\ Age") and profile data (~/BioWare) from a working windows installation (DVD drive mapping is identical). Same error message on running "wine daorigins.exe" as before.
http://bugs.winehq.org/show_bug.cgi?id=20887
Dave M dave@landlordhat.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1
--- Comment #7 from Dave M dave@landlordhat.com 2009-12-07 16:07:01 --- *** This bug has been confirmed by popular vote. ***
http://bugs.winehq.org/show_bug.cgi?id=20887
Forest g9xhh5p02@sneakemail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |g9xhh5p02@sneakemail.com
http://bugs.winehq.org/show_bug.cgi?id=20887
Caladan a.vankaam@chello.nl changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |a.vankaam@chello.nl
http://bugs.winehq.org/show_bug.cgi?id=20887
Dan Kegel dank@kegel.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |dank@kegel.com
--- Comment #8 from Dan Kegel dank@kegel.com 2010-03-28 15:48:45 --- The game calls Call KERNEL32.GetDriveTypeW(0032e628 L"I:") which succeeds, then calls 0009:Call KERNEL32.GetVolumeInformationW(0032e628 L"I:",0032e50c,0000007f,00000000,00000000,0032e4e0,00000000,00000000) ret=00401c0b which fails because the game forgot a trailing .
We have test cases to make sure that doesn't work, so I wonder what happens on Windows. Hacking wine to succeed in this case seems to let the game go further; for me, it then gets stuck later doing
001a:Call user32.PeekMessageW(0535ea00,00010054,00000000,00000000,00000001) ret=0041449d 001a:Ret user32.PeekMessageW() retval=00000000 ret=0041449d 001a:Call KERNEL32.WaitForSingleObject(000000a4,00000000) ret=0083517e 001a:Ret KERNEL32.WaitForSingleObject() retval=00000102 ret=0083517e
over and over again. (This is on an i7.)
http://bugs.winehq.org/show_bug.cgi?id=20887
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |austinenglish@gmail.com
http://bugs.winehq.org/show_bug.cgi?id=20887
Stephen Smith stephenmsmith@blueyonder.co.uk changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |stephenmsmith@blueyonder.co | |.uk
--- Comment #9 from Stephen Smith stephenmsmith@blueyonder.co.uk 2010-07-11 19:11:15 --- (In reply to comment #8)
The game calls Call KERNEL32.GetDriveTypeW(0032e628 L"I:") which succeeds, then calls 0009:Call KERNEL32.GetVolumeInformationW(0032e628 L"I:",0032e50c,0000007f,00000000,00000000,0032e4e0,00000000,00000000) ret=00401c0b which fails because the game forgot a trailing .
We have test cases to make sure that doesn't work, so I wonder what happens on Windows. Hacking wine to succeed in this case seems to let the game go further; for me, it then gets stuck later doing
001a:Call user32.PeekMessageW(0535ea00,00010054,00000000,00000000,00000001) ret=0041449d 001a:Ret user32.PeekMessageW() retval=00000000 ret=0041449d 001a:Call KERNEL32.WaitForSingleObject(000000a4,00000000) ret=0083517e 001a:Ret KERNEL32.WaitForSingleObject() retval=00000102 ret=0083517e
over and over again. (This is on an i7.)
GetDriveTypeW should also fail as it requires a trailing \ as well
http://bugs.winehq.org/show_bug.cgi?id=20887
--- Comment #10 from Stephen Smith stephenmsmith@blueyonder.co.uk 2010-07-14 09:34:54 --- From: GetVolumeInformationW (KERNEL32.@) removing the trailing backslash check but leaving device[4] = root[0]; // else // { // if (!root[0] || root[1] != ':' || root[lstrlenW(root)-1] != '\' ) // { // SetLastError( ERROR_INVALID_NAME ); // return FALSE; // } device[4] = root[0]; // } changes the message from unable to find disk to unable to validate disk
http://bugs.winehq.org/show_bug.cgi?id=20887
--- Comment #11 from Stephen Smith stephenmsmith@blueyonder.co.uk 2010-07-19 12:36:12 --- Created an attachment (id=29710) --> (http://bugs.winehq.org/attachment.cgi?id=29710) GetVolumeNameForVolumeMountPoint input validation improvement
This makes the checks on absent trailing \ in GetVolumeNameForVolumeMountPoint more specific and match windows behaviour also fixes 3 wine test cases. This will not fix the bug itself now passes onto another bank of checks. First use of git and patch submission apologies if it does not work.
Stephen
http://bugs.winehq.org/show_bug.cgi?id=20887
--- Comment #12 from Dan Kegel dank@kegel.com 2010-07-19 12:53:59 --- I haven't reviewed your patch, but: if you think it's ready for prime time, you need to send it to the wine-patches mailing list. Try it on winetestbot first, see http://wiki.winehq.org/WineTestBot
http://bugs.winehq.org/show_bug.cgi?id=20887
Stephen Smith stephenmsmith@blueyonder.co.uk changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #29710|0 |1 is obsolete| |
--- Comment #13 from Stephen Smith stephenmsmith@blueyonder.co.uk 2010-07-21 07:03:01 --- (From update of attachment 29710) Assumed incorrectly connection between windir and GetVolumeInformation ignoring missing trailing\
http://bugs.winehq.org/show_bug.cgi?id=20887
--- Comment #14 from Stephen Smith stephenmsmith@blueyonder.co.uk 2010-07-21 07:09:07 ---
From more testing GetVolumeInformation will allow D: etc with no trailing \ if
GetDriveType is DRIVE_CDROM or DRIVE_REMOVABLE (current working directory can be anything). For DRIVE_FIXED current working directory must be root of that drive to ignore the trailing . DRIVE_REMOTE and DRIVE_RAMDISK untested.
http://bugs.winehq.org/show_bug.cgi?id=20887
Jörg Höhle hoehle@users.sourceforge.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |hoehle@users.sourceforge.ne | |t
--- Comment #15 from Jörg Höhle hoehle@users.sourceforge.net 2010-07-26 11:41:13 --- Stephen's patch is incorrect.
I've written additional tests that I'll submit soon, using the =X: environment variable as suggested by AJ in http://www.winehq.org/pipermail/wine-devel/2010-July/084973.html The tests suggest the following behaviour for GetVolumeName, cf. http://www.winehq.org/pipermail/wine-devel/2010-July/084970.html 1. If path is not absolute (sadly, various definitions exist) path = merge_pathnames(path) # merge current directory of referenced drive E.g. "A:" is not absolute and merged with the per drive directory for A: (NOT to be confused with the app's unique Get/SetCurrentDirectory). 2. If path now is like A:\ then continue, otherwise return error. todo handle \?\ etc. syntax That still ignores the ERROR_DIR_NOT_ROOT case for >= w2k => more tests please (using c:\windows\ => DID_NOT_ROOT; c:\windows => INVALID_NAME)
It seems that my bug #23355 is a duplicate of this one, however comment #10 implies there's more than one issue with DA:O. My bug is about GetVolumeInformation only.
The key point is that GetVolumeInformation("A:") does not mysteriously fail. A: is merged with A:'s (per app and) per drive current directory, resulting in either a) A:\ (current directory on A is root) - ok, proceed b) A:\foo\bar\ - ERROR_INVALID_NAME || broken(ERROR_BAD_PATHNAME/*Win9x*/) The results do not seem to depend on GetDriveType (CD-ROM or HD).
I've not tested what happens on NTFS with so-called symbolic links and referencing that. I remember creating a link to the CD-ROM drive deep inside a normal directory hierarchy many years ago, and the icon of the CD appeared in the explorer...
http://bugs.winehq.org/show_bug.cgi?id=20887
Chris Parker cparke@parkerfamily.name changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |cparke@parkerfamily.name
http://bugs.winehq.org/show_bug.cgi?id=20887
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #16 from Alexandre Julliard julliard@winehq.org 2010-10-20 13:56:04 CDT --- Should be fixed by ee0f0da69b3a99ce6b682b38fc6910a253ca23f8.
http://bugs.winehq.org/show_bug.cgi?id=20887
--- Comment #17 from Stephen Smith stephenmsmith@blueyonder.co.uk 2010-10-22 08:21:28 CDT --- Created an attachment (id=31443) --> (http://bugs.winehq.org/attachment.cgi?id=31443) log with no WINEDEBUG set
wine-1.3.5-168-gd4e8f30 Failed to authenticate disk. Please insert correct disk and try again. Disk is mounted to /media/DragonAge mapped as D: without disk present or mounted prompts to insert disk rather than authentication error.
http://bugs.winehq.org/show_bug.cgi?id=20887
--- Comment #18 from Juan Lang juan_lang@yahoo.com 2010-10-22 12:09:33 CDT --- (In reply to comment #17)
Failed to authenticate disk. Please insert correct disk and try again. Disk is mounted to /media/DragonAge mapped as D: without disk present or mounted prompts to insert disk rather than authentication error.
This is a different error message than described in comment 6, please open a separate bug for it.
http://bugs.winehq.org/show_bug.cgi?id=20887
Jörg Höhle hoehle@users.sourceforge.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC|hoehle@users.sourceforge.ne | |t |
http://bugs.winehq.org/show_bug.cgi?id=20887
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #19 from Alexandre Julliard julliard@winehq.org 2010-10-29 12:55:46 CDT --- Closing bugs fixed in 1.3.6.
http://bugs.winehq.org/show_bug.cgi?id=20887
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |ee0f0da69b3a99ce6b682b38fc6 | |910a253ca23f8 CC| |focht@gmx.net Component|-unknown |kernel32
--- Comment #20 from Anastasius Focht focht@gmx.net 2012-01-19 14:16:36 CST --- Hello,
filling fields ...
Regards