Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: bonmario - Novembre 27, 2024, 01:05:48 pm

Titolo: Problema in programma con Thread
Inserito da: bonmario - Novembre 27, 2024, 01:05:48 pm
Ciao a tutti,
da qualche settimana ho un problema che mi perseguita ...

Il mio programma che uso per fare i backup giornalieri, ogni tanto, mi da l'errore che si vede nell'immagine allegata.
Sto cercando di trovare il problema da un bel po, ma non ci sono ancora riuscito.

Qualcuno di voi mi sa dire il significato di quell'errore?
Al momento l'unica cosa che do per certo, è che uno dei thread lanciati si pianta e viene segnalato quell'errore, ma non ho ancora individuato nemmeno il punto esatto che lo genera !


Grazie, Mario
Titolo: Re:Problema in programma con Thread
Inserito da: DragoRosso - Novembre 27, 2024, 02:31:58 pm
Quella funzione (CheckSynchronize) viene usata per "sincronizzare" tutti i thread con i l"Thread Principale".

Deve essere usata solo nelle applicazioni console (e in quelle deve assolutamente essere usata se ci sono Thread che girano).

E' una funzione che viene chiamata dal Thread Principale per eseguire ciò che un Thread in "background" vuole comunicare o eseguire al suo interno.

Se hai quell'errore è probabile che stai eseguendo CheckSynchronize da un Thread, oppure che da un Thread hai chiamato direttamente una funzione NON USABILE NEI THREAD senza usare il metodo "Synchronize" o il metodo "Queue".

Ciao.

P.S.: ciò è tipico quando si usano le LCL e si chiama un metodo LCL direttamente da un Thread.
Titolo: Re:Problema in programma con Thread
Inserito da: nomorelogic - Novembre 27, 2024, 04:12:22 pm
Quando dici che a sollevare l'errore è "uno dei thread" vuole comunque dire che ci sono molti thread dove invece quel problema non si verifica.

Puoi fare un censimento nel tuo sorgente per vedere in quanti posti (Classi) è chiamato CheckSyncronize
e farci vedere la dichiarazione della classe e qualche riga di codice che riguarda l'invocazione?
Titolo: Re:Problema in programma con Thread
Inserito da: bonmario - Novembre 27, 2024, 06:00:10 pm
Ciao, cerco di rispondere a tutti e 2.

Ho fatto una ricerca, ed in nessuno dei "miei sorgenti" chiamo CheckSynchronize.
Al momento la cosa mi ha stupito, però poi ho verificato alcune date, ed il problema è comparso più o meno dopo l'ultimo aggiornamento che ho fatto dei sorgenti di Lazarus.
A fine aggiornamento, da scemo, avevo fatto una ricompilata generale di tutti i progetti.
Quindi, il dubbio che mi viene, è che la CheckSynchronize sia richiamata da qualche sorgente di Lazarus.

P.S. Il mio programma in questione, fa tutti i giorni il salvataggio delle stesse directories, e la cosa strana, è che spesso per una o 2 settimane non mi da problemi !!!


Magari nei prossimi giorni provo ad aggiornarmi ancora, e vedere se magari si risolve così !

Grazie, Mario
Titolo: Re:Problema in programma con Thread
Inserito da: bonmario - Dicembre 06, 2024, 01:18:05 pm
Mistero risolto ... ma il problema che lo genera no !!!

Nel codice, fin da quando avevo creato questo programma, quando lo zip va in errore per motivi dipendenti dal comando "zip.exe" che lancio, emetto un errore.
Questo errore non era mai capitato fino a qualche mese fa, ed in questo periodo capita in maniera random.
Il motivo dell'emissione dell'errore relativo a CheckSynchronize, è che la procedurina che emette l'errore, a causa di una svista, la richiamavo diretta, e non con la "Synchronize".
Adesso mi rimane da capire perché il comando zip va in errore, in maniera random, nel senso che non lo fa sempre, e quando lo fa, raramente la directory che sta zippando è la stessa della volta prima ...

Grazie, Mario