jitsi-meet icon indicating copy to clipboard operation
jitsi-meet copied to clipboard

Android App Crash: java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libjscexecutor.so

Open daniello777 opened this issue 2 years ago • 17 comments

Description:

It worked great in the jitsi SDK version of 2.9.3, though when I upgrade the jitsi SDK to 5.1.0, a crash always occurs whenever I initialize the jitsi SDK and join a meeting room

The crash log:

W/SoLoader: libjscexecutor.so not found on DirectAPKSoSource: 4
    java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__cxa_bad_typeid" referenced by "/data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/base.apk!/lib/arm64-v8a/libjsc.so"...
        at java.lang.Runtime.load0(Runtime.java:939)
        at java.lang.System.load(System.java:1628)
        at com.facebook.soloader.SoLoader$1.load(SoLoader.java:529)
        at com.facebook.soloader.DirectApkSoSource.loadLibrary(DirectApkSoSource.java:77)
        at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:1038)
        at com.facebook.soloader.SoLoader.loadLibraryBySoNameImpl(SoLoader.java:914)
        at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:826)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:773)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:743)
        at com.facebook.react.jscexecutor.JSCExecutor.loadLibrary(JSCExecutor.java:24)
        at com.facebook.react.jscexecutor.JSCExecutor.<clinit>(JSCExecutor.java:20)
        at com.facebook.react.jscexecutor.JSCExecutorFactory.create(JSCExecutorFactory.java:29)
        at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:1112)
        at java.lang.Thread.run(Thread.java:923)
D/SoLoader: libjscexecutor.so not found on /system/lib64
D/SoLoader: libjscexecutor.so not found on /vendor/lib64
E/SoLoader: couldn't find DSO to load: libjscexecutor.so
    	SoSource 0: com.facebook.soloader.DirectorySoSource[root = /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/lib/arm64 flags = 0]
    	SoSource 1: com.facebook.soloader.DirectApkSoSource[root = /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/base.apk!/lib/arm64-v8a]
    	SoSource 2: com.facebook.soloader.DirectorySoSource[root = /system/lib64 flags = 2]
    	SoSource 3: com.facebook.soloader.DirectorySoSource[root = /vendor/lib64 flags = 2]
    	Native lib dir: /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/lib/arm64
     result: 0
E/AndroidRuntime: FATAL EXCEPTION: create_react_context
    Process: com.my.app, PID: 17137
    java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libjscexecutor.so
    	SoSource 0: com.facebook.soloader.DirectorySoSource[root = /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/lib/arm64 flags = 0]
    	SoSource 1: com.facebook.soloader.DirectApkSoSource[root = /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/base.apk!/lib/arm64-v8a]
    	SoSource 2: com.facebook.soloader.DirectorySoSource[root = /system/lib64 flags = 2]
    	SoSource 3: com.facebook.soloader.DirectorySoSource[root = /vendor/lib64 flags = 2]
    	Native lib dir: /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/lib/arm64
     result: 0
        at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:1098)
        at com.facebook.soloader.SoLoader.loadLibraryBySoNameImpl(SoLoader.java:914)
        at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:826)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:773)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:743)
        at com.facebook.react.jscexecutor.JSCExecutor.loadLibrary(JSCExecutor.java:24)
        at com.facebook.react.jscexecutor.JSCExecutor.<clinit>(JSCExecutor.java:20)
        at com.facebook.react.jscexecutor.JSCExecutorFactory.create(JSCExecutorFactory.java:29)
        at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:1112)
        at java.lang.Thread.run(Thread.java:923)
E/JitsiMeetSDK: JitsiMeetUncaughtExceptionHandler FATAL ERROR
    java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libjscexecutor.so
    	SoSource 0: com.facebook.soloader.DirectorySoSource[root = /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/lib/arm64 flags = 0]
    	SoSource 1: com.facebook.soloader.DirectApkSoSource[root = /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/base.apk!/lib/arm64-v8a]
    	SoSource 2: com.facebook.soloader.DirectorySoSource[root = /system/lib64 flags = 2]
    	SoSource 3: com.facebook.soloader.DirectorySoSource[root = /vendor/lib64 flags = 2]
    	Native lib dir: /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/lib/arm64
     result: 0
        at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:1098)
        at com.facebook.soloader.SoLoader.loadLibraryBySoNameImpl(SoLoader.java:914)
        at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:826)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:773)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:743)
        at com.facebook.react.jscexecutor.JSCExecutor.loadLibrary(JSCExecutor.java:24)
        at com.facebook.react.jscexecutor.JSCExecutor.<clinit>(JSCExecutor.java:20)
        at com.facebook.react.jscexecutor.JSCExecutorFactory.create(JSCExecutorFactory.java:29)
        at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:1112)
        at java.lang.Thread.run(Thread.java:923)
    
    java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libjscexecutor.so
    	SoSource 0: com.facebook.soloader.DirectorySoSource[root = /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/lib/arm64 flags = 0]
    	SoSource 1: com.facebook.soloader.DirectApkSoSource[root = /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/base.apk!/lib/arm64-v8a]
    	SoSource 2: com.facebook.soloader.DirectorySoSource[root = /system/lib64 flags = 2]
    	SoSource 3: com.facebook.soloader.DirectorySoSource[root = /vendor/lib64 flags = 2]
    	Native lib dir: /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/lib/arm64
     result: 0
        at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:1098)
        at com.facebook.soloader.SoLoader.loadLibraryBySoNameImpl(SoLoader.java:914)
        at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:826)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:773)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:743)
        at com.facebook.react.jscexecutor.JSCExecutor.loadLibrary(JSCExecutor.java:24)
        at com.facebook.react.jscexecutor.JSCExecutor.<clinit>(JSCExecutor.java:20)
        at com.facebook.react.jscexecutor.JSCExecutorFactory.create(JSCExecutorFactory.java:29)
        at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:1112)
        at java.lang.Thread.run(Thread.java:923)

Steps to reproduce:

initialize the jitsi SDK and join a meeting room, it instantly crashes with the same crash log

Server information:

  • Jitsi Meet version: 5.1.0
  • Operating System: Macos

Client information:

  • Browser / app version: Android 11

daniello777 avatar Jun 28 '22 17:06 daniello777

2.9.3 works great for me, only the latest versions have the above crash. I want to upgrade from 2.9.3 to 5.1.0 because the 2.9.3 doesn't fully support the Android 12. (change targetSDKVersion to 31 to target android 12)

A way to work around the crash when targeting the android 12 is to add android:exported="true" to the <activity> in the build.gradle of the jitsi SDK 2.9.3: (the following code is from the app build.gradle of the android jitsi SDK)

def dropboxActivity = """
          <activity
              android:configChanges="keyboard|orientation"
              android:launchMode="singleTask"
              android:exported="true" (add this line will make the 2.9.3 SDK version support android 12)
              android:name="com.dropbox.core.android.AuthActivity">
            <intent-filter>
              <action android:name="android.intent.action.VIEW" />
              <category android:name="android.intent.category.BROWSABLE" />
              <category android:name="android.intent.category.DEFAULT" />
              <data android:scheme="db-${dropboxAppKey}" />
            </intent-filter>
          </activity>"""

would you mind to help me do that in the 2.9.3 SDK version? I tried to download the 2.9.3 SDK manually (without gradle), import it and modify the build.gradle, though the imported jitsi SDK is not recognized.

Thanks for checking!

daniello777 avatar Jun 28 '22 17:06 daniello777

Hi there!

2.9.3 is ancient, we no longer support it, sorry!

How have you integrated the SDK in your project? (Show the gradle files) 5.1.0 should work fine.

saghul avatar Jun 28 '22 19:06 saghul

I integrated the android jitsi SDK into my project, and the 2.9.3 version worked fine for the past several years, the crash only happens if I upgrade it to a newer version for example the 5.1.0.

here is my app build.gradle file, I added some dependencies related to react native and didn't work out:

buildscript {
    repositories {
        google()

        mavenCentral()
        mavenLocal()
        maven {
            url("$rootDir/../node_modules/react-native/android")
        }
        maven {
            url("$rootDir/../node_modules/jsc-android/dist")
        }
    }

    dependencies {
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1'
        classpath 'com.android.tools:r8:3.0.73'
    }
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'

apply plugin: 'com.google.firebase.crashlytics'

repositories {
    google()

    maven {
        url "https://github.com/jitsi/jitsi-maven-repository/raw/master/releases"
    }

    maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
    maven { url "https://jitpack.io" }
    maven { url 'https://www.jitpack.io' }
    mavenCentral()
    jcenter()
}

dependencies {
    implementation 'org.apache.commons:commons-lang3:3.12.0'
    implementation 'commons-io:commons-io:2.11.0'
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.10.2'

    //! network
    implementation 'com.squareup.okhttp3:okhttp:3.14.9'
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'

    //! flexbox layout, used for tracks badges listing in session list
    implementation 'com.google.android.flexbox:flexbox:3.0.0'

    //! support libraries
    implementation 'androidx.multidex:multidex:2.0.1'
    implementation 'androidx.legacy:legacy-support-v13:1.0.0'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'androidx.vectordrawable:vectordrawable-animated:1.1.0'
    implementation 'androidx.browser:browser:1.4.0'
    implementation 'androidx.appcompat:appcompat:1.4.0'
    implementation 'androidx.recyclerview:recyclerview:1.2.1'
    implementation 'androidx.gridlayout:gridlayout:1.0.0'
    implementation 'androidx.exifinterface:exifinterface:1.3.3'
    implementation 'androidx.emoji:emoji-appcompat:1.1.0'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.2'

    //! play services
    implementation 'com.google.android.gms:play-services-analytics:18.0.0'
    implementation 'com.google.android.gms:play-services-maps:18.0.1'

    //! firebase & crashlytics
    implementation 'com.google.firebase:firebase-core:20.0.2'
    implementation 'com.google.firebase:firebase-analytics:20.0.2'
    implementation 'com.google.firebase:firebase-messaging:23.0.0'
    implementation 'com.google.firebase:firebase-crashlytics:18.2.6'
    implementation 'com.google.firebase:firebase-perf:20.0.4'

    implementation "androidx.camera:camera-camera2:1.0.0-beta11"
    implementation "androidx.camera:camera-lifecycle:1.0.0-beta11"
    implementation "androidx.camera:camera-view:1.0.0-alpha18"

    //! XMPP
    implementation 'org.igniterealtime.smack:smack-android:4.1.9'
    implementation 'org.igniterealtime.smack:smack-tcp:4.1.9'
    implementation 'org.igniterealtime.smack:smack-im:4.1.9'
    implementation 'org.igniterealtime.smack:smack-extensions:4.1.9'

    //! Testing
    testImplementation 'junit:junit:4.13.2'
    testImplementation 'org.powermock:powermock-module-junit4:2.0.9'
    testImplementation 'org.powermock:powermock-api-mockito2:2.0.9'
    testImplementation 'androidx.arch.core:core-testing:2.1.0'
    testImplementation "com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0"
    testImplementation "io.mockk:mockk:1.12.1"
    testImplementation 'org.json:json:20201115'

    configurations {
        all*.exclude group: 'xpp3', module: 'xpp3'
        all*.exclude module: 'httpclient'
        all*.exclude module: 'commons-logging'
        all*.exclude group: 'com.google.firebase', module: 'firebase-core'

        all {
            resolutionStrategy {
                force 'androidx.media:media:1.0.0'
            }
        }
    }

    implementation "androidx.core:core-ktx:1.7.0"
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'

    implementation project(path: ':zoom_commonlib')
    implementation project(path: ':zoom_mobilertc')

    implementation "com.google.crypto.tink:tink-android:1.5.0"
    implementation "androidx.security:security-crypto:1.1.0-alpha03"
    implementation "com.google.android.exoplayer:exoplayer-core:2.16.1"
    implementation "com.google.android.exoplayer:exoplayer-ui:2.16.1"
    implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
    implementation "com.google.code.gson:gson:2.8.6"
    implementation "com.github.bumptech.glide:annotations:4.12.0"
    implementation "androidx.window:window:1.0.0"
    implementation "androidx.window:window-java:1.0.0"
    implementation "org.jetbrains.kotlin:kotlin-stdlib:1.6.0"
    implementation "com.airbnb.android:lottie:4.0.0"

    //! jitsi SDK
    implementation ('org.jitsi.react:jitsi-meet-sdk:5.1.0') { transitive = true }
    implementation 'org.webkit:android-jsc:+'
    implementation 'com.facebook.soloader:soloader:0.6.1'
    api 'com.facebook.react:react-native:+'
    implementation 'com.facebook.fresco:animated-gif:2.5.0'
    implementation 'com.dropbox.core:dropbox-core-sdk:4.0.1'
    implementation 'com.jakewharton.timber:timber:4.7.1'
    implementation 'com.squareup.duktape:duktape-android:1.3.0'
    implementation "androidx.startup:startup-runtime:1.1.0"

    def room_version = "2.4.1"
    implementation("androidx.room:room-runtime:$room_version")
    annotationProcessor "androidx.room:room-compiler:$room_version"
    implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1")
    implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.4.1")
    kapt("androidx.room:room-compiler:$room_version")
    implementation("androidx.room:room-ktx:$room_version")
    implementation "androidx.room:room-rxjava3:$room_version"

    def composeVersion = "1.0.5"
    implementation "androidx.compose.runtime:runtime:$composeVersion"
    implementation "androidx.compose.ui:ui:$composeVersion"
    implementation "androidx.compose.foundation:foundation:$composeVersion"
    implementation "androidx.compose.foundation:foundation-layout:$composeVersion"
    implementation "androidx.compose.material:material:$composeVersion"
    implementation "androidx.compose.runtime:runtime-livedata:$composeVersion"
    implementation "androidx.compose.ui:ui-tooling:$composeVersion"
    implementation "com.google.android.material:compose-theme-adapter:$composeVersion"
    implementation "androidx.activity:activity-compose:1.4.0"
}

android {
    compileSdkVersion 31

    dexOptions {
        jumboMode = true
        javaMaxHeapSize "4g"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        applicationId "com.my.app"
        minSdkVersion 23
        targetSdkVersion 31
        versionCode 1100
        versionName "9.9.9"
        multiDexEnabled true

        ndk {
            abiFilters = []
            abiFilters.addAll(['armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'])
        }
    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/INDEX.LIST'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/dependencies.txt'
        exclude 'META-INF/LGPL2.1'

        pickFirst 'lib/x86/libc++_shared.so'
        pickFirst 'lib/arm64-v8a/libc++_shared.so'
        pickFirst 'lib/x86_64/libc++_shared.so'
        pickFirst 'lib/armeabi-v7a/libc++_shared.so'

        pickFirst '**/armeabi-v7a/libc++_shared.so'
        pickFirst '**/x86/libc++_shared.so'
        pickFirst '**/arm64-v8a/libc++_shared.so'
        pickFirst '**/x86_64/libc++_shared.so'
        pickFirst '**/x86/libjsc.so'
        pickFirst '**/armeabi-v7a/libjsc.so'
    }

    buildTypes {
        release {
            minifyEnabled false
            zipAlignEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
        debug {
            zipAlignEnabled true
        }
    }

    lintOptions {
        lintConfig file("lint.xml")
    }

    //! enable the Jetpack Compose
    buildFeatures {
        compose true
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
    composeOptions {
        kotlinCompilerExtensionVersion "1.0.5"
    }

}


apply plugin: 'com.google.gms.google-services'

apply plugin: 'com.jaredsburrows.license'

apply plugin: 'org.owasp.dependencycheck'

dependencyCheck {
    failBuildOnCVSS = 1
    suppressionFile = 'config/dependency_check/suppressions.xml'
}

project.ext.react = [
        enableHermes: false,
        deleteDebugFilesForVariant: { false },
        enableVmCleanup: false,
        entryFile: "index.js",
]

Thanks for help check!

daniello777 avatar Jun 30 '22 17:06 daniello777

Why are you specifying react native dependencies by hand instead of allowing Jitsi Meet to pull them?

saghul avatar Jun 30 '22 17:06 saghul

I am facing the exact same issue.

packagingOptions { pickFirst 'lib/x86/libc++_shared.so' pickFirst 'lib/arm64-v8a/libc++_shared.so' pickFirst 'lib/x86_64/libc++_shared.so' pickFirst 'lib/armeabi-v7a/libc++_shared.so' }

I have included these things in my app level gradle for some conflicting with others library. @saghul please try to run your code with these 4 lines. Then you will definitely face this problem. And please provide us a solution.

amankumarchoudhary avatar Jul 01 '22 11:07 amankumarchoudhary

What problem do you run into, if you remove them?

saghul avatar Jul 01 '22 11:07 saghul

2 files found with path 'lib/arm64-v8a/libc++_shared.so'

like for all 4 files

amankumarchoudhary avatar Jul 01 '22 12:07 amankumarchoudhary

Do you have any other react native dependencies, aside from those pulled in by our SDK?

saghul avatar Jul 01 '22 12:07 saghul

I have included zoom aar file as well. I think these include those files.

My code works fine with jitsi 2.10.0. But after 3+. I am getting error

amankumarchoudhary avatar Jul 01 '22 12:07 amankumarchoudhary

Have you tried adding the missing library to the pickFirst list too?

saghul avatar Jul 01 '22 12:07 saghul

I have added the pickFirst list only in my app level gradle.

amankumarchoudhary avatar Jul 01 '22 15:07 amankumarchoudhary

Same error?

saghul avatar Jul 01 '22 15:07 saghul

Why are you specifying react native dependencies by hand instead of allowing Jitsi Meet to pull them?

I didn't specify the react native dependencies at the very beginning, and I still got the crash. I added them because the crash log says that the react native library has some issue so then I manually add them in the gradle file, and it makes no difference, I'm still getting the same crash.

I also have to specify the following because of the Zoom SDK:

packagingOptions {
pickFirst 'lib/x86/libc++_shared.so'
pickFirst 'lib/arm64-v8a/libc++_shared.so'
pickFirst 'lib/x86_64/libc++_shared.so'
pickFirst 'lib/armeabi-v7a/libc++_shared.so'
}

daniello777 avatar Jul 01 '22 16:07 daniello777

Same error?

Yes

amankumarchoudhary avatar Jul 01 '22 16:07 amankumarchoudhary

I honestly don't know what's going on there.

If you can create a small projects that reproduces the issue I'll take a look.

saghul avatar Jul 01 '22 17:07 saghul

Any news? This is also happening to us only on release builds for Android.

rodcrespo avatar Jul 08 '22 15:07 rodcrespo

Any news? This is also happening to us only on release builds for Android.

How did you integrate the SDK? Do you have a small sample project that can reproduce the issue?

saghul avatar Jul 08 '22 16:07 saghul

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

github-actions[bot] avatar Sep 21 '23 01:09 github-actions[bot]