Ticket #218 (new defect)

Opened 1 year ago

Last modified 1 year ago

MPEG1 Layer 2 audio track in AVI hangs QuickTime using 100% CPU

Reported by: rectalogic Assigned to:
Priority: normal Milestone:
Component: AVI Version: 1.0
Severity: normal Keywords:
Cc:

Description

An AVI file with an MPEG1 Layer 2 audio track and DiVX5 video track hangs after playback or when paused and consumes 100% CPU.

Play the sample video back, when playback completes QuickTime is hung and using 100% CPU. Activity Monitor shows one of the threads is apparently still decoding the audio stream:

    100 Thread_1303
      100 _pthread_body
        100 start_thread
          100 audioprepThreadEntry
            100 prepClientThreadTaskPrep
              100 AudioPrepTaskEntry
                100 converterDecodeAndQueue
                  100 AudioConverterFillComplexBuffer
                    100 BufferedAudioConverter::FillBuffer(unsigned long&, AudioBufferList&, AudioStreamPacketDescription*)
                      100 AudioConverterChain::RenderOutput(CABufferList*, unsigned long, unsigned long&, AudioStreamPacketDescription*)
                        100 BufferedAudioConverter::FillBuffer(unsigned long&, AudioBufferList&, AudioStreamPacketDescription*)
                          100 CBRConverter::RenderOutput(CABufferList*, unsigned long, unsigned long&, AudioStreamPacketDescription*)
                            100 BufferedAudioConverter::GetInputBytes(unsigned long, unsigned long&, CABufferList const*&)
                              100 BufferedAudioConverter::FillBuffer(unsigned long&, AudioBufferList&, AudioStreamPacketDescription*)
                                100 CBRConverter::RenderOutput(CABufferList*, unsigned long, unsigned long&, AudioStreamPacketDescription*)
                                  100 BufferedAudioConverter::GetInputBytes(unsigned long, unsigned long&, CABufferList const*&)
                                    100 CodecConverter::DecoderFillBuffer(unsigned long&, AudioBufferList&, AudioStreamPacketDescription*)
                                      100 AudioCodecProduceOutputPackets
                                        100 CallComponentDispatch
                                          100 long ACCodecDispatch<FFissionVBRDecoder>(ComponentParameters*, FFissionVBRDecoder*)
                                            100 FFissionDecoder::ProduceOutputPackets(void*, unsigned long&, unsigned long&, AudioStreamPacketDescription*)
                                              100 RingBuffer::Zap(unsigned long)
                                                100 std::list<unsigned long, std::allocator<unsigned long> >::pop_front()
                                                  100 free
                                                    100 malloc_printf
                                                      71 write
                                                        71 write
                                                      20 _simple_dprintf
                                                        19 write
                                                          19 write
                                                        1 _simple_vdprintf
                                                          1 hex
                                                            1 hex
                                                      6 _simple_vdprintf
                                                        3 _simple_vdprintf
                                                        3 strchr
                                                          3 strchr
                                                      1 __i686.get_pc_thunk.bx
                                                        1 __i686.get_pc_thunk.bx
                                                      1 _sysenter_trap
                                                        1 _sysenter_trap
                                                      1 strchr
                                                        1 strchr

Change History

07/09/07 13:20:49 changed by rectalogic

Sample AVI is too big for trac, here is a link: http://perian-discuss.googlegroups.com/web/divx5-mp2-hang.avi

07/09/07 13:49:20 changed by rectalogic

Also after the hang, /Library/Logs/Console/501/console.log has 5G of this:

QuickTime Player(10356,0x1b4c000) malloc: ***  Deallocation of a pointer not malloced: 0x17406a2c;
This could be a double free(), or free() called with the middle of an allocated block;
Try setting environment variable MallocHelp to see tools to help debug

07/09/07 18:20:19 changed by dconrad

The hang should be fixed in [626], but we still need to parse the frames properly.