Home › Forum › Informazioni ambiente di sviluppo LogicLab › File REST su disco C corrotto
Taggato: rest fifo
- Questo topic ha 1 risposta, 2 partecipanti ed è stato aggiornato l'ultima volta 1 anno fa da Sergio Bertana.
-
AutorePost
-
Marzo 9, 2023 alle 10:58 am #70781giuliano.brunaPartecipante
Ho un problema su delle CPU MPS054B110, lo stesso programma caricato su tutti moduli CPU esegue:
- Scarica da un server un file txt tramite protocollo FTP e lo salva sia su disco C che D. Questo avviene una volta al giorno o ad ogni riavvio della CPU.
- Invia tramite la funzione REST dei dati ad un server che sono salvati in locale sul disco D tramite un FB FIFOFile su un file nominato “REST.bin”.
Ultimamente diversi di questi file “REST.bin” risultano corrotti o con mancanza di dati, inoltre cancellando il file in modo che il programma lo ricrei da zero all’interno del nuovo file si trovano anche i dati del file txt. Cosa potrebbe causare questo intreccio di dati?
In più al primo avvio non riesce a creare il file “REST.bin” e segnala questo:
15:53:34.327040|RESTClient:Er|FIFOFile Error:10056084, On case:1
Purtroppo però non ho trovato nulla riguardo al codice errore 10056084.
Marzo 10, 2023 alle 3:23 pm #70836Sergio BertanaAmministratore del forumCominciamo con l’errore, se vai alla pagina Elenco errori ed inserisci il numero di errore troverai questa indicazione:
10056084 Indici FIFO non sono corretti file viene ricreato FIFOFile
L’errore stà ad indicare che gli indici del registro FIFO non sono corretti, il fatto che non siano corretti mi fà pensare che in qualche parte del programma vengano sporcati, esempio da puntatori spuntati o da array fuori dimensione. Ora partendo dall’ipotesi degli indici corrotti posso costruire una teoria su cosa succede al file “REST.bin”.
Come in tutt i file systems i dati sul disco non sono mai cancellati ma si opera a livello di FAT, ora quando un nuovo file viene creato questo và a posizionarsi sul disco in una posizione libera, ma quella posizione poteva prima essere stata occupata da un’altro file (magari txt). Il FB FIFOFile scrive i suoi dati dall’inizio del file consecutivamente (Ma per sua natura alloca comunque lo spazio che gli è stato definito). Quindi se guardi il file con un editor vedrai i dati FIFO all’inizio e poi dopo l’ultimo record salvato vedrai il precedente contenuto del disco in quella posizione (magari parti txt di un vecchio file).
La scrittura sul file FIFO è consecutiva quindi tra record FIFO corretti non può esserci il precedente contenuto del disco, ma se gli indici FIFO sono sporcati la scrittura sul disco viene frammentata ed allora anche tra i record FIFO potresti trovarti parti del precedente contenuto del disco.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.