在进行任何调用之前,必须使用PjSip线程注册外部线程

时间:2017-07-04 09:58:53

标签: android pjsip

当导航应用程序app由于pjsip而崩溃时,它说你必须用pjsip线程注册外部线程。我还使用像这样的主线程注册了pjsip

  try {
            mEndpoint.libRegisterThread(Thread.currentThread().getName());
            Log.d(TAG, "Registering with thread "+Thread.currentThread().getName());
        } catch (Exception e) {
            e.printStackTrace();
        }

这个崩溃发生的事情是如此随机,并且不知道是什么导致了这一点,而且当崩溃发生时我也没有调用任何pjsip方法。那么这里出了什么问题?

07-04 14:36:18.183 32089-32097/com.safarifone.waafi A/libc: ../src/pj/os_core_unix.c:692: pj_thread_this: assertion "!"Calling pjlib from unknown/external thread. You must " "register external threads with pj_thread_register() " "before calling any pjlib functions."" failed
    07-04 14:36:18.183 32089-32097/com.safarifone.waafi A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 32097 (FinalizerDaemon)
    07-04 14:36:18.193 32089-32089/com.safarifone.waafi D/ContactListAdapter: user which is recently added and not sync...
    07-04 14:36:18.203 32089-32089/com.safarifone.waafi D/ContactListAdapter: user which is recently added and not sync...
    07-04 14:36:18.213 32089-32089/com.safarifone.waafi D/ContactListAdapter: user which is recently added and not sync...
    07-04 14:36:18.243 326-326/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
    07-04 14:36:18.243 326-326/? A/DEBUG: Build fingerprint: 'samsung/grandpplteser/grandpplte:6.0.1/MMB29T/G532FXWU1APK6:user/release-keys'
    07-04 14:36:18.243 326-326/? A/DEBUG: Revision: '0'
    07-04 14:36:18.243 326-326/? A/DEBUG: ABI: 'arm'
    07-04 14:36:18.243 326-326/? A/DEBUG: pid: 32089, tid: 32097, name: FinalizerDaemon  >>> com.safarifone.waafi <<<
    07-04 14:36:18.243 326-326/? A/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
    07-04 14:36:18.273 326-326/? A/DEBUG: Abort message: '../src/pj/os_core_unix.c:692: pj_thread_this: assertion "!"Calling pjlib from unknown/external thread. You must " "register external threads with pj_thread_register() " "before calling any pjlib functions."" failed'
    07-04 14:36:18.273 326-326/? A/DEBUG:     r0 00000000  r1 00007d61  r2 00000006  r3 b37c2978
    07-04 14:36:18.273 326-326/? A/DEBUG:     r4 b37c2980  r5 b37c2930  r6 0000000b  r7 0000010c
    07-04 14:36:18.273 326-326/? A/DEBUG:     r8 00000000  r9 b4424f00  sl b37c1b20  fp b37c1a64
    07-04 14:36:18.273 326-326/? A/DEBUG:     ip 00000006  sp b37c19d0  lr b6d4cdcd  pc b6d4f1bc  cpsr 400e0010
    07-04 14:36:18.293 326-326/? A/DEBUG: backtrace:
    07-04 14:36:18.293 326-326/? A/DEBUG:     #00 pc 000431bc  /system/lib/libc.so (tgkill+12)
    07-04 14:36:18.293 326-326/? A/DEBUG:     #01 pc 00040dc9  /system/lib/libc.so (pthread_kill+32)
    07-04 14:36:18.293 326-326/? A/DEBUG:     #02 pc 0001c7e7  /system/lib/libc.so (raise+10)
    07-04 14:36:18.293 326-326/? A/DEBUG:     #03 pc 00019a65  /system/lib/libc.so (__libc_android_abort+34)
    07-04 14:36:18.293 326-326/? A/DEBUG:     #04 pc 00017600  /system/lib/libc.so (abort+4)
    07-04 14:36:18.293 326-326/? A/DEBUG:     #05 pc 0001b3fb  /system/lib/libc.so (__libc_fatal+16)
    07-04 14:36:18.293 326-326/? A/DEBUG:     #06 pc 00019aed  /system/lib/libc.so (__assert2+20)
    07-04 14:36:18.293 326-326/? A/DEBUG:     #07 pc 0034be3c  /data/app/com.safarifone.waafi-2/lib/arm/libpjsua2.so (pj_thread_this+84)
    07-04 14:36:18.293 326-326/? A/DEBUG:     #08 pc 0034c9b8  /data/app/com.safarifone.waafi-2/lib/arm/libpjsua2.so (pj_mutex_lock+124)
    07-04 14:36:18.293 326-326/? A/DEBUG:     #09 pc 001931c0  /data/app/com.safarifone.waafi-2/lib/arm/libpjsua2.so (PJSUA_LOCK+32)
    07-04 14:36:18.293 326-326/? A/DEBUG:     #10 pc 00194e1c  /data/app/com.safarifone.waafi-2/lib/arm/libpjsua2.so (pjsua_acc_set_user_data+268)
    07-04 14:36:18.293 326-326/? A/DEBUG:     #11 pc 00156464  /data/app/com.safarifone.waafi-2/lib/arm/libpjsua2.so (_ZN2pj7AccountD2Ev+232)
    07-04 14:36:18.293 326-326/? A/DEBUG:     #12 pc 000d6584  /data/app/com.safarifone.waafi-2/lib/arm/libpjsua2.so (_ZN20SwigDirector_AccountD2Ev+116)
    07-04 14:36:18.293 326-326/? A/DEBUG:     #13 pc 000d65fc  /data/app/com.safarifone.waafi-2/lib/arm/libpjsua2.so (_ZN20SwigDirector_AccountD0Ev+20)
    07-04 14:36:18.293 326-326/? A/DEBUG:     #14 pc 00114764  /data/app/com.safarifone.waafi-2/lib/arm/libpjsua2.so (Java_org_pjsip_pjsua2_pjsua2JNI_delete_1Account+76)
    07-04 14:36:18.293 326-326/? A/DEBUG:     #15 pc 000ea539  /system/lib/libart.so (art_quick_generic_jni_trampoline+40)
    07-04 14:36:18.293 326-326/? A/DEBUG:     #16 pc 000e5e41  /system/lib/libart.so (art_quick_invoke_stub_internal+64)
    07-04 14:36:18.293 326-326/? A/DEBUG:     #17 pc 003e92d9  /system/lib/libart.so (art_quick_invoke_static_stub+172)
    07-04 14:36:18.293 326-326/? A/DEBUG:     #18 pc 00101c4c  [stack:32097]

1 个答案:

答案 0 :(得分:1)

看起来GC中的一个PjSip对象是从您注册的线程以外的线程中收集的。

根据文件:

... application ‘’‘MUST immediately destroy PJSUA2 objects using object’s delete() 
method (in Java)’‘’, instead of relying on the GC to clean up the object

所以你必须手动删除PjSip对象,例如:

account.delete();

official documentation

中的GC问题链接