[Portaudio] Antwort: Re: Exception in pa_win_wmme.c, line 1936 (waveInClose) if running under debugger

axintos.haase at daimler.com axintos.haase at daimler.com
Mon Mar 5 04:26:26 EST 2012


Hi,

> 
> Does this happen with one of the basic tests such as paex_wire?
> 

Do you mean patest_wire.c? If yes, there are no problems during this test, 
only a message (WinMME AbortStream: waiting for background thread.) that I 
haven't seen before.

> Could you please try putting a debugger breakpoint on that line and 
> inspect the values of handlesAndBuffers and waveHandles, and also the 
> value of i. I would like to know which of those is a null pointer.

handlesAndBuffer and waveHandles are both non-null. i is zero. The value 
returned by the debugger when evaluating the whole expression (
(HWAVEIN*)handlesAndBuffers->waveHandles)[i]) is also non-null. 

Just seeing that the stack trace goes a bit deeper, but I can't step into 
waveInClose and follow:

0       RtlGetElementGenericTable       ntdll           0x770af279 
1       CWorker::SubmitAndWait  wdmaud          0x7fefaac2dec 
2       CWxd::Close     wdmaud          0x7fefaabd7af 
3       widMessage      wdmaud          0x7fefaabe03e 
4       waveInClose     WINMM           0x7fefab15377 
5       TerminateWaveHandles    pa_win_wmme.c   1936    0x7fef384774f 
6       CloseStream     pa_win_wmme.c   3201    0x7fef38482f9 
7       Pa_CloseStream  pa_front.c      1352    0x7fef38287e8 
8       portaudio::Stream::close        Stream.cxx      33 0x7feef2b3cd9 
9       portaudio::BlockingStream::~BlockingStream      BlockingStream.cxx 
26      0x7feef2b4870 

> Can you say anything more about how you're opening the stream? (Is it 
> full or half duplex? how many channels etc?)

The stream is half duplex, 2-channel, INT16. It is opened using the 
following lines of code:

portaudio::DirectionSpecificStreamParameters inputParams(sys
.defaultInputDevice(), 2, portaudio::INT16, true, sys
.defaultInputDevice().defaultLowInputLatency(), NULL);
portaudio::StreamParameters streamParams(inputParams, portaudio::
DirectionSpecificStreamParameters::null(), 44100, framesPerBuffer, 
paNoFlag);
 
stream = new portaudio::BlockingStream();
stream->open(streamParams);

framesPerBuffer is the number of frames containing 50 ms of audio data.

Greetings,

Moritz

If you are not the intended addressee, please inform us immediately that you have received this e-mail in error, and delete it. We thank you for your cooperation.  


More information about the Portaudio mailing list