Hi guys, I've been playing System Shock 2 in wine for the past couple of weeks, ever since Lionel Ulmer's surface locking patch that got it working - the other day I installed a second cpu in this box, and wine is freezing up playing ss2, if I disable SMP in the kernel, all is fine - it's not a hard lockup, I can simply killall wine.bin and wine exits with a successful status. I've noticed now that playing with SMP disabled, there are small pauses every so often, which seem to be the wine freezes instead of just pauses when SMP is enabled. The console output looks like this:
err:dsound:DSOUND_MixOne underrun on sound buffer 0x40437f48 err:ntdll:RtlpWaitForCriticalSection section 0x77e340 "?" wait timed out, retrying (60 sec) tid=0009 err:ntdll:RtlpWaitForCriticalSection section 0x77e340 "?" wait timed out, retrying (60 sec) tid=000c Wine exited with a successful status
I'm pretty sure it only happens at the same time a sound's about to play, but I can't be sure. Any suggestions would be appreciated - if anyone wants anymore info please let me know and I'll be happy to provide it, cc me any replies if you can -Dan
-- OverrideX overridex@punkass.com GPG Key Fingerprint = 4AD5 CE9C D7C8 0069 BDD3 7F72 3AB2 642A 5A5D EB89
In spite of everything, I still believe that people are good at heart. -- Ann Frank
err:dsound:DSOUND_MixOne underrun on sound buffer 0x40437f48 err:ntdll:RtlpWaitForCriticalSection section 0x77e340 "?" wait timed out, retrying (60 sec) tid=0009 err:ntdll:RtlpWaitForCriticalSection section 0x77e340 "?" wait timed out, retrying (60 sec) tid=000c Wine exited with a successful status
Well, if you do not fear huge traces and if the problem occurs too with +relay, do a +relay trace and see who created this '0x77e340' critical section.
Is it a Wine-internal critical section or one from the game ?
Lionel
On Sun, 2003-06-08 at 11:58, Lionel Ulmer wrote:
err:dsound:DSOUND_MixOne underrun on sound buffer 0x40437f48 err:ntdll:RtlpWaitForCriticalSection section 0x77e340 "?" wait timed out, retrying (60 sec) tid=0009 err:ntdll:RtlpWaitForCriticalSection section 0x77e340 "?" wait timed out, retrying (60 sec) tid=000c Wine exited with a successful status
Well, if you do not fear huge traces and if the problem occurs too with +relay, do a +relay trace and see who created this '0x77e340' critical section.
Is it a Wine-internal critical section or one from the game ?
Lionel
Well, I don't know if this is what you're looking for, but:
0009:Call kernel32.InitializeCriticalSection(0077e340) ret=005bd0fb 0009:Ret kernel32.InitializeCriticalSection() retval=00000000 ret=005bd0fb
It's probably worth noting that the critical section address is always the same for these freezes, and that it's always preceeded by a DSOUND_MixOne underrun.
I tried playing with the +relay, but I only get about 2fps playing the game so it's pretty hard to play enough for it to freeze (sometimes it's only a minute or so in, sometimes an hour or more) I played for 15-20 minutes and am feeling pretty nauseas :) the trace file's around 7.2G, I'll try again a few more times to see if I can get it to freeze, if there's anything else you want me to show from the trace file or anything else you'd like me to try please ask away... I find it pretty strange that this only freezes when in smp mode, I'm planning to try a 2.5.70 kernel soon and see if that causes the same behavior. (currently on 2.4.20)
By the way, sorry if this list recieved a duplicate of my start to this thread, I wasn't subscribed when I sent the first one and it didn't show up in the archive after a few days so I subscribed and resent it, cheers -Dan
-- OverrideX overridex@punkass.com GPG Key Fingerprint = 4AD5 CE9C D7C8 0069 BDD3 7F72 3AB2 642A 5A5D EB89
Gil-galad was an Elven-king. Of him the harpers sadly sing: the last whose realm was fair and free between the Mountains and the Sea. His sword was long, his lance was keen, his shining helm afar was seen; the countless stars of heaven's field were mirrored in his silver shield. But long ago he rode away, and where he dwelleth none can say; for into darkness fell his star in Mordor where the shadows are. -- J. R. R. Tolkien
Hello,
I tried playing with the +relay, but I only get about 2fps playing the game so it's pretty hard to play enough for it to freeze (sometimes it's only a minute or so in, sometimes an hour or more) I played for 15-20 minutes and am feeling pretty nauseas :) the trace file's around 7.2G,
I have written a little perl script, what helped me to do small traces from some programs, when you need dump trace info from a advanced point of a program.
It is very simple of use. Run wine with for example:
wine --debugmsg trace+all winmx331.exe 2>&1 | wineparse.pl
Wineparse goes reading the log lines, and buffering the last "n", by default 500, but you can modify it. When it finds the line what you were searching (in my case: wine: Unhandled exception, starting debugger), it dumps to the file "/tmp/winparse.log" the last "n" buffered lines.
Probably it is possible to do the same using a combo of sh command lines, but i didn't want to think too about it hehe :)
It should give you some more fps, than dumping the complete log to disk. I wait that it can help you.
Good luck, Regards, Carlos.
On Tue, 2003-06-10 at 04:21, Carlos Lozano wrote:
Hello,
I tried playing with the +relay, but I only get about 2fps playing
the
game so it's pretty hard to play enough for it to freeze (sometimes
it's
only a minute or so in, sometimes an hour or more) I played for
15-20
minutes and am feeling pretty nauseas :) the trace file's around
7.2G,
I have written a little perl script, what helped me to do small traces from some programs, when you need dump trace info from a advanced
point
of a program.
It is very simple of use. Run wine with for example:
wine --debugmsg trace+all winmx331.exe 2>&1 | wineparse.pl
Wineparse goes reading the log lines, and buffering the last "n", by default 500, but you can modify it. When it finds the line what you were searching (in my case: wine: Unhandled exception, starting debugger), it dumps to the file "/tmp/winparse.log" the last "n" buffered lines.
Probably it is possible to do the same using a combo of sh command
lines,
but i didn't want to think too about it hehe :)
It should give you some more fps, than dumping the complete log to
disk.
I wait that it can help you.
Good luck, Regards, Carlos.
Thanks for the script Carlos!, unfortunately it's still too slow to play it long enough to get it to freeze -Dan
-- OverrideX overridex@punkass.com GPG Key Fingerprint = 4AD5 CE9C D7C8 0069 BDD3 7F72 3AB2 642A 5A5D EB89
The trouble with computers is that they do what you tell them, not what you want. -- D. Cohen
an excerpt from dlls/dsound/dsound_main.c:
* Most thread locking is complete. There may be a few race * conditions still lurking.
* TODO: * Implement SetCooperativeLevel properly (need to address focus issues) * Implement DirectSound3DBuffers (stubs in place) * Use hardware 3D support if available * Add critical section locking inside Release and AddRef methods
Why do I have a feeling this last one is the root of the problem? :) -Dan
-- OverrideX overridex@punkass.com GPG Key Fingerprint = 4AD5 CE9C D7C8 0069 BDD3 7F72 3AB2 642A 5A5D EB89
A boy can learn a lot from a dog: obedience, loyalty, and the importance of turning around three times before lying down. -- Robert Benchley