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 :) _______________________________________________ linux-dvb mailing list linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb