wordpress-mobile / wordpress-mobile/WordPress-Android

NoClassDefFoundError: com.sun.jna.Native

Open
#20,537 1 comment 0 reactions 0 assignees View on GitHub

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.