pythonnet / pythonnet/pythonnet

Calling `len()` or `__len()__` on a System.Array after a domain reload causes Exceptions and/or crashes

Aperta
#2,171 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
C#
Stelle
5.5k
Fork
780
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Environment
  • Pythonnet version: 3.0.0/3.0.1
  • Python version: 3.10.6
  • Operating System: windows 10
  • .NET Runtime: mono/Unity, but repros on non-mono too.
Details

Calling len() or __len()__ on an array (like string[]) object after a domain reload results in either a DomainUnloadedException or an AccessViolationException (and sometimes, other types of exceptions). In Unity, this always result in a crash.

I've tried to debug, but couldn't find a solid lead. My hunch is that the slot doesn't get properly set/reset on domain reload.

The example is easier to see with a unit test: https://github.com/Unity-Technologies/pythonnet/tree/array_len_reload

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia con la riproduzione del test unitario sul branch array_len_reload ed esegui len() e __len__() su un System.Array dopo un ricaricamento del dominio. Traccia la chiamata alla lunghezza dell'array attraverso il confine del ricaricamento; il lavoro è completato quando la chiamata non genera più eccezioni relative al ricaricamento né arresti anomali, anche con Unity/Mono.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
csharp, python
Ambito
backend
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.