When using skype call, sometimes skype call cannot be end if press end call button, and such log will appear,
"W/libOpenSLES( 2355): frameworks/wilhelm/src/android/AudioRecorder_to_android.cpp:217: pthread 0x62471b80 (tid 2810) sees object 0x66a0d518 was locked by pthread 0x5fb4cc90 (tid 2377) at frameworks/wilhelm/src/itf/IObject.c:411" I think when end skype call, 1. libOpenSLES to destroy CAudioRecorder(object locked, later will unlock only in IObject_deinit after finish destroyed in 3.) 2. EVENT_MORE_DATA/EVENT_OVERRUN(etc.) happens and skype callback function will handle the event with a lock(requires lock in 1.). 3. After 1., ~AudioRecord will be called during destroy,it will wait for a lock only when mThreadExitedCondition.broadcast() after AudioRecordThread returns, however AudioRecordThread is blocked in processAudioBuffer when handle EVENT_MORE_DATA/EVENT_OVERRUN(etc.)(requires lock in 2.) However 1. cannot be finished if 3. is blocked. So dead lock happened. It seems that when destroy CAudioRecoder, there's no need to handle the event, however it's hard to sync. And handling event with lock may cause deadlock when destroy CAudioRecorder. So can we just remove the lock when handling event? Why we need lock here? -- -- unsubscribe: android-porting+unsubscr...@googlegroups.com website: http://groups.google.com/group/android-porting --- You received this message because you are subscribed to the Google Groups "android-porting" group. To unsubscribe from this group and stop receiving emails from it, send an email to android-porting+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.