[Bug 28413] Sound play in games and programs causes brief "pauses"

wine-bugs at winehq.org wine-bugs at winehq.org
Fri Oct 28 10:42:05 CDT 2011


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

--- Comment #13 from Andrew Eikum <aeikum at codeweavers.com> 2011-10-28 10:42:05 CDT ---
(In reply to comment #12)
> >so any WinMM calls within the callbacks would fail
> It's not external calls that fail, it's winmm internally which got corrupt, as
> one call had already progressed past the "fetch object if handle ok" check in
> winmm then got preempted, then another thread closed the device.
> => crash when the first thread resumes.
> 
> I'll have to carefully review the current winmm code, but I can't remember
> seeing protections like InterlockedIncrement around winmm calls which I see as
> a means to verify that no other thread is currently using a given handle, so I
> have some doubts it's safe now.  Is there any other means?

Well, every time a device object is accessed, the thread doing the accessing
holds the device's mutex. And every time a mutex is obtained, the device's
validity is checked, usually by ValidateAndLock(), but also sometimes by things
like "device->device," which will be non-NULL iff the device is open. I guess
these checks could be made consistent (always check device->open, or eliminate
device->open and check something else like device->device).

I would welcome your own analysis, though.

> >clicked like crazy
> You want to configure windows/win.ini, see bug #21277 comment #3 to use
> PlaySound via my MCI shell:
> sound default
> sound systemasterisk notify
> sound systemexclamation notify
> [copy&paste a dozen of these lines from an editor to a wine console]

Did this test a few dozen times with the patch applied and saw no failures.

-- 
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