Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Android app bundle crashes of soloader #76

Closed
Desintegrator opened this issue Apr 13, 2021 · 24 comments
Closed

Android app bundle crashes of soloader #76

Desintegrator opened this issue Apr 13, 2021 · 24 comments

Comments

@Desintegrator
Copy link

All of ours Android apps (React-Native) provided with app bundle (.aab) experiencing with much amount of soloader crashes.
Different devices, different OS versions. Can not reproduce it on our testing devices
Switching to separate apps is not an options since starting from August 2021 app bundle is required.

react versions:

"react": "17.0.1",
"react-native": "0.64.0", (soloader version 0.9.0 here)

Stacktrace 1:

java.io.IOException at (Unknown Source)
com.facebook.soloader.g.<init> (or com.facebook.soloader.FileLocker.<init>)
java.lang.RuntimeException: Unable to create application chat.roulette.MainApplication: java.lang.RuntimeException: java.io.IOException: Resource deadlock would occur
	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6853)
	at android.app.ActivityThread.access$1400(ActivityThread.java:246)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1955)
	at android.os.Handler.dispatchMessage(Handler.java:106)
	at android.os.Looper.loop(Looper.java:236)
	at android.app.ActivityThread.main(ActivityThread.java:7876)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)
Caused by: java.lang.RuntimeException: java.io.IOException: Resource deadlock would occur
	at com.facebook.soloader.SoLoader.g(Unknown Source)
	at chat.roulette.MainApplication.onCreate(Unknown Source)
	at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1193)
	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6848)
	... 8 more
Caused by: java.io.IOException: Resource deadlock would occur
	at sun.nio.ch.FileDispatcherImpl.lock0(Native Method)
	at sun.nio.ch.FileDispatcherImpl.lock(FileDispatcherImpl.java:115)
	at sun.nio.ch.FileChannelImpl.lock(FileChannelImpl.java:1139)
	at java.nio.channels.FileChannel.lock(FileChannel.java:1053)
	at com.facebook.soloader.g.<init>(Unknown Source)
	at com.facebook.soloader.g.c(Unknown Source)
	at com.facebook.soloader.n.b(Unknown Source)
	at com.facebook.soloader.SoLoader.i(Unknown Source)
	at com.facebook.soloader.SoLoader.f(Unknown Source)
	at com.facebook.soloader.SoLoader.e(Unknown Source)
	at com.facebook.soloader.SoLoader.g(Unknown Source)
	... 11 more

Stacktrace 2: (little bit different)

java.lang.RuntimeException: Unable to create application chat.roulette.MainApplication: java.lang.RuntimeException: java.io.IOException: Resource deadlock would occur
	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5506)
	at android.app.ActivityThread.-wrap2(ActivityThread.java)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1595)
	at android.os.Handler.dispatchMessage(Handler.java:110)
	at android.os.Looper.loop(Looper.java:203)
	at android.app.ActivityThread.main(ActivityThread.java:6251)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1073)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:934)
Caused by: java.lang.RuntimeException: java.io.IOException: Resource deadlock would occur
	at com.facebook.soloader.SoLoader.g(Unknown Source)
	at chat.roulette.MainApplication.onCreate(Unknown Source)
	at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1024)
	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5503)
	... 8 more
Caused by: java.io.IOException: Resource deadlock would occur
	at sun.nio.ch.FileDispatcherImpl.lock0(Native Method)
	at sun.nio.ch.FileDispatcherImpl.lock(FileDispatcherImpl.java:99)
	at sun.nio.ch.FileChannelImpl.lock(FileChannelImpl.java:1026)
	at java.nio.channels.FileChannel.lock(FileChannel.java:875)
	at com.facebook.soloader.g.<init>(Unknown Source)
	at com.facebook.soloader.g.c(Unknown Source)
	at com.facebook.soloader.n.b(Unknown Source)
	at com.facebook.soloader.SoLoader.i(Unknown Source)
	at com.facebook.soloader.SoLoader.f(Unknown Source)
	at com.facebook.soloader.SoLoader.e(Unknown Source)
	... 12 more
@simpleton
Copy link
Member

Thanks for reporting. do you have the proguard map or symbolicated backtrace?

@Desintegrator
Copy link
Author

@simpleton I have proguard map located in build/outputs/mapping/release/mapping.txt Where should i share it?

@simpleton
Copy link
Member

You can directly share right here or send to my email simsun[at]fb.com

@Desintegrator
Copy link
Author

@simpleton sent to your email

@Desintegrator
Copy link
Author

@simpleton any updates?

@simpleton
Copy link
Member

@Desintegrator sorry for late reply. I haven't received your email. maybe you can share the mapping snippet in comment? I just wanna de-obfuscate below backtrace. thanks

        at com.facebook.soloader.g.<init>(Unknown Source)
	at com.facebook.soloader.g.c(Unknown Source)
	at com.facebook.soloader.n.b(Unknown Source)
	at com.facebook.soloader.SoLoader.i(Unknown Source)
	at com.facebook.soloader.SoLoader.f(Unknown Source)
	at com.facebook.soloader.SoLoader.e(Unknown Source)
	at com.facebook.soloader.SoLoader.g(Unknown Source)

@Desintegrator
Copy link
Author

Desintegrator commented Jun 2, 2021

@simpleton

com.facebook.soloader.FileLocker -> com.facebook.soloader.g:
    java.io.FileOutputStream mLockFileOutputStream -> a
    java.nio.channels.FileLock mLock -> b
    com.facebook.soloader.FileLocker lock(java.io.File) -> c


com.facebook.soloader.UnpackingSoSource -> com.facebook.soloader.n:
    android.content.Context mContext -> c
    java.util.Map mLibsBeingLoaded -> e
    java.lang.String mCorruptedLib -> d
    int loadLibrary(java.lang.String,int,android.os.StrictMode$ThreadPolicy) -> a
    void prepare(int) -> b
    void access$000(java.io.File,byte) -> g
    void deleteUnmentionedFiles(com.facebook.soloader.UnpackingSoSource$Dso[]) -> h
    void extractDso(com.facebook.soloader.UnpackingSoSource$InputDso,byte[]) -> i
    byte[] getDepsBlock() -> j
    java.lang.Object getLibraryLock(java.lang.String) -> k
    java.io.File getSoStorePath(android.content.Context,java.lang.String) -> l
    com.facebook.soloader.UnpackingSoSource$Unpacker makeUnpacker() -> m
    void prepare(java.lang.String) -> n
    boolean refreshLocked(com.facebook.soloader.FileLocker,int,byte[]) -> o
    void 


com.facebook.soloader.SoLoader -> com.facebook.soloader.SoLoader:
    boolean isSystemApp -> m
    int sFlags -> l
    com.facebook.soloader.ApplicationSoSource sApplicationSoSource -> g
    java.util.HashSet sLoadedLibraries -> h
    int sSoSourcesVersion -> e
    com.facebook.soloader.UnpackingSoSource[] sBackupSoSources -> f
    java.util.concurrent.locks.ReentrantReadWriteLock sSoSourcesLock -> c
    com.facebook.soloader.SoSource[] sSoSources -> d
    java.util.Set sLoadedAndMergedLibraries -> j
    com.facebook.soloader.SoFileLoader sSoFileLoader -> b
    java.util.Map sLoadingLibraries -> i
    boolean SYSTRACE_LIBRARY_LOADING -> a
    com.facebook.soloader.SystemLoadLibraryWrapper sSystemLoadLibraryWrapper -> k
    void assertInitialized() -> a
    boolean checkIfSystemApp(android.content.Context,int) -> b
    void doLoadLibraryBySoName(java.lang.String,int,android.os.StrictMode$ThreadPolicy) -> c
    java.lang.reflect.Method getNativeLoadRuntimeMethod() -> d
    void init(android.content.Context,int) -> e
    void init(android.content.Context,int,com.facebook.soloader.SoFileLoader) -> f
    void init(android.content.Context,boolean) -> g
    void initSoLoader(com.facebook.soloader.SoFileLoader) -> h
    void initSoSources(android.content.Context,int,com.facebook.soloader.SoFileLoader) -> i
    boolean isInitialized() -> j
    boolean loadLibrary(java.lang.String) -> k
    boolean loadLibrary(java.lang.String,int) -> l
    void loadLibraryBySoName(java.lang.String,int,android.os.StrictMode$ThreadPolicy) -> m
    boolean 

Full mapping here

@Desintegrator
Copy link
Author

@simpleton any updates?

@omarkhaled11
Copy link

Any updates on this? I am getting the exact same issue as well

@anishsundarjee
Copy link

getting same issue here as well.

@Desintegrator
Copy link
Author

still waiting for solution

@nb7123
Copy link

nb7123 commented Sep 17, 2021

See the issues REPO

@Desintegrator
Copy link
Author

Desintegrator commented Oct 18, 2021

@simpleton sorry but don't you have any ideas? have we a chance to get a fix?

@simpleton
Copy link
Member

@Desintegrator , sorry for missing you comment. I remember I fixed the issue that @nb7123 mentioned in another issue.

#83

have you tried the latest version of soloader?

@Desintegrator
Copy link
Author

Desintegrator commented Oct 18, 2021

@simpleton nope, will try it soon.
this one to try -- "0.10.1" ?

@Desintegrator
Copy link
Author

@simpleton hmm, last version stored in maven is 0.10.1 from Jan, 2021. looks not fresh enough

@Desintegrator
Copy link
Author

Desintegrator commented Oct 19, 2021

@simpleton I've tried the latest (0.10.1) version. App still reporting this crash.

@simpleton
Copy link
Member

@Desintegrator do you have any sample app that could reproduce your issue?

hmm, last version stored in maven is 0.10.1 from Jan, 2021. looks not fresh enough

we will publish a new version soon, sorry for inconvenience.

@EmilScherdin
Copy link

@simpleton We would also really benefit from a new version as soon as possible. Right now users with new S21 and similar are unable to open our app, and the base just gets larger and larger...

I am happy to help if I can assist in any way with the release.

@Desintegrator
Copy link
Author

Desintegrator commented Oct 25, 2021

I'm gonna to create simplified version of our app (cause NDA a need to remove all API, images, js logic, screens -- im sure it's not important regarding the issue. All native libs will be left)

But anyway i don't know how to reproduce it. It happens within 2-3% of users. Seems like not much but has large impact for app rating at stores

@Desintegrator
Copy link
Author

@Desintegrator
Copy link
Author

@simpleton hello! What about new release and my repo?

@simpleton
Copy link
Member

v0.10.3 should address this issue.

@Jamal-ReachFirst
Copy link

v0.10.3 should address this issue.

No it didn't, it increases the crash rate

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants