Opened 18 years ago
Closed 18 years ago
#1908 closed defect (fixed)
mythfrontend: SIGSEGV when cancelling in-progress channel change in live TV
Reported by: | Owned by: | danielk | |
---|---|---|---|
Priority: | minor | Milestone: | 0.20 |
Component: | mythtv | Version: | head |
Severity: | high | Keywords: | |
Cc: | Ticket locked: | no |
Description
Using r9974 from /branches/mythtv-eit
.
Compiled for x86-64 with ./configure --enable-dvb --compile-type=debug --disable-ccache
.
I can reproduce a segfault in mythfrontend:
- Watch Live TV (I'm using a DVB-T source).
- Start a channel change from one channel to another (e.g. Channel Down, OK).
- Before the change has completed, cancel back (Escape) to the main menu.
- SIGSEGV.
It is much easier to reproduce this when the two channels are on the same multiplex, because otherwise you need to wait for the lock to succeed. I don't actually think the problem is related to tuning, though - it seems like we're trying to shut down a TV object that doesn't have a player associated with it.
Crash signature is
#0 0x00002b1762f0415a in NuppelVideoPlayer::getAudioOutput (this=0x0) at NuppelVideoPlayer.h:209 209 AudioOutput *getAudioOutput(void) { return audioOutput; } #1 0x00002b1762eed50c in TV::UnMute (this=0xd094e0) at tv_play.cpp:5090 #2 0x00002b1763195faf in TV::qt_invoke (this=0xd094e0, _id=4, _o=0x7fff48486f40) at moc_tv_play.cpp:109
Backtrace and log attached. I still have the core
file, let me know if I can provide anything else.
(The backtrace is slightly edited: gdb traced back hundreds of frames past the clone()
calls on each thread and complained about stack corruption, but I think this is a fault in gdb rather than an actual problem).
Attachments (2)
Change History (6)
Changed 18 years ago by
Attachment: | mythfrontend-debug.log.8677 added |
---|
comment:1 Changed 18 years ago by
Milestone: | → 0.20 |
---|---|
Severity: | medium → high |
comment:2 Changed 18 years ago by
This may have been fixed by [10029]. I'll see if I can reproduce this problem after I've updated to a newer version.
comment:3 Changed 18 years ago by
Still able to reproduce using r10247 from trunk
. Crash signature appears to be the same.
comment:4 Changed 18 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
(In [10261]) Closes #1908. Fixes SEGFAULT by adding a null pointer check to TV::UnMute?().
This is on a Qt Timer and can be triggered at the wrong time during a channel change. This will fix the segfault, but there may still be a problem with using the timer like this. It is possible that sound will not be unmuted after a channel change, though reading the code it looks like the unmute is done directly as well when needed.
mythfrontend log