Esce durante la realloc perché la realloc trova la memoria corrotta.

La corruzione della memoria avviene in precedenza e tramite delle istruzioni che ci scrivono dentro. Ecco perché sospetto della fscanf (non della scanf ...).

Hai controllato con precisione che il ciclo legga da file per il numero di volte corretto o "sfora" la memoria allocata?