VTK: bug in metodo write
edoardolombardi opened this issue · 5 comments
Il metodo write di VTK che prende una stringa come input va in deadlock.
Line 677 in 2b8b5a0
@haysam @andrea-iob potreste risovlerlo oppure togliere direttamente il metodo se non si riesce a sistemarlo? La funzione write senza stringa in input sembra funzionare definendo il nome del file e la directory con i relatvi metodi.
E' strano perchè il metodo non fa altro che memorizzare temporaneamente il vecchio nome, settare il nuovo, scrivere (con la write di default) e poi rimettere il vecchio nome.
In più nel intero modulo non c'è una chiamata MPI e quindi è difficile che le VTK vanno in deadlock.
Per capire qualcosa bisogna avere il codice che crea il problema. Possiamo vederlo nei prossimi giorni insieme.
Ho risolto. Il problema in verità era il nome del file passato come argomento al metodo che pensavamo dovesse contenere la directory, ma in verità viene sovrascritto solo il nome a cui viene preposta la path vecchia.
Se la path deve essere comunque fissata con setDirectory forse conviene o inserire anche l'argomento directory o eliminare questo metodo che prende in argomento il nome e l'utente cambia a proprio piacimento nome directory.
Faccio il push di un nuovo branch in cui ho reso coerenti i VTKWriteMode di default dei due metodi e aggiunto un check sulla bontà del filehandler in testa al metodo write. Vedi tu se ti sfagiola.
Chiudo perché il baco non c'era, restano i dubbi sulle condizioni per la gestione del counter.
Immagino che i default diversi non siano una svista, quando si usa la funzione write con il nome del file è probabile che si stia scrivendo un file al di fuori della storia temporale e che quindi non si voglia incrementare il contatore (@haysam potrà confermare o smentire questa mia supposizione).
A occhio anche la gestione del counter sembra corretta: nel caso "NO_INCREMENT" si riporta il counter al valore dell'ultima scrittura, si scrive il file e poi si rimette il counter al valore iniziale. Non ho fatto prove, sto solo guardando il codice. Se hai notato numerazioni sbagliate aspettiamo il parere di Haysam.
@andrea-iob ok, thanks; mi era oscuro il motivo dei default diversi.
Mò ho capito l'uso del counter. Viene incrementato dopo ogni scrittura non prima.
Non ho notato nessuna numerazione sbagliata, la uso raramente e solo in debug, mi era comparso il dubbio vedendo il codice nel cercare il motivo del deadlock che avevo.