Summary: | deadlock in the xine backend | ||
---|---|---|---|
Product: | [Frameworks and Libraries] Phonon | Reporter: | Olivier Goffart <ogoffart> |
Component: | Xine backend | Assignee: | Matthias Kretz <kretz> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | andresbajotierra |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Olivier Goffart
2008-03-17 15:27:57 UTC
On Monday 17 March 2008, Olivier Goffart wrote:
> KNotify block beacause of a deadlock in xine or in the xine backend.
The state I understand from the backtrace:
The main thread is trying to create a new stream for playback, but blocks
because the phonon-xine internal xine thread was already blocked waiting for
a xine_open to finish. Why the latter blocks I can't see, there could be
multiple reasons, one of them a bug in libxine, but possibly also a problem
with your filesystem or the soundcard. If the deadlock is reproducable then
please enable all debug output and add it to the report:
export PHONON_DEBUG=1
export PHONON_XINE_VERBOSITY=99
It happen to me around once a day. It's again locked right now. What kind of debug do you need? The end of the debug output at the moment of the deadlock knotify(32033) KNotify::event: 5618 ref= 0 knotify(32033) NotifyBySound::notify: going to play "/opt/kde4/share/sounds/KDE-Window-Close.ogg" knotify(32033)/phonon (xine backend) Phonon::Xine::AudioPort::AudioPort: use output plugin: "esd" audio_esd_out: connecting to esd server... audio_esd_out: can't connect to <default> ESD server: Connection refused load_plugins: failed to load audio output plugin <esd> knotify(32033)/phonon (xine backend) Phonon::Xine::AudioPort::AudioPort: ----------------------------------------------- audio_port created knotify(32033)/phonon (xine backend) Phonon::Xine::AudioOutput::setOutputDevice: new audio port is invalid knotify(32033)/phonon (xine backend) Phonon::Xine::Backend::connectNodes: knotify(32033)/phonon (xine backend) Phonon::Xine::AudioOutput::graphChanged: void Phonon::MediaObject::setCurrentSource(const Phonon::MediaSource&) QUrl( "file:///opt/kde4/share/sounds/KDE-Window-Close.ogg" ) knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::setMrl: "file:///opt/kde4/share/sounds/KDE-Window-Close.ogg" , 1 void Phonon::MediaObjectPrivate::_k_currentSourceChanged(const Phonon::MediaSource&) knotify(32033)/phonon (xine backend) Phonon::Xine::MediaObject::play: PLAY knotify(32033)/phonon (xine backend) Phonon::Xine::MediaObject::startToFakeBuffering: start faking knotify(32033)/phonon (xine backend) Phonon::Xine::MediaObject::startToFakeBuffering: fake state change: reached BufferingState after LoadingState knotify(32033) KNotify::event: 5619 ref= 1 knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: ################################ Event: TransitionTypeChanged knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: ################################ Event: SetTickInterval knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: ################################ Event: SetPrefinishMark knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: ################################ Event: UpdateVolume knotify(32033)/phonon (xine backend) Phonon::Xine::XineThread::event: XineThread Rewire event: knotify(32033)/phonon (xine backend) Phonon::Xine::XineThread::event: true -> true knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: ################################ Event: UpdateVolume knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: ################################ Event: MrlChanged knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::createStream: MediaObject is connected to 1 nodes knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::createStream: creating xine_stream with null audio port knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::createStream: creating xine_stream with null video port xine_stream_new knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::createStream: XINE_PARAM_EARLY_FINISHED_EVENT: 1 knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: calling xineOpen from MrlChanged xine: found input plugin : file input plugin load_plugins: probing demux 'anx' load_plugins: probing demux 'image' load_plugins: probing demux 'vox' load_plugins: probing demux 'aud' load_plugins: probing demux 'aiff' load_plugins: probing demux 'flac' load_plugins: probing demux 'nsf' load_plugins: probing demux 'realaudio' load_plugins: probing demux 'snd' load_plugins: probing demux 'tta' load_plugins: probing demux 'voc' load_plugins: probing demux 'mpeg_pes' load_plugins: probing demux 'mpeg-ts' load_plugins: probing demux 'mng' load_plugins: probing demux 'ogg' xine: found demuxer plugin: OGG demux plugin video discontinuity #1, type is 0, disc_off 0 waiting for audio discontinuity #1 audio discontinuity #1, type is 0, disc_off 0 waiting for in_discontinuity update #1 vpts adjusted with prebuffer to 13185570856 load_plugins: plugin vorbis will be used for audio streamtype 09. knotify(32033)/phonon (xine backend) Phonon::Xine::XineEngine::xineEventListener: XINE_EVENT_UI_CHANNELS_CHANGED knotify(32033)/phonon (xine backend) Phonon::Xine::XineEngine::xineEventListener: XINE_EVENT_UI_CHANNELS_CHANGED knotify(32033)/phonon (xine backend) Phonon::Xine::XineEngine::xineEventListener: XINE_EVENT_UI_CHANNELS_CHANGED knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::xineOpen: xine_open succeeded for m_mrl = file:///opt/kde4/share/sounds/KDE-Window-Close.ogg knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::getStreamInfo: available titles changed: 0 knotify(32033)/phonon (xine backend) Phonon::Xine::MediaObject::handleAvailableTitlesChanged: 0 knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::getStreamInfo: available chapters changed: 0 knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::getStreamInfo: available angles changed: 0 knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: ################################ Event: PlayCommand xine_play play_internal ...done diff=1 (pts=1, last_pts=0) video discontinuity #2, type is 2, disc_off 1 waiting for audio discontinuity #2 audio discontinuity #2, type is 2, disc_off 1 waiting for in_discontinuity update #2 knotify(32033)/phonon (xine backend) Phonon::Xine::MediaObject::handleStateChange: end faking knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: ################################ Event: UiChannelsChanged knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: current angle changed: 0 knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: current chapter changed: 0 knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: current title changed: 0 knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: ################################ Event: UiChannelsChanged knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: ################################ Event: UiChannelsChanged audio jump, diff=0 knotify(32033) KNotify::event: 5620 ref= 0 knotify(32033)/phonon (xine backend) Phonon::Xine::MediaObject::handleStateChange: reached PlayingState after BufferingState knotify(32033) KNotify::slotPluginFinished: 5621 ref= 2 knotify(32033) KNotify::event: 5621 ref= 0 knotify(32033) NotifyBySound::notify: going to play "/opt/kde4/share/sounds/KDE-Window-Close.ogg" knotify(32033)/phonon (xine backend) Phonon::Xine::AudioPort::AudioPort: use output plugin: "esd" audio_esd_out: connecting to esd server... audio_esd_out: can't connect to <default> ESD server: Connection refused load_plugins: failed to load audio output plugin <esd> knotify(32033)/phonon (xine backend) Phonon::Xine::AudioPort::AudioPort: ----------------------------------------------- audio_port created knotify(32033)/phonon (xine backend) Phonon::Xine::AudioOutput::setOutputDevice: new audio port is invalid knotify(32033)/phonon (xine backend) Phonon::Xine::Backend::connectNodes: knotify(32033)/phonon (xine backend) Phonon::Xine::AudioOutput::graphChanged: void Phonon::MediaObject::setCurrentSource(const Phonon::MediaSource&) QUrl( "file:///opt/kde4/share/sounds/KDE-Window-Close.ogg" ) knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::setMrl: "file:///opt/kde4/share/sounds/KDE-Window-Close.ogg" , 1 void Phonon::MediaObjectPrivate::_k_currentSourceChanged(const Phonon::MediaSource&) knotify(32033)/phonon (xine backend) Phonon::Xine::MediaObject::play: PLAY knotify(32033)/phonon (xine backend) Phonon::Xine::MediaObject::startToFakeBuffering: start faking knotify(32033)/phonon (xine backend) Phonon::Xine::MediaObject::startToFakeBuffering: fake state change: reached BufferingState after LoadingState knotify(32033) KNotify::event: 5622 ref= 1 knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: ################################ Event: TransitionTypeChanged knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: ################################ Event: SetTickInterval knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: ################################ Event: SetPrefinishMark knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: ################################ Event: UpdateVolume knotify(32033)/phonon (xine backend) Phonon::Xine::XineThread::event: XineThread Rewire event: knotify(32033)/phonon (xine backend) Phonon::Xine::XineThread::event: true -> true knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: ################################ Event: UpdateVolume knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: ################################ Event: MrlChanged knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::createStream: MediaObject is connected to 1 nodes knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::createStream: creating xine_stream with null audio port knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::createStream: creating xine_stream with null video port xine_stream_new knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::createStream: XINE_PARAM_EARLY_FINISHED_EVENT: 1 knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: calling xineOpen from MrlChanged xine: found input plugin : file input plugin load_plugins: probing demux 'anx' load_plugins: probing demux 'image' load_plugins: probing demux 'vox' load_plugins: probing demux 'aud' load_plugins: probing demux 'aiff' load_plugins: probing demux 'flac' load_plugins: probing demux 'nsf' load_plugins: probing demux 'realaudio' load_plugins: probing demux 'snd' load_plugins: probing demux 'tta' load_plugins: probing demux 'voc' load_plugins: probing demux 'mpeg_pes' load_plugins: probing demux 'mpeg-ts' load_plugins: probing demux 'mng' load_plugins: probing demux 'ogg' xine: found demuxer plugin: OGG demux plugin video discontinuity #1, type is 0, disc_off 0 waiting for audio discontinuity #1 audio discontinuity #1, type is 0, disc_off 0 waiting for in_discontinuity update #1 vpts adjusted with prebuffer to 13185579639 load_plugins: plugin vorbis will be used for audio streamtype 09. knotify(32033)/phonon (xine backend) Phonon::Xine::XineEngine::xineEventListener: XINE_EVENT_UI_CHANNELS_CHANGED knotify(32033)/phonon (xine backend) Phonon::Xine::XineEngine::xineEventListener: XINE_EVENT_UI_CHANNELS_CHANGED knotify(32033)/phonon (xine backend) Phonon::Xine::XineEngine::xineEventListener: XINE_EVENT_UI_CHANNELS_CHANGED knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::xineOpen: xine_open succeeded for m_mrl = file:///opt/kde4/share/sounds/KDE-Window-Close.ogg knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::getStreamInfo: available titles changed: 0 knotify(32033)/phonon (xine backend) Phonon::Xine::MediaObject::handleAvailableTitlesChanged: 0 knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::getStreamInfo: available chapters changed: 0 knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::getStreamInfo: available angles changed: 0 knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: ################################ Event: PlayCommand xine_play play_internal ...done diff=1 (pts=1, last_pts=0) video discontinuity #2, type is 2, disc_off 1 waiting for audio discontinuity #2 audio discontinuity #2, type is 2, disc_off 1 waiting for in_discontinuity update #2 knotify(32033)/phonon (xine backend) Phonon::Xine::MediaObject::handleStateChange: end faking knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: ################################ Event: UiChannelsChanged knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: current angle changed: 0 knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: current chapter changed: 0 knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: current title changed: 0 knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: ################################ Event: UiChannelsChanged knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: ################################ Event: UiChannelsChanged knotify(32033) KNotify::event: 5623 ref= 0 audio jump, diff=0 video discontinuity #3, type is 0, disc_off 0 waiting for audio discontinuity #3 ao_close audio discontinuity #3, type is 0, disc_off 0 waiting for in_discontinuity update #3 vpts adjusted with prebuffer to 13185586573 knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: ################################ Event: MediaFinished knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: MediaFinishedEvent m_useGaplessPlayback = true void Phonon::MediaObjectPrivate::_k_aboutToFinish() knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: ################################ Event: GaplessSwitch knotify(32033)/phonon (xine backend) Phonon::Xine::XineStream::event: no GaplessSwitch knotify(32033)/phonon (xine backend) Phonon::Xine::MediaObject::handleStateChange: reached StoppedState after BufferingState ao_flush (loop running: 1) ao_close audio discontinuity #3, type is 0, disc_off 0 waiting for in_discontinuity update #3 ao_close audio_out: no streams left, closing driver video discontinuity #3, type is 0, disc_off 0 vpts adjusted with prebuffer to 13185587945 video discontinuity #3, type is 0, disc_off 0 waiting for audio discontinuity #3 audio discontinuity #225, type is 0, disc_off 0 waiting for in_discontinuity update #225 audio discontinuity #66, type is 0, disc_off 0 waiting for in_discontinuity update #66 vpts adjusted with prebuffer to 13185587953 vpts adjusted with prebuffer to 13185587954 audio discontinuity #21, type is 0, disc_off 0 waiting for in_discontinuity update #21 vpts adjusted with prebuffer to 13185587971 audio discontinuity #3, type is 0, disc_off 0 waiting for in_discontinuity update #3 vpts adjusted with prebuffer to 13185587982 knotify(32033) KNotify::slotPluginFinished: 5624 ref= 2 knotify(32033) KNotify::event: 5624 ref= 0 knotify(32033) KNotify::event: 5625 ref= 0 knotify(32033) NotifyBySound::notify: going to play "/opt/kde4/share/sounds/KDE-Window-Close.ogg" knotify(32033)/phonon (xine backend) Phonon::Xine::AudioPort::AudioPort: use output plugin: "esd" audio_esd_out: connecting to esd server... audio_esd_out: can't connect to <default> ESD server: Connection refused load_plugins: failed to load audio output plugin <esd> knotify(32033)/phonon (xine backend) Phonon::Xine::AudioPort::AudioPort: ----------------------------------------------- audio_port created knotify(32033)/phonon (xine backend) Phonon::Xine::AudioOutput::setOutputDevice: new audio port is invalid This happens to other people as well (Bug 156236) Have anyone experienced this bug again with a recent KDE version? (4.1.3 / 4.2beta2 / 4.2svn) ? Thanks :) SVN commit 903113 by mkretz: when all devices fail don't hang forever on the last broken device but rather fall back to a null output so that everything behaves properly - just without sound. The new string for better user feedback can wait. BUG: 159469 M +15 -4 phonon/audiooutput.cpp M +6 -0 xine/audiooutput.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=903113 |