wordpress-mobile / wordpress-mobile/WordPress-Android
NoClassDefFoundError: com.sun.jna.Native
Open
Nobody has claimed this yet.
[Pri] Low
[Type] Crash
- Dominant language
- Kotlin
- Stars
- 3.2k
- Forks
- 1.4k
- Avg merge
- 1d 11h
- Merged PRs (30d)
- 69
Description
Sentry Issue: WORDPRESS-ANDROID-QNH
java.lang.UnsatisfiedLinkError: Native library (com/sun/jna/android-aarch64/libjnidispatch.so) not found in resource path (.)
at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:1032)
at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:988)
at com.sun.jna.Native.<clinit>(Native.java:195)
at com.sun.jna.Native.getStructureAlignment(Native.java:829)
at com.sun.jna.Structure.setAlignType(Structure.java:280)
at com.sun.jna.Structure.<init>(Structure.java:197)
at com.sun.jna.Structure.<init>(Structure.java:193)
at com.sun.jna.Structure.<init>(Structure.java:193)
at com.sun.jna.Structure.<init>(Structure.java:180)
at com.sun.jna.Structure.<init>(Structure.java:180)
at com.sun.jna.Structure.<init>(Structure.java:172)
at com.sun.jna.Structure.<init>(Structure.java:172)
at com.goterl.lazysodium.interfaces.SecretStream$State.<init>(SecretStream.java:260)
at com.goterl.lazysodium.interfaces.SecretStream$State$ByReference.<init>(SecretStream.java:262)
at org.wordpress.android.fluxc.model.encryptedlogging.LogEncrypter.encrypt(LogEncrypter.kt:30)
at org.wordpress.android.fluxc.store.EncryptedLogStore.uploadEncryptedLog(EncryptedLogStore.kt:152)
at org.wordpress.android.fluxc.store.EncryptedLogStore.uploadNext(EncryptedLogStore.kt:139)
at org.wordpress.android.fluxc.store.EncryptedLogStore.uploadQueuedEncryptedLogs(EncryptedLogStore.kt:93)
at org.wordpress.android.util.EncryptedLogging$start$1.invokeSuspend(EncryptedLogging.kt:43)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.CoroutineContextKt.withContinuationContext
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:90)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
java.lang.NoClassDefFoundError: com.sun.jna.Native
at com.sun.jna.Native.getStructureAlignment(Native.java:829)
at com.sun.jna.Structure.setAlignType(Structure.java:280)
at com.sun.jna.Structure.<init>(Structure.java:197)
at com.sun.jna.Structure.<init>(Structure.java:193)
at com.sun.jna.Structure.<init>(Structure.java:193)
at com.sun.jna.Structure.<init>(Structure.java:180)
at com.sun.jna.Structure.<init>(Structure.java:180)
at com.sun.jna.Structure.<init>(Structure.java:172)
at com.sun.jna.Structure.<init>(Structure.java:172)
at com.goterl.lazysodium.interfaces.SecretStream$State.<init>(SecretStream.java:260)
at com.goterl.lazysodium.interfaces.SecretStream$State$ByReference.<init>(SecretStream.java:262)
at org.wordpress.android.fluxc.model.encryptedlogging.LogEncrypter.encrypt(LogEncrypter.kt:30)
at org.wordpress.android.fluxc.store.EncryptedLogStore.uploadEncryptedLog(EncryptedLogStore.kt:152)
at org.wordpress.android.fluxc.store.EncryptedLogStore.uploadNext(EncryptedLogStore.kt:139)
at org.wordpress.android.fluxc.store.EncryptedLogStore.handleFailedUpload(EncryptedLogStore.kt:212)
at org.wordpress.android.fluxc.store.EncryptedLogStore.uploadEncryptedLog(EncryptedLogStore.kt:164)
at org.wordpress.android.fluxc.store.EncryptedLogStore.uploadNext(EncryptedLogStore.kt:139)
at org.wordpress.android.fluxc.store.EncryptedLogStore.uploadQueuedEncryptedLogs(EncryptedLogStore.kt:93)
at org.wordpress.android.util.EncryptedLogging$start$1.invokeSuspend(EncryptedLogging.kt:43)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.CoroutineContextKt.withContinuationContext
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:90)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing encryption from org.wordpress.android.fluxc.model.encryptedlogging.LogEncrypter.kt:30 through EncryptedLogStore.kt, where the stack trace shows the failure during encrypted log upload. Reproduce the upload path and inspect how com.sun.jna.Native and the android-aarch64 libjnidispatch.so resource are supplied; done means encrypted logging no longer raises these native-library errors.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, kotlin
- Domain
- mobile, security
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100