http://bugs.winehq.org/show_bug.cgi?id=26131
Raymond superquad.vortex2@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |superquad.vortex2@gmail.com
--- Comment #1 from Raymond superquad.vortex2@gmail.com 2011-03-28 02:46:51 CDT --- (In reply to comment #0)
Conditional jump or move depends on uninitialised value(s) at snd_pcm_mmap_begin (in /usr/lib/libasound.so.2.0.0) by CreateMMAP (dscapture.c:513) by IDsCaptureDriverBufferImpl_SetFormat (dscapture.c:737) by IDsCaptureDriverImpl_CreateCaptureBuffer (dscapture.c:1039) by IDirectSoundCaptureBufferImpl_Create (capture.c:935) by IDirectSoundCaptureImpl_CreateCaptureBuffer (capture.c:1256) by IDirectSoundFullDuplexImpl_Initialize (duplex.c:592) by DirectSoundFullDuplexCreate (duplex.c:737) by IDirectSoundFullDuplex_tests (duplex.c:184) by func_duplex (duplex.c:239) by run_test (test.h:556) by main (test.h:624) Uninitialised value was created by a stack allocation at CreateMMAP (dscapture.c:460)
though perhaps that's an alsa bug?
Are your sure ?
since pdbi->mmap is already assigned before calling CreateMMAP()
This->mmap = mmap;
snd_pcm_prepare(This->pcm); CreateMMAP(This);
The bug is actually mmap_mode
mmap_mode = snd_pcm_type(pcm);
if (mmap_mode == SND_PCM_TYPE_HW) TRACE("mmap'd buffer is a direct hardware buffer.\n"); else if (mmap_mode == SND_PCM_TYPE_DMIX) TRACE("mmap'd buffer is an ALSA dmix buffer\n"); else TRACE("mmap'd buffer is an ALSA type %d buffer\n", mmap_mode);
since mmap_mode is not related to access_mmap (e.g. pulse does not support mmap but the trace still say
"trace:dsalsa:CreateMMAP mmap'd buffer is an ALSA type 28 buffer"
type 28 is SND_PCM_TYPE_IOPLUG ( it can be jack or pulse plugin )
err = snd_pcm_hw_params_set_access (pcm, hw_params, SND_PCM_ACCESS_MMAP_INTERLEAVED); if (err < 0) { err = snd_pcm_hw_params_set_access (pcm, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED); if (err < 0) { WARN("Could not set access\n"); goto err; } mmap = 0; } else mmap = 1;