Segmentation Fault su fclose()
Moderatore: Staff
Regole del forum
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
- targzeta
- Iper Master

- Messaggi: 6643
- Iscritto il: gio 3 nov 2005, 14:05
- Nome Cognome: Emanuele Tomasi
- Slackware: 64-current
- Kernel: latest stable
- Desktop: IceWM
- Località: Carpignano Sal. (LE) <-> Pisa
Allora,Blizzard ha scritto:niente
l'errore è qui:
Codice: Seleziona tutto
memset(temp,0,2048);Codice: Seleziona tutto
memset(temp,0,n);Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
- Blizzard
- Master

- Messaggi: 1509
- Iscritto il: mar 2 gen 2007, 22:53
- Nome Cognome: Giovanni Santostefano
- Slackware: 12.2
- Kernel: 2.6.27.7-smp
- Desktop: Fluxbox
- Contatta:
ciao!
hai immensamente ragione!!!
Primo perchè avevo scritto proprio una cavolata di quelle enormi!
e Secondo perchè in un modo o nell'altro mi esplodeva la fclose e soprattutto solo in quella sezione di codice
(i misteri dei buffer overflow)
Ti metto uno special thanks sul CVS update che faccio adesso
ciao
Gio
hai immensamente ragione!!!
Primo perchè avevo scritto proprio una cavolata di quelle enormi!
e Secondo perchè in un modo o nell'altro mi esplodeva la fclose e soprattutto solo in quella sezione di codice
Ti metto uno special thanks sul CVS update che faccio adesso
ciao
Gio
- targzeta
- Iper Master

- Messaggi: 6643
- Iscritto il: gio 3 nov 2005, 14:05
- Nome Cognome: Emanuele Tomasi
- Slackware: 64-current
- Kernel: latest stable
- Desktop: IceWM
- Località: Carpignano Sal. (LE) <-> Pisa
Se è una domanda, la risposta è semplice, dal momento che, come hai detto tu, andavi in buffer overflow, ci sono due possibili scenari:Blizzard ha scritto:...
e Secondo perchè in un modo o nell'altro mi esplodeva la fclose e soprattutto solo in quella sezione di codice(i misteri dei buffer overflow)...
1) Il kernel ti dà un segfault appena vai in buffer owerflow, questo perchè accedi ad un area di memoria che non è tua.
2) Prima o poi andrai in segfault, il caso più frequente. Visto che hai sovrascritto area di memoria che ti apparteneva, hai probabilmente eliminato informazioni che ti servivano e che non andavano modificate (come ad esempio modificare la locazione di memoria della variabile stream), quando proverai ad accedere a questi dati non troverai più quello che ti aspettavi e, se erano puntatori, ora punteranno chissà dove, quindi, probabile segfault.
Come avrai capito il tuo caso era il secondo
Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama