Summary: | Arts + MP3 causing hard lockup | ||
---|---|---|---|
Product: | [Unmaintained] akodelib | Reporter: | Steve <steve_v> |
Component: | general | Assignee: | Allan Sandfeld <kde> |
Status: | RESOLVED FIXED | ||
Severity: | crash | ||
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Steve
2004-09-22 17:02:51 UTC
Open a konsole, kill artsd: "killall artsd2, and start artsd with debugging: "artsd -l0". Report what it prints, it also shouldn't be able to lockup the system in this state. Output of artsd -l0: artsd version is 1.3.0 gsl: using Unix98 pthreads directly for mutexes and conditions [artsd: 10563] SoundServerStartup --> got lock autodetecting driver: - toss: 4 - null: -1 - alsa: 15 - oss: 10 ... which means we'll default to alsa ALSA driver: default buffering: 7 fragments with 1024 bytes (audio latency is 40.6 ms) ALSA lib pcm_hw.c:549:(snd_pcm_hw_start) SNDRV_PCM_IOCTL_START failed: Broken pipe Closing ALSA-driver virtualize StereoVolumeControl ALSA driver: default buffering: 7 fragments with 1024 bytes (audio latency is 40.6 ms) ALSA lib pcm_hw.c:549:(snd_pcm_hw_start) SNDRV_PCM_IOCTL_START failed: Broken pipe audio format is 44100 Hz, 16 bits, 2 channels addDirectory(/usr/kde/3.3/lib/mcop,) addDirectory(/usr/kde/3.3/lib/mcop/Amarok,Amarok) addDirectory(/usr/kde/3.3/lib/mcop/Arts,Arts) addDirectory(/usr/kde/3.3/lib/mcop/Arts/Environment,Arts::Environment) addDirectory(/usr/kde/3.3/lib/mcop/Noatun,Noatun) addDirectory(/home/steve/.mcop/trader-cache,) Arts::MidiManager registered successfully. [artsd: 10563] SoundServerStartup <-- released lock UnixManager: got notifyIO socketconnection created, fd = 8 search playobject, extension = mp3 creating akodeMPEGPlayObject to play file /home/steve/Desktop/GARBAGE #1 Crush.mp3 akode: opening /home/steve/Desktop/GARBAGE #1 Crush.mp3 akode: play akode: eof akode: halt ---------------------------------- Artsd consumes all availabe cpu time, does not respond to ctrl-c, and must be killed with -9. It doesn't take the whole system with it though :-) Cheers. Steve. Sounds like some odd error state. Send the problematic file directly to me at kde@carewolf.com, and I will have a look at what goes wrong. What is status? Is it still a problem, do you an example file you can send me? Sorry man, I thought I did. turns out I hit reply (wrong email) will send to kde(at)karewolf.com On Thursday 04 November 2004 17:36, Steve wrote:
> Sorry man, I thought I did. turns out I hit reply (wrong email)
> will send to kde(at)karewolf.com
You better not. My domain is carewolf.com :)
All good, just annother damn typo, I meant care with a c :-) CVS commit by carewolf: Two changes: * Also add retry counter on first-frame seeking to avoid locking on completely incorrect files * Ask MADlib to ignore CRCs, it is pretty useless anyway. BUG: 90025 M +9 -2 mpeg_decoder.cpp 1.9 --- kdemultimedia/akode/plugins/mpeg_decoder/mpeg_decoder.cpp #1.8:1.9 @@ -118,5 +118,5 @@ MPEGDecoder::MPEGDecoder(File *src) { mad_synth_init(&m_data->synth); - mad_stream_options(&m_data->stream, 0); + mad_stream_options(&m_data->stream, MAD_OPTION_IGNORECRC); m_data->eof = false; @@ -364,8 +364,15 @@ bool MPEGDecoder::readFrame(AudioFrame* if (!prepare()) return false; + int retries = 0; first_frame: + if (retries >= 8) { + // fatal error + m_data->error = true; + return false; + } res = mad_frame_decode(&m_data->frame, &m_data->stream); if (res != 0) { if (m_data->stream.error == MAD_ERROR_BUFLEN) { + retries++; moreData(true); } @@ -376,5 +383,5 @@ bool MPEGDecoder::readFrame(AudioFrame* if (MAD_RECOVERABLE(m_data->stream.error)) { #ifdef MPEG_DEBUG - cerr << "Invalid frame\n"; + cerr << "Invalid frame: " << mad_stream_errorstr(&m_data->stream) << "\n"; #endif m_data->metaframe_filter(true); |