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