Package: sarg Version: 2.2.2-1 when running sarg with "show_read_statistics no" in sarg.conf it failed with error Segmentation fault.
i build sarg with -ggdb and run it in gdb, and this is backtrace: Program received signal SIGSEGV, Segmentation fault. 0x0000000000405015 in compar (a=0x18, b=0x5374cc) at util.c:1119 1119 { if( *(int *)a > *(int *)b ) return 1; (gdb) backtrace #0 0x0000000000405015 in compar (a=0x18, b=0x5374cc) at util.c:1119 #1 0x00002b57b9785ace in bsearch () from /lib/libc.so.6 #2 0x0000000000408a52 in main (argc=9, argv=0x7ffff146bd98) at log.c:799 strace show interesting info: open("/tmp/head", O_RDONLY) = 3 ... read(3, "1190518343.459 193 172.29.6.9"..., 4096) = 4096 lseek(3, 0, SEEK_SET) = 0 ... stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=815, ...}) = 0 ... stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=815, ...}) = 0 read(3, "1190518343.459 193 172.29.6.9"..., 4096) = 4096 --- SIGSEGV (Segmentation fault) @ 0 (0) --- Did you see that read() reading the same data? This is because lseek() used at log.c:736 change offset in file descriptor(!) not offset in fp_in stream. So after reading 4096 bytes fgets() will started from begining of file. This damage arguments of bsearch() and result to a sigsegv. Setting "show_read_statistics yes" prevent sigsegv, because at log.c:769 called rewind(fp_in) - this reopen fp_in and update library buffers. Simple patch - use fseek() instead of lseek(): --- sarg_2.2.2.orig/log.c +++ sarg_2.2.2/log.c @@ -733,7 +733,7 @@ getword(val3,arqtt,'_'); sprintf(period,"%s-%s",val2,val3); sarglog=1; - } else lseek(fileno(fp_in), 0, 0); + } else fseek(fp_in, 0, 0); if(strcmp(ParsedOutputLog, "no") != 0 && !sarglog) { if(access(ParsedOutputLog,R_OK) != 0) { -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]