Opened 18 years ago

Closed 18 years ago

Last modified 14 years ago

#125 closed task (fixed)

Error on Win64 while getting sound driver version

Reported by: Jan Wassenberg Owned by: Jan Wassenberg
Priority: Should Have Milestone:
Component: Core engine Keywords:
Cc: Desmond Talkington Patch:

Description

Desmond reports:

I have a similar problem too. Ever since I updated the cache from a few months ago it does that for me.

Function call failed at dll_ver.cpp:45 (get_ver): return value was -1 (Unknown error (-1, 0xFFFFFFFF))

Call stack:

RtlFreeUnicodeString (:0)

win_get_snd_info (wsnd.cpp:178)
    dlls = (uninitialized/invalid set<string > >)
    suppress__ = 0x55 ('U')

WriteSystemInfo (util.cpp:48)
    LINE_44 = 
        t0 = 2.82072e-317
        description = 0x00000000

    N_path = "PCI\VEN_1002&DEV_4A49&SUBSYS_0D42174B&REV_00"
    hostname = "dvag"
    un = 
        sysname = [9] { 244, 218, 246, 119 ('w'), 212, 246, 45 ('-'), 0, 0 }
        nodename = [16] { 1, 0, 0, 254, 58 (':'), 83 ('S'), 0, 0, 0, 0, 0, 0, 5, 0, 0, 0 }
        release = [9] { 0, 0, 0, 0, 240, 253, 126 ('~'), 18, 59 (';') }
        version = "S"
        machine = [9] { 0, 0, 0, 0, 0, 0, 97 ('a'), 116 ('t'), 105 ('i') }

    ips = 0x40297020 -> (unavailable - internal error)

Then with a supress the game stays minimized, and the first time it does a 'rebuilding archive' then then goes to menu. A few builds ago it would show two error messages, but it dosen't do that anymore.

My sound card is a Creative Soundblaster Audigy 2 ZS. I'm running Windows XP Professional x64 in English. This 64bitness requires 64bit drivers to work, so the sound driver I'm using is a 64bit one. I'll check to see if there are any sounddriver updates after this. I haven't moved anything around. My 0ad directory is located here D:\Documents and Settings\Administrator\My Documents\0 AD. I have a C drive, but it is used for Win xp home boot and storing files.

Change History (12)

comment:1 by Jan Wassenberg, 18 years ago

Status: newassigned

Thanks kindly for all the detailed information! That's quite a few DLLs. Unfortunately I don't see anything wrong; all DLLs have version info embedded, and the approach we use should work on 64-bit Windows as well.

More information is needed. What I've done is compiled a test executable that shows the DLL path that failed, as well as the GetLastError value. Please run that, and once the "path=bla, GLE=xxx" message comes, feel free to exit after pasting the error message contents here.

Grab it at http://www.stud.uni-karlsruhe.de/~urkt/tmp/ps_test_snddetect.zip

comment:2 by Jan Wassenberg, 18 years ago

Desmond reports:

I put that new pyrogensis.exe file in the directory. When I run it, the large error box with the supress, continue, ignore options isn't there and it goes stright to the 'encounterd and error' screen. (http://img459.imageshack.us/img459/9282/snag00160eb.jpg)

comment:3 by Jan Wassenberg, 18 years ago

Cc: Desmond Talkington added

Ah, that would be a stupid bug that I've just fixed. Grab new version at http://www.stud.uni-karlsruhe.de/~urkt/tmp/ps_test_snddetect2.zip .

If that fails in a similar fashion (would be quite surprising, I'm quite sure of the failure cause), then please tell me the value of register EAX in the original EXE's crash log (scroll down a bit from the text that's visible in your screenshot).

comment:4 by Desmond Talkington, 18 years ago

This exe works just fine. All right, here are the messages it gives:

path: D:\WINDOWS\system32\drivers\ctaud2k.sys; GLE: 00000002
Location: dll_ver.cpp:48 (get_ver)

Call stack:

(error while building stack trace: -100800)

With a continue it leads to:

Function call failed: return value was -100310 (File/directory not found)
Location: vfs_tree.cpp:592 (tree_lookup_dir)

Call stack:

(error while building stack trace: -100800)

And another continue:

Function call failed: return value was -100310 (File/directory not found)
Location: vfs_tree.cpp:680 (tree_dir_open)

Call stack:

(error while building stack trace: -100800)

Continue:

Assertion failed: "("vfs_open_dir failed") && 0"
Location: file_util.cpp:209 (vfs_dir_enum)

Call stack:

(error while building stack trace: -100800)

Continue again:

Function call failed: return value was -100310 (File/directory not found)
Location: vfs_tree.cpp:592 (tree_lookup_dir)

Call stack:

(error while building stack trace: -100800)

Continue:

Function call failed: return value was -100310 (File/directory not found)
Location: vfs_tree.cpp:680 (tree_dir_open)

Call stack:

(error while building stack trace: -100800)

Last Continue:

Assertion failed: "("vfs_open_dir failed") && 0"
Location: file_util.cpp:209 (vfs_dir_enum)

Call stack:

(error while building stack trace: -100800)

Then the game runs minimized with menu music playing. Not sure if you need all of those messages, but the more the merrier! :P

comment:5 by Jan Wassenberg, 18 years ago

Aha, looks like the problem is found; thanks for that info. GLE=2 is "file not found", and since the module is ctaud2k.sys, your file is apparently not located inside $WINDIR/system32 as the code currently assumes. Where might it be found?

Aside: it is quite worrying that all the stack traces fail to function on Win64 :S Looking at the stack walk code is on TODO.

comment:6 by Desmond Talkington, 18 years ago

My ctaud2k.sys is in D:\WINDOWS\system32\drivers.

Let me know if you need me to test anything else or need more info. (I also might be able to test it out on Vista x64 Beta 2 in a week or so)

comment:7 by Jan Wassenberg, 18 years ago

My ctaud2k.sys is in D:\WINDOWS\system32\drivers.

Crap, that's exactly where I'm looking for it :( (as evidenced by the error message that was inserted) That puts us back to square 1 - I'm currently at a loss.

Crazy ideas: could Win64 be hiding the driver / only making it available via WoW? Are you sure the driver is 64-bit? Do you know of anyone else on the team that has Win64 and could test?

I also might be able to test it out on Vista x64 Beta 2 in a week or so

ooh. interesting. Will probably not run without Admin access, and might have trouble with OpenGL, but it would be interesting to try.

BTW, about those dir not found messages: I would presume that's due to missing data files, but unfortunately you can't currently update from SVN now :/ Let's check that again when it's back up.

comment:8 by Desmond Talkington, 18 years ago

Yeah, I'm sure it's a 64bit driver (newest one from a few months ago). Don't think anyone else on the team uses 64bit.

Just updated the svn cache with the June 12th version.

Good and bad news: the previous error is gone now. :) but... there is a new message.

Function call failed at dll_ver.cpp:45 (get_ver): return value was -1 (Unknown error (-1, 0xFFFFFFFF))

Call stack:

RtlFreeUnicodeString (:0)

win_get_snd_info (wsnd.cpp:178)
    dlls = (uninitialized/invalid set<string > >)
    suppress__ = 0x55 ('U')

WriteSystemInfo (util.cpp:48)
    LINE_44 = 
        t0 = 2.82072e-317
        description = 0x00000000

    N_path = "PCI\VEN_1002&DEV_4A49&SUBSYS_0D42174B&REV_00"
    hostname = "dvag"
    un = 
        sysname = [9] { 244, 218, 246, 119 ('w'), 212, 246, 45 ('-'), 0, 0 }
        nodename = [16] { 1, 0, 0, 254, 58 (':'), 83 ('S'), 0, 0, 0, 0, 0, 0, 5, 0, 0, 0 }
        release = [9] { 0, 0, 0, 0, 240, 253, 126 ('~'), 18, 59 (';') }
        version = "S"
        machine = [9] { 0, 0, 0, 0, 0, 0, 97 ('a'), 116 ('t'), 105 ('i') }

    ips = 0x3FEF020C -> (unavailable - internal error)


Init (gamesetup.cpp:980)
    argc = 43010208
    argv = 0x00000000
    flags = 0x00000001
    setup_vmode = true 
    setup_gui = true 
    argv0 = 0x00000005
    quality = 0x7EFDF000
    missing = 0x005272E0 -> "V¾tôZ"
    windowed = false

main (main.cpp:370)
    argc = 1
    argv = 0x029048A0 -> 0x029048A8 -> "D:\Documents and Settings\Administrator\My Documents\0 AD\system\pyrogenesis.exe"

mainCRTStartup (crtexe.c:398)
    argret = 3014592
    mainret = 0
    envp = 0x00000000
    managedapp = 3014476
    argv = 0x00000000
    argc = 43010208
    startinfo = { newmode = 43003120 }

SEH_wrapped_entry (win.cpp:336)
    ret = 3014552

BaseProcessInitPostImport (:0)

Continue/supress leads to the game running minimized with sound. Does that error look like it's still a sound driver thing?

comment:9 by Jan Wassenberg, 18 years ago

Yeah, I'm sure it's a 64bit driver .. Don't think anyone else on the team uses 64bit.

OK, thanks. It may be some weird issue with 64-bit drivers; I'm considering posting a test executable on a forum and asking others to test it.

Just updated the svn cache with the June 12th version. Good and bad news: the previous error is gone now. :) but... there is a new message.

hehe. Actually that is the old message that I had temporarily replaced with the more descriptive error that tells us path+GLE. The SVN build did not have that. So it's still the exact same problem, unfortunately.

comment:10 by Jan Wassenberg, 18 years ago

Howdy Desmond! Have you tried 0ad out on Vista yet? (gotten your hands on RC1?) It'd be good to know if there's maybe a better error message that may help find out what's going wrong. Unfortunately I can't get a hold of anyone here with Win64, so no progress here.

comment:11 by Jan Wassenberg, 18 years ago

Resolution: fixed
Status: assignedclosed

(In [4590]) # fix DLL version retrieval on Win64 fixes #125

I now have Win64, so this problem can be reproduced :D

windows is 'helpful' and transparently redirects accesses to $winsysdir/drivers. grr. disable that on win64 to solve this problem. thanks for the report!

comment:12 by (none), 14 years ago

Milestone: ASAP

Milestone ASAP deleted

Note: See TracTickets for help on using tickets.