crossle / janus-gateway-android

Implements Janus gateway video room on Android
MIT License
60 stars 30 forks source link

strangle error from lib webrtc #23

Open fukemy opened 3 years ago

fukemy commented 3 years ago

hello, today i found sometime my app crash, after check log with "No filter" in Android Studio, i found this error log:


2020-12-23 17:19:28.761 11058-12034/com.civix.link E/rtc: #
    # Fatal error in ../../webrtc/rtc_base/event_tracer.cc, line 372
    # last system error: 0
    # Check failed: rtc::AtomicOps::CompareAndSwapPtr( &g_event_logger, static_cast<EventLogger*>(nullptr), new EventLogger()) == nullptr
    # 
    #
2020-12-23 17:19:28.763 11058-12034/com.civix.link A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 12034 (pool-25-thread-)
2020-12-23 16:25:11.941 3397-4190/com.civix.link E/libc++abi: Pure virtual function called!
2020-12-23 16:25:11.942 3397-4190/com.civix.link A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 4190 (ModuleProcessTh)
2020-12-23 16:25:12.008 811-4409/? D/QCamera2HWI: nightMode 0,CurBrightnessStatus 0,pme->mFlashNeeded=0,callPluginProcess
2020-12-23 16:25:12.140 4465-4465/? I/crash_dump32: obtaining output fd from tombstoned
2020-12-23 16:25:12.140 1048-1048/? I//system/bin/tombstoned: received crash request for pid 3397
2020-12-23 16:25:12.144 4465-4465/? I/crash_dump32: performing dump of process 3397 (target tid = 4190)
2020-12-23 16:25:12.145 4465-4465/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
2020-12-23 16:25:12.145 4465-4465/? A/DEBUG: Build fingerprint: 'SHARP/FS8010_00WW/SS2:8.0.0/OPR1.170623.027/00WW_2_080:user/release-keys'
2020-12-23 16:25:12.145 4465-4465/? A/DEBUG: Revision: '0'
2020-12-23 16:25:12.145 4465-4465/? A/DEBUG: ABI: 'arm'
2020-12-23 16:25:12.145 4465-4465/? A/DEBUG: pid: 3397, tid: 4190, name: ModuleProcessTh  >>> com.civix.link <<<
2020-12-23 16:25:12.145 4465-4465/? A/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
2020-12-23 16:25:12.159 4465-4465/? A/DEBUG: Abort message: 'Pure virtual function called!'
2020-12-23 16:25:12.159 4465-4465/? A/DEBUG:     r0 00000000  r1 0000105e  r2 00000006  r3 00000008
2020-12-23 16:25:12.159 4465-4465/? A/DEBUG:     r4 00000d45  r5 0000105e  r6 a168be38  r7 0000010c
2020-12-23 16:25:12.159 4465-4465/? A/DEBUG:     r8 00000003  r9 cdea7c91  sl 00000000  fp a833d720
2020-12-23 16:25:12.159 4465-4465/? A/DEBUG:     ip 00000000  sp a168be28  lr ec0333b7  pc ec063a54  cpsr 200e0010
2020-12-23 16:25:12.172 4465-4465/? A/DEBUG: backtrace:
2020-12-23 16:25:12.172 4465-4465/? A/DEBUG:     #00 pc 0004aa54  /system/lib/libc.so (tgkill+12)
2020-12-23 16:25:12.172 4465-4465/? A/DEBUG:     #01 pc 0001a3b3  /system/lib/libc.so (abort+54)
2020-12-23 16:25:12.172 4465-4465/? A/DEBUG:     #02 pc 000329c9  /system/lib/vndk-sp/libc++.so (abort_message+88)
2020-12-23 16:25:12.172 4465-4465/? A/DEBUG:     #03 pc 0004bc97  /system/lib/vndk-sp/libc++.so (__cxa_pure_virtual+6)
2020-12-23 16:25:12.172 4465-4465/? A/DEBUG:     #04 pc 0032f91f  /data/app/com.civix.link-aapo3L7H91rFZkDBkBch2A==/lib/arm/libjingle_peerconnection_so.so
2020-12-23 16:25:12.172 4465-4465/? A/DEBUG:     #05 pc 0013c293  /data/app/com.civix.link-aapo3L7H91rFZkDBkBch2A==/lib/arm/libjingle_peerconnection_so.so
2020-12-23 16:25:12.172 4465-4465/? A/DEBUG:     #06 pc 00209877  /data/app/com.civix.link-aapo3L7H91rFZkDBkBch2A==/lib/arm/libjingle_peerconnection_so.so
2020-12-23 16:25:12.172 4465-4465/? A/DEBUG:     #07 pc 00202625  /data/app/com.civix.link-aapo3L7H91rFZkDBkBch2A==/lib/arm/libjingle_peerconnection_so.so
2020-12-23 16:25:12.172 4465-4465/? A/DEBUG:     #08 pc 0020265f  /data/app/com.civix.link-aapo3L7H91rFZkDBkBch2A==/lib/arm/libjingle_peerconnection_so.so
2020-12-23 16:25:12.172 4465-4465/? A/DEBUG:     #09 pc 0020b4d5  /data/app/com.civix.link-aapo3L7H91rFZkDBkBch2A==/lib/arm/libjingle_peerconnection_so.so
2020-12-23 16:25:12.172 4465-4465/? A/DEBUG:     #10 pc 0020b69f  /data/app/com.civix.link-aapo3L7H91rFZkDBkBch2A==/lib/arm/libjingle_peerconnection_so.so
2020-12-23 16:25:12.172 4465-4465/? A/DEBUG:     #11 pc 00214c9d  /data/app/com.civix.link-aapo3L7H91rFZkDBkBch2A==/lib/arm/libjingle_peerconnection_so.so
2020-12-23 16:25:12.172 4465-4465/? A/DEBUG:     #12 pc 002285d9  /data/app/com.civix.link-aapo3L7H91rFZkDBkBch2A==/lib/arm/libjingle_peerconnection_so.so
2020-12-23 16:25:12.172 4465-4465/? A/DEBUG:     #13 pc 0012c087  /data/app/com.civix.link-aapo3L7H91rFZkDBkBch2A==/lib/arm/libjingle_peerconnection_so.so
2020-12-23 16:25:12.172 4465-4465/? A/DEBUG:     #14 pc 0012c0e3  /data/app/com.civix.link-aapo3L7H91rFZkDBkBch2A==/lib/arm/libjingle_peerconnection_so.so
2020-12-23 16:25:12.172 4465-4465/? A/DEBUG:     #15 pc 00047d43  /system/lib/libc.so (_ZL15__pthread_startPv+22)
2020-12-23 16:25:12.172 4465-4465/? A/DEBUG:     #16 pc 0001ae7b  /system/lib/libc.so (__start_thread+34)

Really big problem that i have found, i dont know why it appear, first time i think that becase the "rtc frame" still passed but the renderer is null, but not.

Here is my close activity function, i tried to set try catch but unlucky it's not working :(

override fun onDestroy() {
        Log.e(TAG, "on destroy")
        updateMediaContactStatus(AppParam.AX_ROOM_CALLING_ANSWER_Stop)
        NotificationUtils.dismissAllNotificaton(this@SingleCallScreen)
        window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
        super.onDestroy()
        try {
            EventBus.getDefault().unregister(this)
        } catch (e: Exception) {
            e.printStackTrace()
        }
        try {
            stopJanus()
        } catch (e: Exception) {
            e.printStackTrace()
        }
        try {
            rootEglBase?.release()
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }

here is stopJanus function

 private fun stopJanus() {
        if (::roomJanusInfor.isInitialized) {
            peerConnectionClient?.disableSpeaker(this@SingleCallScreen)
            unPublicMedia()

            mWebSocketChannel?.release()
            mWebSocketChannel = null

            peerConnectionClient?.close()
            peerConnectionClient = null

            local_render.release()
            main_render.release()
        }
    }

Can u help me to see what wrong? Thanks

fukemy commented 3 years ago

can u provide what version of "libjingle"? I tried to

implementation 'io.pristine:libjingle:11139@aar'

but class PeerConnectionClient got many error

crossle commented 3 years ago

If you wanna use the latest version, you can use google gradle or got the new aar from https://github.com/MixinNetwork/android-app/tree/master/app/libs

fukemy commented 3 years ago

thanks you for fast reply, let me try

fukemy commented 3 years ago

hmm, new library make more changes than i think, that didnt use videoRenderer anymore, i tried so hard to make it work but not working, so i decided to used current library :(. after 1 day i found the problem is the remote renderer still got frame ( but frame size 0), it's cause 4 time then crash app. So i need to release remote frame and it's seem working, but i need check more, thanks

fukemy commented 3 years ago

i changed to. google webrtc then this problem disappear.