I have found the reason that the hardware didn't support this WMV file , so
i disable the hardware
decoding and problem fix.

On Thu, Sep 6, 2012 at 10:35 AM, 王鑫 <[email protected]> wrote:

> I have a wmv file (about 130MB) in the sd card, i reset and reboot the
> device , the mediaserver process will occupy 90%+ cpu and keep that status
> until the battery dry out.
>
> I used gdb to debug the mediaserver process, but it seems I can't get the
> all threads info, normally I just can see one thread. At one time, I get
> all the thread info occasionally, and I will attach them below.
>
> It's odd that I wrote some debug log info in the code but the log can't
> output, it seems the stack below may not belong my problematic wmv file but
> some files in the phone.
>
> I am sorry I can't attach that wmv file for it's too large comparing to
> the permission of gmail.
>
>
>
> (gdb) info threads
>>   9 Thread 715  __ioctl () at bionic/libc/arch-arm/syscalls/__ioctl.S:15
>>   8 Thread 714  __futex_syscall3 ()
>>     at bionic/libc/arch-arm/bionic/atomics_arm.S:200
>>   7 Thread 713  0x84963b44 in BS_flush16 ()
>>    from
>> /home/ckt/work/R7627USNSKQLYA113023_shared/out/target/product/msm7627a_vicuna/symbols/system/lib/libOmxWmvDec.so
>>   6 Thread 712  __futex_syscall3 ()
>>     at bionic/libc/arch-arm/bionic/atomics_arm.S:200
>>   5 Thread 199  __ioctl () at bionic/libc/arch-arm/syscalls/__ioctl.S:15
>>   4 Thread 198  __futex_syscall3 ()
>>     at bionic/libc/arch-arm/bionic/atomics_arm.S:200
>>   3 Thread 197  0xffff0520 in ?? ()
>>   2 Thread 196  0xffff0520 in ?? ()
>> * 1 Thread 96  __futex_syscall3 ()
>>     at bionic/libc/arch-arm/bionic/atomics_arm.S:200
>> (gdb)
>> (gdb) t 1
>> [Switching to thread 1 (Thread 96)]#0  __futex_syscall3 ()
>>     at bionic/libc/arch-arm/bionic/atomics_arm.S:200
>> 200    ldmia   sp!, {r4, r7}
>> (gdb) bt
>> #0  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:200
>> #1  0x80212264 in __pthread_cond_timedwait_relative (cond=0x2043c,
>>     mutex=0x20424, reltime=0x0) at bionic/libc/bionic/pthread.c:1451
>> #2  0x80212338 in __pthread_cond_timedwait (cond=0x2043c, mutex=0x20424,
>>     abstime=0x0, clock=0) at bionic/libc/bionic/pthread.c:1474
>> #3  0x8386d926 in android::Condition::wait (this=0x20360,
>> buffer=0xbebd3a28,
>>     options=<value optimized out>)
>>     at frameworks/base/include/utils/threads.h:451
>> #4  android::OMXCodec::read (this=0x20360, buffer=0xbebd3a28,
>>     options=<value optimized out>)
>>     at frameworks/base/media/libstagefright/OMXCodec.cpp:4244
>> #5  0x83874c60 in extractVideoFrameWithCodecFlags (
>>     client=<value optimized out>, trackMeta=..., source=..., flags=1,
>>     frameTimeUs=-1, seekMode=2)
>>     at
>> frameworks/base/media/libstagefright/StagefrightMetadataRetriever.cpp:316
>> #6  0x83875086 in android::StagefrightMetadataRetriever::getFrameAtTime (
>>     this=<value optimized out>, timeUs=-1, option=2)
>>     at
>> frameworks/base/media/libstagefright/StagefrightMetadataRetriever.cpp:447
>> #7  0x8221a9ec in android::MetadataRetrieverClient::getFrameAtTime (
>>     this=0xebf0, timeUs=-1, option=2)
>>     at
>> frameworks/base/media/libmediaplayerservice/MetadataRetrieverClient.cpp:2---Type
>> <return> to continue, or q <return> to quit---
>> 10
>> #8  0x80942886 in android::BnMediaMetadataRetriever::onTransact
>> (this=0xebf0,
>>     code=<value optimized out>, data=<value optimized out>,
>> reply=0xbebd3b60,
>>     flags=16) at
>> frameworks/base/media/libmedia/IMediaMetadataRetriever.cpp:210
>> #9  0x80817566 in android::BBinder::transact (this=0xebf4, code=4,
>> data=...,
>>     reply=0xbebd3b60, flags=16) at
>> frameworks/base/libs/binder/Binder.cpp:107
>> #10 0x8081a72c in android::IPCThreadState::executeCommand (this=0xab50,
>>     cmd=<value optimized out>)
>>     at frameworks/base/libs/binder/IPCThreadState.cpp:1012
>> #11 0x8081a90e in android::IPCThreadState::joinThreadPool (this=0xab50,
>>     isMain=true) at frameworks/base/libs/binder/IPCThreadState.cpp:457
>> #12 0x00008bda in main (argc=<value optimized out>, argv=<value optimized
>> out>)
>>     at frameworks/base/media/mediaserver/main_mediaserver.cpp:66
>> (gdb) t 2
>> [Switching to thread 2 (Thread 196)]#0  0xffff0520 in ?? ()
>> (gdb) bt
>> #0  0xffff0520 in ?? ()
>> Cannot access memory at address 0x69647538
>> (gdb) t 3
>> [Switching to thread 3 (Thread 197)]#0  0xffff0520 in ?? ()
>> (gdb) bt
>> #0  0xffff0520 in ?? ()
>> Cannot access memory at address 0x69647538
>> (gdb) t 3
>> [Switching to thread 3 (Thread 197)]#0  0xffff0520 in ?? ()
>> (gdb) bt
>> #0  0xffff0520 in ?? ()
>> (gdb) t 4
>> [Switching to thread 4 (Thread 198)]#0  __futex_syscall3 ()
>>     at bionic/libc/arch-arm/bionic/atomics_arm.S:200
>> 200    ldmia   sp!, {r4, r7}
>> (gdb) bt
>> #0  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:200
>> #1  0x80212264 in __pthread_cond_timedwait_relative (cond=0xcd00,
>>     mutex=0xccfc, reltime=0x0) at bionic/libc/bionic/pthread.c:1451
>> #2  0x80212338 in __pthread_cond_timedwait (cond=0xcd00, mutex=0xccfc,
>>     abstime=0x0, clock=0) at bionic/libc/bionic/pthread.c:1474
>> #3  0x8002b154 in android::Condition::wait (this=0xccd8)
>>     at frameworks/base/include/utils/threads.h:451
>> #4  android::AudioFlinger::MixerThread::threadLoop (this=0xccd8)
>>     at frameworks/base/services/audioflinger/AudioFlinger.cpp:1861
>> #5  0x8061d6ae in android::Thread::_threadLoop (user=<value optimized
>> out>)
>>     at frameworks/base/libs/utils/Threads.cpp:770
>> #6  0x8061dc0c in thread_data_t::trampoline (t=<value optimized out>)
>>     at frameworks/base/libs/utils/Threads.cpp:127
>> #7  0x802129f8 in __thread_entry (
>>     func=0x8061db79 <thread_data_t::trampoline(thread_data_t const*)>,
>>     arg=0xc8a0, tls=<value optimized out>) at
>> bionic/libc/bionic/pthread.c:207
>> #8  0x802125c4 in pthread_create (thread_out=<value optimized out>,
>>     attr=0xbebd3884,
>>     start_routine=0x8061db79 <thread_data_t::trampoline(thread_data_t
>> const*)>, arg=0xc8a0) at bionic/libc/bionic/pthread.c:343
>> #9  0x00000000 in ?? ()
>> (gdb) t 5
>> [Switching to thread 5 (Thread 199)]#0  __ioctl ()
>>     at bionic/libc/arch-arm/syscalls/__ioctl.S:15
>> 15    ldmfd   sp!, {r4, r7}
>> (gdb) bt
>> #0  __ioctl () at bionic/libc/arch-arm/syscalls/__ioctl.S:15
>> #1  0x80227230 in ioctl (fd=<value optimized out>, request=8)
>>     at bionic/libc/bionic/ioctl.c:41
>> #2  0x80819f14 in android::IPCThreadState::talkWithDriver (this=0x104b0,
>>     doReceive=true) at frameworks/base/libs/binder/IPCThreadState.cpp:791
>> #3  0x8081a8f0 in android::IPCThreadState::joinThreadPool (this=0x104b0,
>>     isMain=true) at frameworks/base/libs/binder/IPCThreadState.cpp:446
>> #4  0x8081fe88 in android::PoolThread::threadLoop (this=0xc7a8)
>>     at frameworks/base/libs/binder/ProcessState.cpp:69
>> #5  0x8061d6ae in android::Thread::_threadLoop (user=<value optimized
>> out>)
>>     at frameworks/base/libs/utils/Threads.cpp:770
>> #6  0x8061dc0c in thread_data_t::trampoline (t=<value optimized out>)
>>     at frameworks/base/libs/utils/Threads.cpp:127
>> #7  0x802129f8 in __thread_entry (
>>     func=0x8061db79 <thread_data_t::trampoline(thread_data_t const*)>,
>>     arg=0xeae8, tls=<value optimized out>) at
>> bionic/libc/bionic/pthread.c:207
>> #8  0x802125c4 in pthread_create (thread_out=<value optimized out>,
>>     attr=0xbebd3b7c,
>>     start_routine=0x8061db79 <thread_data_t::trampoline(thread_data_t
>> const*)>, arg=0xeae8) at bionic/libc/bionic/pthread.c:343
>> #9  0x00000000 in ?? ()
>> (gdb) t 6
>> [Switching to thread 6 (Thread 712)]#0  __futex_syscall3 ()
>>     at bionic/libc/arch-arm/bionic/atomics_arm.S:200
>> 200    ldmia   sp!, {r4, r7}
>> (gdb) bt
>> #0  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:200
>> #1  0x80212264 in __pthread_cond_timedwait_relative (cond=0x2d974,
>>     mutex=0x2d970, reltime=0x0) at bionic/libc/bionic/pthread.c:1451
>> #2  0x80212338 in __pthread_cond_timedwait (cond=0x2d974, mutex=0x2d970,
>>     abstime=0x0, clock=0) at bionic/libc/bionic/pthread.c:1474
>> #3  0x84701e2c in MM_SignalQ_Wait (handle=0x2d6e0, ppvUserArg=0x40094ed4)
>>     at vendor/qcom/proprietary/mm-osal/./src/MMSignal.c:268
>> #4  0x84618c94 in FileSourceHelper::SourceThread (this=0x2d0b0)
>>     at
>> vendor/qcom/proprietary/mm-parser/main/FileSource/src/filesourcehelper.cpp:3690
>> #5  0x84618cd4 in FileSourceHelper::SourceThreadEntry (ptr=0x2d0b0)
>>     at
>> vendor/qcom/proprietary/mm-parser/main/FileSource/src/filesourcehelper.cpp:3667
>> #6  0x802129f8 in __thread_entry (
>>     func=0x84618ccd <FileSourceHelper::SourceThreadEntry(void*)>,
>> arg=0x2d0b0,
>>     tls=<value optimized out>) at bionic/libc/bionic/pthread.c:207
>> #7  0x802125c4 in pthread_create (thread_out=<value optimized out>,
>>     attr=0xbebd382c,
>>     start_routine=0x84618ccd
>> <FileSourceHelper::SourceThreadEntry(void*)>,
>>     arg=0x2d0b0) at bionic/libc/bionic/pthread.c:343
>> #8  0x00000000 in ?? ()
>> (gdb) t 7
>> [Switching to thread 7 (Thread 713)]#0  0x84963b44 in BS_flush16 ()
>>    from
>> /home/ckt/work/R7627USNSKQLYA113023_shared/out/target/product/msm7627a_vicuna/symbols/system/lib/libOmxWmvDec.so
>> (gdb) bt
>> #0  0x84963b44 in BS_flush16 ()
>>    from
>> /home/ckt/work/R7627USNSKQLYA113023_shared/out/target/product/msm7627a_vicuna/symbols/system/lib/libOmxWmvDec.so
>> #1  0x8494a52c in BS_getBits ()
>>    from
>> /home/ckt/work/R7627USNSKQLYA113023_shared/out/target/product/msm7627a_vicuna/symbols/system/lib/libOmxWmvDec.so
>> #2  0x849315f0 in decodeBitsOfESCCode ()
>>    from
>> /home/ckt/work/R7627USNSKQLYA113023_shared/out/target/product/msm7627a_vicuna/symbols/system/lib/libOmxWmvDec.so
>> #3  0x84990d98 in DecodeInverseIntraBlockQuantizeInterlace411 ()
>>    from
>> /home/ckt/work/R7627USNSKQLYA113023_shared/out/target/product/msm7627a_vicuna/symbols/system/lib/libOmxWmvDec.so
>> #4  0x84991920 in DecodeIntraBlockYInterlace411 ()
>>    from
>> /home/ckt/work/R7627USNSKQLYA113023_shared/out/target/product/msm7627a_vicuna/symbols/system/lib/libOmxWmvDec.so
>> #5  0x84991fb8 in DecodeFrameIMBInterlace411 ()
>>    from
>> /home/ckt/work/R7627USNSKQLYA113023_shared/out/target/product/msm7627a_vicuna/symbols/system/lib/libOmxWmvDec.so
>> #6  0x84992404 in decodeIInterlace411 ()
>>    from
>> /home/ckt/work/R7627USNSKQLYA113023_shared/out/target/product/msm7627a_vicuna/symbols/system/lib/libOmxWmvDec.so
>> #7  0x84962aa4 in WMVideoDecDecodeDataInternal ()
>>    from
>> /home/ckt/work/R7627USNSKQLYA113023_shared/out/target/product/msm7627a_v---Type
>> <return> to continue, or q <return> to quit---
>> icuna/symbols/system/lib/libOmxWmvDec.so
>> #8  0x8496318c in WMVideoDecDecodeData ()
>>    from
>> /home/ckt/work/R7627USNSKQLYA113023_shared/out/target/product/msm7627a_vicuna/symbols/system/lib/libOmxWmvDec.so
>> #9  0x849311f8 in WMVDecoder::Decode(VDEC_INPUT_BUFFER*, bool) ()
>>    from
>> /home/ckt/work/R7627USNSKQLYA113023_shared/out/target/product/msm7627a_vicuna/symbols/system/lib/libOmxWmvDec.so
>> #10 0x84920c7c in VideoDecoder::Decode (this=<value optimized out>,
>>     input=0x40f61cbc, checkBufAvail=false)
>>     at
>> vendor/qcom/proprietary/mm-video/qdsp5/vdec-omxrv9/../vdec-common/src/vdecoder_i.cpp:84
>> #11 0x84922c2a in vdec_post_input_buffer (dec=<value optimized out>,
>>     frame=<value optimized out>, cookie=0x2e9d8)
>>     at
>> vendor/qcom/proprietary/mm-video/qdsp5/vdec-omxrv9/../vdec-common/src/vdec.cpp:913
>> #12 0x84927828 in omx_vdec::push_one_input_buffer (this=0x3cf98,
>>     buffer=0x2e9d8)
>>     at
>> vendor/qcom/proprietary/mm-video/qdsp5/vdec-omxrv9/../vdec-common/src/omx_vdec.cpp:6149
>> #13 0x8492a346 in omx_vdec::empty_this_buffer_proxy (this=0x3cf98,
>>     hComp=<value optimized out>, buffer=0x2e9d8)
>>     at
>> vendor/qcom/proprietary/mm-video/qdsp5/vdec-omxrv9/../vdec-common/src/omx_vdec.cpp:5361
>> ---Type <return> to continue, or q <return> to quit---
>> #14 0x8492a3ec in omx_vdec::empty_this_buffer_proxy_frame_based
>> (this=0x3cf98,
>>     hComp=0x3cf9c, buffer=0x2e9d8)
>>     at
>> vendor/qcom/proprietary/mm-video/qdsp5/vdec-omxrv9/../vdec-common/src/omx_vdec.cpp:5022
>> #15 0x8492bd20 in omx_vdec::process_event_cb (ctxt=<value optimized out>,
>>     id=8 '\b')
>>     at
>> vendor/qcom/proprietary/mm-video/qdsp5/vdec-omxrv9/../vdec-common/src/omx_vdec.cpp:1233
>> #16 0x8492bdfc in message_thread (input=<value optimized out>)
>>     at
>> vendor/qcom/proprietary/mm-video/qdsp5/vdec-omxrv9/../vdec-common/src/omx_vdec.cpp:211
>> #17 0x802129f8 in __thread_entry (func=0x8492bdbd
>> <message_thread(void*)>,
>>     arg=0x3cf98, tls=<value optimized out>) at
>> bionic/libc/bionic/pthread.c:207
>> #18 0x802125c4 in pthread_create (thread_out=<value optimized out>,
>>     attr=0x80238d28, start_routine=0x8492bdbd <message_thread(void*)>,
>>     arg=0x3cf98) at bionic/libc/bionic/pthread.c:343
>> #19 0x00000000 in ?? ()
>> (gdb) t 8
>> [Switching to thread 8 (Thread 714)]#0  __futex_syscall3 ()
>>     at bionic/libc/arch-arm/bionic/atomics_arm.S:200
>> 200    ldmia   sp!, {r4, r7}
>> (gdb) bt
>> #0  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:200
>> #1  0x80212264 in __pthread_cond_timedwait_relative (cond=0x19cf4,
>>     mutex=0x19ce8, reltime=0x0) at bionic/libc/bionic/pthread.c:1451
>> #2  0x80212338 in __pthread_cond_timedwait (cond=0x19cf4, mutex=0x19ce8,
>>     abstime=0x0, clock=0) at bionic/libc/bionic/pthread.c:1474
>> #3  0x83e0a7b4 in android::Condition::wait (this=0x19ce0)
>>     at frameworks/base/include/utils/threads.h:451
>> #4  android::OMX::CallbackDispatcher::threadEntry (this=0x19ce0)
>>     at frameworks/base/media/libstagefright/omx/OMX.cpp:135
>> #5  0x83e0a806 in android::OMX::CallbackDispatcher::ThreadWrapper (
>>     me=0xfffffe00) at frameworks/base/media/libstagefright/omx/OMX.cpp:120
>> #6  0x802129f8 in __thread_entry (
>>     func=0x83e0a801
>> <android::OMX::CallbackDispatcher::ThreadWrapper(void*)>,
>>     arg=0x19ce0, tls=<value optimized out>) at
>> bionic/libc/bionic/pthread.c:207
>> #7  0x802125c4 in pthread_create (thread_out=<value optimized out>,
>>     attr=0xbebd3890,
>>     start_routine=0x83e0a801
>> <android::OMX::CallbackDispatcher::ThreadWrapper(void*)>, arg=0x19ce0) at
>> bionic/libc/bionic/pthread.c:343
>> #8  0x00000000 in ?? ()
>> (gdb) t 9
>> [Switching to thread 9 (Thread 715)]#0  __ioctl ()
>>     at bionic/libc/arch-arm/syscalls/__ioctl.S:15
>> 15    ldmfd   sp!, {r4, r7}
>> (gdb) bt
>> #0  __ioctl () at bionic/libc/arch-arm/syscalls/__ioctl.S:15
>> #1  0x80227230 in ioctl (fd=<value optimized out>, request=0)
>>     at bionic/libc/bionic/ioctl.c:41
>> #2  0x84a0094a in adsp_task_event (data=0x84a021a4)
>>     at vendor/qcom/proprietary/mm-core/adspsvc/src/adsprtossvc.c:174
>> #3  0x802129f8 in __thread_entry (func=0x84a008f9 <adsp_task_event>,
>>     arg=0x84a021a4, tls=<value optimized out>)
>>     at bionic/libc/bionic/pthread.c:207
>> #4  0x802125c4 in pthread_create (thread_out=<value optimized out>,
>>     attr=0x80238d28, start_routine=0x84a008f9 <adsp_task_event>,
>>     arg=0x84a021a4) at bionic/libc/bionic/pthread.c:343
>> #5  0x00000000 in ?? ()
>> (gdb)
>
>
>
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to