Opened 19 years ago
Closed 19 years ago
#740 closed defect (duplicate)
Segfault when changing channels with DVB
Reported by: | Homer | Owned by: | danielk |
---|---|---|---|
Priority: | major | Milestone: | unknown |
Component: | mythtv | Version: | |
Severity: | medium | Keywords: | |
Cc: | Ticket locked: | no |
Description
This is a dupe of a closed issue. At the end of that thread danielk suggests opening a new ticket if the problem shows up again.
I have this problem on 8095. Just downloaded it and built it fresh.
Here's the gdb log and backtrace:
2005-12-01 22:18:35.402 Invalid file handle when opening /mythtv//1510_20051201221833.mpg. 4 retries remaining. 2005-12-01 22:18:35.903 Invalid file handle when opening /mythtv//1510_20051201221833.mpg. 3 retries remaining. 2005-12-01 22:18:36.344 NVP: prebuffering pause 2005-12-01 22:18:36.405 Invalid file handle when opening /mythtv//1510_20051201221833.mpg. 2 retries remaining. 2005-12-01 22:18:36.907 Invalid file handle when opening /mythtv//1510_20051201221833.mpg. 1 retries remaining. 2005-12-01 22:18:37.246 Prebuffer wait timed out 10 times. mpegts_read_header: read_packet() failed 2005-12-01 22:18:37.996 AFD Error: Reset(): avformat err(-1) on av_open_input_file call. Program received signal SIGSEGV, Segmentation fault. [Switching to Thread -1293968464 (LWP 8956)] 0xb760ad9a in av_read_frame (s=0x0, pkt=0x8da7c80) at utils.c:1089 1089 const int genpts= s->flags & AVFMT_FLAG_GENPTS; Current language: auto; currently c (gdb) bt #0 0xb760ad9a in av_read_frame (s=0x0, pkt=0x8da7c80) at utils.c:1089 #1 0xb7ab5b95 in AvFormatDecoder::GetFrame (this=0x8bb2860, onlyvideo=0) at avformatdecoder.cpp:2061 #2 0xb7a814eb in NuppelVideoPlayer::GetFrame (this=0x8b6db20, onlyvideo=0, unsafe=false) at NuppelVideoPlayer.cpp:868 #3 0xb7a88d51 in NuppelVideoPlayer::StartPlaying (this=0x8b6db20) at NuppelVideoPlayer.cpp:2325 #4 0xb7a45661 in SpawnDecode (param=0x8b6db20) at tv_play.cpp:188 #5 0xb65bf380 in start_thread () from /lib/tls/libpthread.so.0 #6 0xb645db5e in clone () from /lib/tls/libc.so.6
If there's anything else you need, just ask.
Homer
Change History (7)
comment:1 Changed 19 years ago by
Resolution: | → duplicate |
---|---|
Status: | new → closed |
comment:2 Changed 19 years ago by
Resolution: | duplicate |
---|---|
Status: | closed → reopened |
Eh? Read the original ticket. Homer is doing _exactly_ what Daniel asked for.
comment:3 Changed 19 years ago by
Owner: | changed from Isaac Richards to danielk |
---|---|
Status: | reopened → new |
comment:4 Changed 19 years ago by
Resolution: | → duplicate |
---|---|
Status: | new → closed |
comment:5 Changed 19 years ago by
Resolution: | duplicate → fixed |
---|
(In [8098]) Closes #740. This should fix the segfault.
The segfault happened because SwitchToProgram?() didn't check for the being errored before resuming playback.
This adds that check in SwitchToProgram?().
It also adds it to the StartPlaying?() loop. This part is just so that an error message gets displayed before we exit.
For an extra level of paranoia this also adds a check for a null context pointer in the packet reading portion of GetFrame?(). This prevents a segfault if GetFrame?() is called when there is no context pointer; so long as there it is reset clearing any buffered packets.
There are still remaining problems in LiveTV that I think are sufficiently canvased by the existing tickets; this just prevents a segfault if we switch to an empty file. Addressing the creation empty files is a seperate issue.
comment:6 Changed 19 years ago by
Resolution: | fixed |
---|---|
Status: | closed → reopened |
Now (r8098) instead of crashing it just barks about "unable to display video" and screen goes black, after restart of FE the channel comes OK.
comment:7 Changed 19 years ago by
Resolution: | → duplicate |
---|---|
Status: | reopened → closed |
Dupe of #687.