[Bug 22978] New: SimCity2000: race condition causes crash in MCI during startup

wine-bugs at winehq.org wine-bugs at winehq.org
Mon May 31 12:33:15 CDT 2010


http://bugs.winehq.org/show_bug.cgi?id=22978

           Summary: SimCity2000: race condition causes crash in MCI during
                    startup
           Product: Wine
           Version: unspecified
          Platform: x86
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: winmm&mci
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: hoehle at users.sourceforge.net


Created an attachment (id=28457)
 --> (http://bugs.winehq.org/attachment.cgi?id=28457)
mci+winmm trace & crash backtrace

The attached log shows a crash that is triggered because the asynchronous
mciseq/mcimidi player is still attempting to open the device while the main
thread already successfully called MCI_CLOSE.
The mcimidi player does not implement proper locking. Unlike mciwave, its state
variable is not yet set to MCI_MODE_PLAY when opening the MIDI device, which
lets MCI_CLOSE not see something is busy playing.
Actually, even looking at mciwave, one can construct unfortunate sequences of
scheduling that would cause mciwave to hang in such a situation. So there's no
trivial patch simply moving 
    wmm->dwStatus = MCI_MODE_PLAY;
a couple of lines up.

The crash generally occurs when starting SimCity 2000 using
"wine 'C:\Program...\Game\simcity.exe'"
Curiously, "wine start simcity.exe" always works. As I said, it's a race
condition.
It seems like sometimes, the initialisation of WINMM and MIDI takes a long
time.
The bug is then triggered when MCI_CLOSE is called by the application.

MCI_CLOSE is called, among others, when clicking "exit" in the initial menu.
Often enough, the app crashes before showing this menu. IMHO, the fact that the
app calls MCI_CLOSE that early is triggered by another bug in Wine that AppDB
testers have mentioned every now and often, but never put to Bugzilla: SimCity
2000 starts fine (showing its logo) when using full screen mode, but needs a
resize or uniconify when using a virtual desktop: then presumably, the app
sends MCI_CLOSE to stop the music, causing or not a crash via the present race
condition.
BTW, since the crash occurs in the asynchronous MCI MIDI player, the app
nevertheless works...

This issue has nothing to do with the bug, presumably in the app, that "wine
simcity.exe" crashes whereas "wine 'c:\full\path\simcity.exe'" (should) work.

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list