JNI global state and JNI_OnLoad assume a single copy of the runtime per process — statically-linked-per-module embedders (Skip Fuse) end up with N copies and a nil JNI.jni
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Da chiarire
- Stato di attività
- Tranquilla
- Ambito
- backend, build-system
Direzione di ricerca
Inizia da SwiftJNI.swift intorno alla riga 1390 e individua l’inizializzazione di JNI.jni e JNI_OnLoad, quindi esamina la riproduzione collegata in skiptools/skip#716 e i relativi conteggi dei simboli nei sette file .so. Conferma il fallimento tra più moduli e confronta le opzioni di ownership proposte; il lavoro richiede un’invariante concordata o un meccanismo di sharing convalidato sulla riproduzione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Context issue, cross-referencing skiptools/skip#716 (full evidence there: symbol counts showing SwiftJNI statically linked into seven .so files with three competing JNI_OnLoad exports, disproven System.loadLibrary workaround, crash signature).
When an embedder statically links the jni-core runtime into more than one .so in the same process — which is what Skip Fuse's per-module linking does today — JNI.jni exists once per object, JNI_OnLoad initialises only the copy in the library the JVM loaded, and the first use from any other copy fatals at SwiftJNI.swift:1390 (String.fromJavaObject).
Probably a build/packaging question more than a bug in swift-java itself, but worth deciding where the invariant lives: should swift-java (a) document "exactly one copy per process" as a hard requirement, (b) expose an explicit re-initialisation / state-sharing hook for multi-.so embedders, or (c) ship the runtime as a dynamically-linkable core so embedders can share it? Happy to test a direction against our reproduction.
- Lingua principale
- Swift
- Stelle
- 1.3k
- Fork
- 127
- Merge medio
- 2g 14h
- PR unite (30g)
- 5
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di swiftlang/swift-java
-
wrap-java: Optional convenience methods can fail to compile when a parameter shadows the method nameAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
swiftlang/swift-java#945 ·
I maintainer di solito rispondono entro 1 giorno
-
android
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
swiftlang/swift-java#663 · 4 commenti · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 56/100
swiftlang/swift-java#949 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
swiftlang/swift-java#948 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 54/100
swiftlang/swift-java#947 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di swiftlang/swift-java
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
AttilaTheFun/visor#244 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
abue-ammar/tinycast#1819 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: cua-driver skill fails Agent Skills frontmatter validationForse già presa @Mearman l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
follow-up needs-triage S3: minor
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
manaflow-ai/cmux#36856 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
type:defect
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
snowplow/snowplow-ios-tracker#962 ·