On Friday 21 March 2008 09:52:01 Nico Sabbi wrote: > On Friday 21 March 2008 01:54:13 Adam Nielsen wrote: > > > I use it for hours, even forgetting that it's recording, > > > without segfaults. > > > Try to run it under gdb (after having compiled it with -g) and > > > see with "bt" where it segfaults, or bugs can't be fixed > > > > What's your reception like? This particular card (DVico Fusion > > HDTV) seems to be somewhat less sensitive compared to my other > > cards, and I think getting corrupted data coming in is what > > breaks dvbstream. The recording itself is full of blips as if > > the reception is quite bad. > > > > When the recording just stops (no crash) gdb doesn't seem to > > reveal anything amazing: > > > > <Ctrl+C> > > Program received signal SIGINT, Interrupt. > > 0xffffe410 in __kernel_vsyscall () > > (gdb) bt > > #0 0xffffe410 in __kernel_vsyscall () > > #1 0xb7ebf77b in poll () from /lib/libc.so.6 > > #2 0x0804aeeb in main (argc=12, argv=0xbfe38484) at > > dvbstream.c:1516 (gdb) fr 2 > > #2 0x0804aeeb in main (argc=12, argv=0xbfe38484) at > > dvbstream.c:1516 1516 poll(pfds,1,500); > > (gdb) cont > > Continuing. > > poll() is used because the dvr device is opened in O_NONBLOCK mode, > that can be replaced with the usual blocking mode (although if it > makes a difference it's probably an indicator of a bug in the > driver) > > > If I kill dvbstream and reload it then all is fine, so it seems > > that maybe the card loses sync with the signal, and either > > dvbstream needs to retune the card, or perhaps the kernel driver > > should do that automatically. > > > > When it crashes it looks like this: > > > > > > Program received signal SIGSEGV, Segmentation fault. > > 0xb7ee153c in memcpy () from /lib/libc.so.6 > > (gdb) bt > > #0 0xb7ee153c in memcpy () from /lib/libc.so.6 > > #1 0x08049714 in collect_section (section=0x815bef0, pusi=<value > > optimized out>, buf=0x3ffff59e <Address 0x3ffff59e out of > > bounds>, len=3221135360) at dvbstream.c:579 > > #2 0x0804b21b in main (argc=12, argv=0xbffe8084) at > > dvbstream.c:683 > > len is so big?? this must be an actual bug > > > (gdb) fr 1 > > #1 0x08049714 in collect_section (section=0x815bef0, pusi=<value > > optimized out>, buf=0x3ffff59e <Address 0x3ffff59e out of > > bounds>, len=3221135360) at dvbstream.c:579 > > 579 memcpy(&(section->buf[section->pos]), buf, len); > > > > (gdb) fr 2 > > #2 0x0804b21b in main (argc=12, argv=0xbffe8084) at > > dvbstream.c:683 683 skip = collect_section(&(pmt->section), > > pusi, b, l); > > > > > > It looks like the default CFLAGS do some optimisation - let me > > know if you need me to recompile it without this. > > fortunately a peaceful easter of coding is coming :) > should be fixed in cvs _______________________________________________ linux-dvb mailing list linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb