Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [C] Bus error

  1. #1
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119

    [C] Bus error

    Ciao, un processo che effettua una ricerca riscorsiva su una directory (E le sottodirectory) dopo diversi istanti di esecuzione termina "generando" un bus error. Da cosa potrebbe dipendere ?
    Risorse (Quali) non piu' disponibili ?

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di /dev/null
    Registrato dal
    May 2004
    Messaggi
    1,936
    Uhm... L'errore che si trova piu' spesso in questo genere di operazioni e' usare la ricorsione sulle dirs "." e ".."...
    In pratica, quando scanni una directory, ti vengono restituiti, oltre agli altri files e directory, anche le dirs . (la dir corrente) e .. (la dir superiore)...
    Quindi se te non effettui nessun controllo avviene che vai a scannare una di queste due dir credendo che sia uno sottodirectory, mentre non lo e' affato...

    Spero di aver capito il tuo problema se no prova a postare l'errore preciso ed un po' del codice interessato


    Ultima modifica ad opera dell'utente /dev/null il 01-01-0001 alle 00:00

  3. #3
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Originariamente inviato da /dev/null
    Uhm... L'errore che si trova piu' spesso in questo genere di operazioni e' usare la ricorsione sulle dirs "." e ".."...
    In pratica, quando scanni una directory, ti vengono restituiti, oltre agli altri files e directory, anche le dirs . (la dir corrente) e .. (la dir superiore)...
    Quindi se te non effettui nessun controllo avviene che vai a scannare una di queste due dir credendo che sia uno sottodirectory, mentre non lo e' affato...

    Spero di aver capito il tuo problema se no prova a postare l'errore preciso ed un po' del codice interessato


    Azz !! Per inserire altri controlli sulle dir (Diritti di prot., etc) ho eliminato il controllo per escludere la directoty corrente e quella padre (. e ..)

    thanks

  4. #4
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    No, no... Il controllo era acnora presente. E poi mi sono accorto che restituisce il bus error "solo" se parte da una root con moltissimi file e sottodirectory (Ad es. /usr).
    In directory di medie dimensioni come /home o altre il processo termina correttamente. Fatto sta che non capisco da cose provenga tale errore.

  5. #5
    Utente di HTML.it L'avatar di /dev/null
    Registrato dal
    May 2004
    Messaggi
    1,936
    Il motivo dell'errore e' sempre lo stesso allora: ci sono troppi file descriptors aperti...
    Prova a reimplementare il ciclo senza usare la ricorsione: se usa quella apre migliaia e migliaia di files ed alla fine il kernel gli invia un bel segnale d'errore...

    Fai una prova cosi': tieni una variabile globale che inizializzi a 0...
    Poi, ogni volta che apri un nuovo file/directory incrimenti tale var e la decrementi quando chiudi un file/directory...
    Ogni ciclata della funzione stampa questa variabile e guarda che valore ha prima che il programma termini...
    Se quella var ha un valore troppo grande l'errore e' sicuramente questo


    Ultima modifica ad opera dell'utente /dev/null il 01-01-0001 alle 00:00

  6. #6
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Originariamente inviato da /dev/null
    Il motivo dell'errore e' sempre lo stesso allora: ci sono troppi file descriptors aperti...
    Prova a reimplementare il ciclo senza usare la ricorsione: se usa quella apre migliaia e migliaia di files ed alla fine il kernel gli invia un bel segnale d'errore...

    Fai una prova cosi': tieni una variabile globale che inizializzi a 0...
    Poi, ogni volta che apri un nuovo file/directory incrimenti tale var e la decrementi quando chiudi un file/directory...
    Ogni ciclata della funzione stampa questa variabile e guarda che valore ha prima che il programma termini...
    Se quella var ha un valore troppo grande l'errore e' sicuramente questo


    good idea !


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.