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