Hallo,
ich habe ein Programm, das in folgender Zeile einen Segfault produziert:
unsigned char *srcsrc;
srcsrc = (unsigned char*) malloc (i * sizeof(unsigned char));
Das ganze ist unabh. von i; i kann dabei 1,2,3,...,$großeZahl sein.
Im gdb sieht das dann so aus:
(gdb) run
Starting program: /path/prog
Program received signal SIGSEGV, Segmentation fault.
0x0000000000400ee8 in prog (
parameter1=0x7ffff783a010
parameter2=...
at prog.c:107
107 srcsrc = (unsigned char*) malloc (i * sizeof(unsigned char));
(gdb) print i
$1 = 1
*Irgendwie* scheint es eine Abhängigkeit zu den Daten zu geben, mit
denen ich das Programm füttere (das habe ich hier minimiert, indem ich
immer gleich viel Speicher allokiere und außer der gezeigten Allokation
nichst in dieser Funktion mache).
Ich kann mir gar keinen Reim darauf machen, wie ein malloc überhaupt
fehlschlagen kann (und entsprechend nicht, wo ich nach dem Problem
suchen muss).
Hat jemand eine Idee, woran das liegen könnte?
(freier RAM ist reichlich vorhanden, System ist Ubuntu 11.04 AMD64)
Viele Grüße
Fabian