Using SoLoader crashes because phone complains the lib is 32-bit
See original GitHub issueHello. We have a app only ships armabi-v7a binaries. And rely on other abi’s legacy support. But we have this crash log:
java.lang.IllegalStateException: Fatal Exception thrown on Scheduler.Worker thread.
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:62)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:154)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:269)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: "/data/data/com.p1.mobile.putong/lib-main/libsqlite3x.so" is 32-bit instead of 64-bit
at java.lang.Runtime.load(Runtime.java:332)
at java.lang.System.load(System.java:1069)
at com.facebook.soloader.DirectorySoSource.loadLibraryFrom(DirectorySoSource.java:71)
at com.facebook.soloader.DirectorySoSource.loadLibrary(DirectorySoSource.java:42)
at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:299)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:247)
at io.requery.android.database.sqlite.SQLiteDatabase.<clinit>(SQLiteDatabase.java:78)
at com.p1.mobile.android.data.orm.DatabaseStore.db(DatabaseStore.java:111)
at com.p1.mobile.android.data.orm.DatabaseStore.lambda$asyncFetch$52(DatabaseStore.java:334)
at com.p1.mobile.android.data.orm.DatabaseStore.access$lambda$2(DatabaseStore.java)
at com.p1.mobile.android.data.orm.DatabaseStore$$Lambda$3.run(DatabaseStore.java)
at com.p1.mobile.android.app.Au.lambda$io$35(Au.java:183)
at com.p1.mobile.android.app.Au.access$lambda$1(Au.java)
at com.p1.mobile.android.app.Au$$Lambda$2.call(Au.java)
at rx.Observable.unsafeSubscribe(Observable.java:8644)
at rx.internal.operators.OperatorSubscribeOn$1.call(OperatorSubscribeOn.java:94)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
... 7 more
java.lang.UnsatisfiedLinkError: dlopen failed: "/data/data/com.p1.mobile.putong/lib-main/libsqlite3x.so" is 32-bit instead of 64-bit
at java.lang.Runtime.load(Runtime.java:332)
at java.lang.System.load(System.java:1069)
at com.facebook.soloader.DirectorySoSource.loadLibraryFrom(DirectorySoSource.java:71)
at com.facebook.soloader.DirectorySoSource.loadLibrary(DirectorySoSource.java:42)
at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:299)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:247)
at io.requery.android.database.sqlite.SQLiteDatabase.<clinit>(SQLiteDatabase.java:78)
at com.p1.mobile.android.data.orm.DatabaseStore.db(DatabaseStore.java:111)
at com.p1.mobile.android.data.orm.DatabaseStore.lambda$asyncFetch$52(DatabaseStore.java:334)
at com.p1.mobile.android.data.orm.DatabaseStore.access$lambda$2(DatabaseStore.java)
at com.p1.mobile.android.data.orm.DatabaseStore$$Lambda$3.run(DatabaseStore.java)
at com.p1.mobile.android.app.Au.lambda$io$35(Au.java:183)
at com.p1.mobile.android.app.Au.access$lambda$1(Au.java)
at com.p1.mobile.android.app.Au$$Lambda$2.call(Au.java)
at rx.Observable.unsafeSubscribe(Observable.java:8644)
at rx.internal.operators.OperatorSubscribeOn$1.call(OperatorSubscribeOn.java:94)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:154)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:269)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
So using lib-main
only happens if System loader failed. This error happens on a Lenovo z90-7 phone
Issue Analytics
- State:
- Created 7 years ago
- Comments:9 (2 by maintainers)
Top Results From Across the Web
Android ReactNative java.lang.UnsatisfiedLinkError:could find ...
The following SO answer Use 32-bit jni libraries on 64-bit ... to fix crash on Android 11 force "com.facebook.soloader:soloader:0.9.0" } }.
Read more >SoLoader is a native code loader for Android.
Using SoLoader crashes because phone complains the lib is 32-bit. java.lang.IllegalStateException: Fatal Exception thrown on Scheduler.
Read more >iOS Crash Dump Analysis, Second Edition - GitHub Pages
A crash dump in a security library might point out exactly the kind of security issue, and help us correct some data structure...
Read more >Support 64-bit architectures - Android Developers
Older versions of obfuscation SDKs that branch into random offsets of libraries built with BTI can cause apps to crash. Since the instructions...
Read more >Phrack #59 - Magazine papers Exploit
Some reader complained about a little mistake in p59-0x01: phrack:~# head -20 ... If you are targeting Intel, then you are in luck...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
This appears to be due to this line. https://github.com/facebook/SoLoader/blob/master/java/com/facebook/soloader/SysUtil.java#L125. I am looking into changing it.
This is now in master with https://github.com/facebook/SoLoader/commit/c3b57fae6abdca24ee40b7f1e5b4ac34d8926be0