I've attacked homeworld for a couple of hours with IDA free and none of the places that set the value of the NULL pointer are remotely close to a waveOutWrite call.
I've run -debugmsg +wave with and without the synchronous wodWrite patch. The results are fairly large so I won't send them unless you feel they're particularly useful. To summarise:
Both have 2 wodOpen calls.
Both produce "Oooch buffer underrun" messages. The synchronous wodWrite version does only one wodWrite and a large number of Oooch messages. The asynchronous one produces one Oooch per wodWrite.
Here's a more detailed description of the fault, followed by a couple of ideas on what's really going wrong: -- DESCRIPTION OF STARTUP -- The game starts with a 2D animated Sierra online logo followed by an animated relic logo and then drops into the game menus which are 2D graphics. mode.
There are 3 distinct behaviours by the game:
1) Immediately prior to playing the Sierra logo, the game produces an exception report complaining of a page fault referencing 0x0000000. The animation starts and plays behind the exception dialog, but there is no sound. If the exception dialog is ignored, it disappears when the game menu is drawn. The menus can be navigated until either the graphics mode is changed or the actual game is started at which time wine hangs. top shows 30% of CPU taken by each of two wine processes and a wineserver. Tracing with remote gdb shows WaitForSingleObject in the stack traces, when they can be seen (Usually by running gdb as root). I usually have trouble getting the correct symbols loaded.
2) As per (1) above, but no exception dialog appears.
3) The game starts and runs with sound. There is no hang.
While writing this, I had an idea. More to follow in a later post :)
__________________________________________________ Do You Yahoo!? Make a great connection at Yahoo! Personals. http://personals.yahoo.com
On Wed, 24 Oct 2001, Simon Britnell wrote:
I've run -debugmsg +wave with and without the synchronous wodWrite patch. The results are fairly large so I won't send them unless you feel they're particularly useful.
Well, since you know that it uses dsound, i.e. not waveout directly, why not add +dsound to the debugmsg command, and look for bugs in Wine's dsound implementation? Also, perhaps check that the bug isn't already fixed in WineX, since there may be bugfixes in WineX not yet submitted to Wine.
--- Ove Kaaven ovehk@ping.uio.no wrote:
Well, since you know that it uses dsound, i.e. not waveout directly, why not add +dsound to the debugmsg command, and look for bugs in Wine's dsound implementation?
Good call, I'll try that tonight. I'm going into hospital for n days tomorrow for surgery ( 1<n<5), so my follow up post will be delayed a little.
Also, perhaps check that the bug isn't already fixed in WineX, since there may be bugfixes in WineX not yet submitted to Wine.
I'm actually running winex from the sourceforge cvs. I've subscribed to transgaming too, although the website doesn't acknowledge my worldpay transaction yet.
I'm currently also examining a ptrace failure which is making it difficult to debug wine and mulling over the nature of the failure in hope of some insight about how it's failing. I think I need to examine the wineserver scheduling more closely as the hang I mentioned is a CPU busy hang involving wineserver and two wine processes.
__________________________________________________ Do You Yahoo!? Make a great connection at Yahoo! Personals. http://personals.yahoo.com