Нашел как минимум одну ошибку, приводящую к Segmentation fault. К mmap() отношения не имеет.
text
void rdf1_separate_streams(unsigned char* rdf, [b]unsigned char* streams[/b]){
...
//Далее по ходу функции под указатель [b]streams[/b] не выделяется память, но в конце мы видим
*streams = str_out_1;
*(streams + 1) = str_out_2;
//Соответственно, память должна выделяться вызывающей функцией.
...
}
Смотрим на вызывающую функцию:
text
int rdf1_open(char* path, time_t* start_time, char* channels, rdr_mode_t* rdr_mode){
...
unsigned char *ptr_in, *ptr_out;
...
//Здесь под [b]ptr_out[/b] тоже память не выделяется, но далее
rdf1_separate_streams(ptr_in, ptr_out);
/*Соответственно, в функцию [b]rdf1_separate_streams()[/b] передается не инициализированный указатель, который эта функция пытается разыменовать. Отсюда и Segfault.*/
...
}