Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Segmentation fault???

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    3

    Segmentatio fault???

    sto realizzando un programma in C (in ambiente Linux), per la manipolazione di file di testo, ma continuo a scontrarmi con l'errore

    "Segmentation fault (core dumped)"

    sapreste spiegarmi il significato di tale messaggio di errore e le sue possibili cause?

    GRAZIE

    PS - compilazione e linkaggio del programma danno esito positivo. l'errore suddetto avviene dopo un numero costante di iterazioni di una funzione del programma (ogni iterazione corrisponde alla manipolazione di un file)

  2. #2
    si è verificato un Overflow... es: una variabile può contenere valori compresi tra [1 e 10] e tu hai inseito valori al di fuori del range.

    hai per caso utilizzato gli array (o vettori di caratteri?)

    posta il codice:
    ...Terrible warlords, good warlords, and an english song

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    3
    in effetti si, uso array di char e char *, ma proprio per questo anch'io ho pensato per prima cosa a loro: ho ricontrollato più volte il codice, ma non trovo il bug.

    (quasi) tutte le funzioni hanno dei char * come argomenti e credo che il bug sia in questi passaggi...

    ma non capisco perchè la stessa funzione non dia problemi alla prima esecuzione (quindi al primo file) e ne dia invece alla 2a esecuzione (2° file, del tutto equivalente al primo)

  4. #4
    Il tuo codice è andato a scrivere fuori dallo spazio di indirizzamento assegnato al processo dal SO.
    Se usi puntatori o cose simili, soprattutto in un ciclo(o iterazione) devi sempre allocare la memoria con malloc o calloc, altrimenti rischi i segmentation fault che sono errori a runtime e non a tempo di compilazione

  5. #5
    Segmentantion faul = Errore rispetto la segmentazione

    Hai scritto fuori dallo spazio di indirizzamento del segmento o (come credo sia in questo caso) hai scritto su uno spazio riservato di sola lettura (come il segmento text). Non e' che hai fatto una roba tipo:

    char *p;
    p = "ciao";
    strcpy(p, "miao");
    oppure
    p[0] = 'a';

    Questi non sono errori di sintassi (quindi il compilatore non te li rileverà) ma essendo la zona text marcata come read-only ed essendo la stringa "ciao" allocata li niente di piu' facile che tu abbia ottenuto quell'errore. Pasta un po di codice.
    bye
    There are 10 kinds of people in the world: who knows the binary numeration and who not

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    3


    uhmm, spero di non aver osato troppo porgendovi i sorgenti (ridotti all'osso) del programma... se è troppo, non guardateli e insultatemi pure, ma quell'invito a pastare del codice è stato irresistibile....

    - archivio ".tar" con tutti i file

    non so se winzip (e affini) gestiscano gli archivi .tar: se no, ecco i singoli file:
    - prototipo.cpp
    - func.cpp
    - defs1.h

    io compilo prototipo.cpp e func.cpp, avvio Make (sto lavorando in ambiente Linux)... tutto ok.

    avvio l'eseguibile con:

    $ ./prototipo -a ./dir1

    RISULTATO: Segmentation fault durante l'eleborazione del 6° file (su 8 presenti della dir1)

    riprovo:

    avvio l'eseguibile con:

    $ ./prototipo -a ./dir2

    RISULTATO: Segmentation fault durante l'eleborazione del 18° file (su 18 presenti della dir2)

    NOTE: dir1 e dir2 sono directory contenenti i file .html da processare (se ci sono altri file verranno ignorati);
    l'opzione -a è inutile ma indispensabile per l'esecuzione del prog: è un residuo della scarnificazione del programma completo per ottenere lo scheletrico prototipo...

    GRAZIE! GRAZIE! GRAZIE!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.