Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Crash on class com.goterl.lazysodium.interfaces.SecretStream$State$ByReference

Abierto
#27 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Necesita aclaración
Estado de actividad
Estancado
Stack tecnológico
java, kotlin

Línea de trabajo

Comienza con LogEncrypter.kt en las líneas 27 y 58; después inspecciona SecretStream.State y su tipo ByReference en lazysodium-java. Compara el fallo con el problema de incompatibilidad de JNA 5.17.0 enlazado y reproduce la ruta de cifrado de init-push. Se considera terminado cuando las subidas de logs cifrados ya no se bloqueen por errores de orden de campos de Structure.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug

We got few crashes in WCAndroid.

java.lang.Error: Structure.getFieldOrder() on class com.goterl.lazysodium.interfaces.SecretStream$State$ByReference returns names ([_pad, k, nonce]) which do not match declared field names ([_pad, k])
    at com.sun.jna.Structure.getFields(Structure.java:1161)
    at com.sun.jna.Structure.deriveLayout(Structure.java:1340)
    at com.sun.jna.Structure.calculateSize(Structure.java:1237)
    at com.sun.jna.Structure.allocateMemory(Structure.java:420)
    at com.sun.jna.Structure.ensureAllocated(Structure.java:396)
    at com.sun.jna.Structure.ensureAllocated(Structure.java:386)
    at com.sun.jna.Structure.write(Structure.java:795)
    at com.sun.jna.Structure.autoWrite(Structure.java:2360)
    at com.goterl.lazysodium.Sodium.crypto_secretstream_xchacha20poly1305_init_push(Sodium.java)
    at com.goterl.lazysodium.LazySodium.cryptoSecretStreamInitPush(LazySodium.java:1284)
    at com.automattic.encryptedlogging.model.encryptedlogging.LogEncrypter.buildHeader(LogEncrypter.kt:58)
    at com.automattic.encryptedlogging.model.encryptedlogging.LogEncrypter.encrypt(LogEncrypter.kt:28)
    at com.automattic.encryptedlogging.store.EncryptedLogStore.uploadEncryptedLog(EncryptedLogStore.kt:138)
    at com.automattic.encryptedlogging.store.EncryptedLogStore.uploadNext(EncryptedLogStore.kt:118)
    at com.automattic.encryptedlogging.store.EncryptedLogStore.access$isUploadAvailable(EncryptedLogStore.kt:33)
    at com.automattic.encryptedlogging.store.EncryptedLogStore.access$uploadNext(EncryptedLogStore.kt:33)
    at com.automattic.encryptedlogging.store.EncryptedLogStore$uploadNext$1.invokeSuspend(EncryptedLogStore.kt:0)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
    at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:124)
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:89)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:820)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:717)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:704)

and/or...

java.lang.Error: Structure.getFieldOrder() on class com.goterl.lazysodium.interfaces.SecretStream$State$ByReference returns names ([_pad, k, nonce]) which do not match declared field names ([_pad, nonce])
    at com.sun.jna.Structure.getFields(Structure.java:1161)
    at com.sun.jna.Structure.deriveLayout(Structure.java:1340)
    at com.sun.jna.Structure.calculateSize(Structure.java:1237)
    at com.sun.jna.Structure.calculateSize(Structure.java:1183)
    at com.sun.jna.Structure.allocateMemory(Structure.java:433)
    at com.sun.jna.Structure.<init>(Structure.java:223)
    at com.sun.jna.Structure.<init>(Structure.java:211)
    at com.sun.jna.Structure.<init>(Structure.java:198)
    at com.sun.jna.Structure.<init>(Structure.java:190)
    at com.goterl.lazysodium.interfaces.SecretStream$State.<init>(SecretStream.java:260)
    at com.goterl.lazysodium.interfaces.SecretStream$State$ByReference.<init>(SecretStream.java:262)
    at com.automattic.encryptedlogging.model.encryptedlogging.LogEncrypter.encrypt(LogEncrypter.kt:27)
    at com.automattic.encryptedlogging.store.EncryptedLogStore.uploadEncryptedLog(EncryptedLogStore.kt:138)
    at com.automattic.encryptedlogging.store.EncryptedLogStore.uploadNext(EncryptedLogStore.kt:118)
    at com.automattic.encryptedlogging.store.EncryptedLogStore.access$isUploadAvailable(EncryptedLogStore.kt:33)
    at com.automattic.encryptedlogging.store.EncryptedLogStore.access$uploadNext(EncryptedLogStore.kt:33)
    at com.automattic.encryptedlogging.store.EncryptedLogStore$uploadNext$1.invokeSuspend(EncryptedLogStore.kt:0)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
    at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:124)
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:89)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:820)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:717)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:704)

...plus other combinations like that, ie [_pad], [k, nonce], versus [_pad, k, nonce], although less frequent... 🤔

Reports:

FYI: jna 5.17.0 Incompatibility with lazysodium-java 5.2.0 #142

Lenguaje dominante
Kotlin
Estrellas
3
Forks
2
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de Automattic/EncryptedLogging

Todos los issues de Automattic/EncryptedLogging

Issues similares

Más issues de Kotlin

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.