Qt 阻止QAudioOutput(或bug?)的正确方法

Qt 阻止QAudioOutput(或bug?)的正确方法,qt,qt4.8,Qt,Qt4.8,(在Qt 4.8.2 4.8.3、Qt多媒体工具包1.2、Linux下(编辑:Kubuntu 12.10、Qt from packages) 我有一个QAudioOutput,它每20毫秒提供一次数据。 如果我通过::stop()停止它,stateChanged()信号将由它发出,表示它已停止(立即;它的线程与控制线程相同。症状存在,即使它们都在GUI线程中或都在另一个线程中) 然后我将其删除,但每10次尝试中就有一次或两次会因以下回溯而崩溃: #0 0x00007fab18000148 in

(在Qt 4.8.2 4.8.3、Qt多媒体工具包1.2、Linux下(编辑:Kubuntu 12.10、Qt from packages)

我有一个QAudioOutput,它每20毫秒提供一次数据。 如果我通过::stop()停止它,stateChanged()信号将由它发出,表示它已停止(立即;它的线程与控制线程相同。症状存在,即使它们都在GUI线程中或都在另一个线程中)

然后我将其删除,但每10次尝试中就有一次或两次会因以下回溯而崩溃:

#0  0x00007fab18000148 in ?? ()
#1  0x00007fab47b51eef in QMetaObject::activate (sender=0x7fab1800b060, m=<optimized out>, local_signal_index=<optimized out>, argv=0x7fab2b0e8850) at kernel/qobject.cpp:3541
#2  0x00007fab4aa46eae in QAbstractAudioOutput::stateChanged(QAudio::State) () from /usr/lib/x86_64-linux-gnu/libQtMultimediaKit.so.1
#3  0x00007fab2b0f38c8 in ?? () from /usr/lib/x86_64-linux-gnu/qt4/plugins/audio/libqtmedia_pulse.so
#4  0x00007fab2b0f33ad in ?? () from /usr/lib/x86_64-linux-gnu/qt4/plugins/audio/libqtmedia_pulse.so
#5  0x00007fab420a475b in ?? () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
#6  0x00007fab3b1749fd in pa_pdispatch_run () from /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-2.1.so
#7  0x00007fab42086e1d in ?? () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
#8  0x00007fab3b178a2b in ?? () from /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-2.1.so
#9  0x00007fab4209a374 in pa_mainloop_dispatch () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
#10 0x00007fab4209a725 in pa_mainloop_iterate () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
#11 0x00007fab4209a7d0 in pa_mainloop_run () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
#12 0x00007fab420a8b1f in ?? () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
#13 0x00007fab3b186543 in ?? () from /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-2.1.so
#14 0x00007fab477aee9a in start_thread (arg=0x7fab2b0e9700) at pthread_create.c:308
#15 0x00007fab46cc6cbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#16 0x0000000000000000 in ?? ()

你能把你的场景简化成一个小例子来重现效果并发布吗?我有一个类似的问题。我偶然发现了一个有效的版本,但我不知道为什么或者如何解释这个差异。看起来唯一的区别是时间。对我来说,这是我代码中的一个memcpy错误。
QT += mobility
MOBILITY += multimedia
CONFIG += mobility