Che vuoi dire con "filenameopen non esiste" ?

E' la malloc della stringa filenameopen che fallisce?

Perche' non inserisci delle printf alla fine di ogni fase per controllare "esattamente" dove termina l'esecuzione?