Grazie mille per la pronta risposta, forse ho risolto. Vorrei però una conferma.

Vi ricordate le tre matrici di unsigned char di cui vi ho parlato? Ecco per evitare che il compilatore riallocasse la memoria ad ogni chiamata di funzione le avevo dichiarate globali, quando in realtà vengono usate da una sola funzione (che però viene chiamata più volte con più sottofunzioni, etc.).
Dichiarandole invece all'interno della funzione in cui vengono utilizzate invece tutto fila liscio (anche se il programma sembra andare un po' più lento).
Credo che il problema fosse che allocandole globali si esaurisce la memoria, mentre locali no, anche se francamente non so il perché.
Inoltre è possibile che il "debug mode" di Eclipse abbia più stack del "normal mode" e da qui l'esaurimento in un caso sì nell'altro no.

Xshodan
mi sono espresso male: con exit -1 intendevo che eclipse riportava (quando il programma si interrompeva)
<terminated, exit value: -1>/home/Andrea/Scrivania/progetti_eclipse/v4l2_non_dsp/Debug/v4l2_non_dsp (05/05/09 22.16)

ed era l'unico indizio (esclusi i vari printf che avevo prontamente disseminato lungo il codice e alcuni file non creati) di una terminazione del programma non corretta. Ho cercato notizie su questo valore di uscita ma non ne ho trovate. Probabilmente è qualcosa che indica un esaurimento della memoria di stack, ma