Errore nel marshalling di una struttura dati (tipo di errore astratto (personalizzato)). Esiste un tipo astratto noto in uso, ovvero Big_int. Comunque quel Marshal va bene. Non c'è codice C personalizzato nell'applicazione. Oltre a Nums, viene utilizzata anche la libreria Unix (tuttavia non credo ci siano oggetti attivi di quel tipo). Stiamo facendo il maresciallo con le chiusure.Quali tipi di libreria standard OCaml non possono essere sottoposti a marshalling?
Sono in uso due (solo) librerie di terze parti: Schema OCS (interprete di schema, puro Ocaml) e Dypgen (parser GLR estendibile, anche puro Ocaml). Il problema è con una nuova funzionalità di Dypgen, che salva un parser esteso in modo dinamico.
Il messaggio di errore Ocaml è quasi inutile (non identifica il tipo astratto con tag personalizzato è il colpevole).
Abbiamo sospettato Lexbuf come colpevole perché contiene una chiusura su un canale Ocaml e non può essere Maresciallo, ma sembra che questo non sia il problema. Quindi la mia domanda è:
Quali componenti di libreria standard non possono essere utilizzati da Marshall?
I valori personalizzati possono avere il puntatore del nome in custom_ops (utilizzato come tag di marshalling). – ygrek
Hm, quindi cosa succede se provi a Maresciallo un array debole? Sto decisamente ricevendo (personalizzato) nella diagnostica. – Yttrill
@Yttrill "Marshal.to_string (Weak.create 3) [] ;;". Risultato: "Eccezione: Invalid_argument" output_value: valore astratto (Abstract) " –