http://bugs.winehq.org/show_bug.cgi?id=25728
--- Comment #18 from Andrew Eikum aeikum@codeweavers.com 2012-04-17 14:33:32 CDT --- (In reply to comment #17)
(In reply to comment #16)
Unfortunately that log doesn't show the crash. How about another log with the same channels and also +seh,+msgbox,+dialog. Just get to the crash as quickly as possible and post the log.
The CTD that happen is not a hard crash like unhandled seh or some fatal condition (SIGSEGV, e.t.c.), it is an graceful application-initialized shutdown due to some internal error checking mechanism reporting that things got wrong. Looks like an app detects some kind of internal error condition, logs some details to a "crash report txt file" I had mentioned earlier and terminates itself showing a messagebox with an error message.
So, to be more clear: the crash this bug was about initially is no more, app execution flow manages to pass by the problematic place and get into app's main menu. There's no sound and music output though, and the game terminates itself with an error message as soon as it finishes loading a savegame which. With Wine 1.3.24 + native DM/DS there are no problem loading this particular save, so chances are pretty high that an app terminates itself due some factor that is a consequence to a non-working sound and music.
It's possible that the application installed an exception handler to handle a segfault and display the dialog box. This won't show up in a log file without +seh. It's also possible that you're correct, I don't know.
The hope was that one of those debug channels would give us an indication of where the problem occurs in the log file. E.g. if it's a standard user32 MessageBoxA() dialog box, then we should see that on the +msgbox channel in the log file.
BTW, is your dmime patch backwards compatible with, say, Wine 1.3.25? It might be worth checking if an app would work with that version + fix and compare run traces with 1.3.24 + native DM/DS.
It should apply, but I don't know if that's useful. Wine's dmusic implementation is basically completely wrong. We just need to find out which wrong bit is responsible for this particular error, and fix it :)