Opened 14 years ago

Closed 14 years ago

#715 closed defect (fixed)

Frontend crash on entering Live TV (r8041)

Reported by: a.petersen AT telstra.com Owned by: danielk
Priority: major Milestone: 0.19
Component: mythtv Version: head
Severity: medium Keywords:
Cc: Ticket locked: no

Description

On selecting Watch TV (w/ the enter EPG option active), the frontend crashes upon the OSD fading out.

Input HW is DVB cards, display is via XvMC.

Logs and backtrace attached.

  • backend.log is the complete backend log
  • frontend.log is a crash outside of the debugger
  • frontend1.log is a crash in the debugger

(gdb) run -v all -l frontend1.log Starting program: /usr/local/bin/mythfrontend -v all -l frontend1.log Reading symbols from shared object read from target memory...(no debugging symbols found)...done. Loaded system supplied DSO at 0xffffe000 (no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...[Thread debugging using libthread_db enabled] [New Thread -1226089632 (LWP 6278)] (no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...[New Thread -1226417232 (LWP 6284)]

Program received signal SIG33, Real-time event 33. [Switching to Thread -1226417232 (LWP 6284)] 0x00765fd8 in clone () from /lib/tls/libc.so.6 (gdb) cont Continuing. [New Thread -1236747344 (LWP 6285)] [New Thread -1245140048 (LWP 6286)] [Thread -1245140048 (LWP 6286) exited] [New Thread -1245140048 (LWP 6289)] [New Thread -1261220944 (LWP 6290)] [New Thread -1269613648 (LWP 6291)] [New Thread -1278608464 (LWP 6293)] [New Thread -1287078992 (LWP 6302)] [New Thread -1295471696 (LWP 6303)] [New Thread -1322693712 (LWP 6308)] [New Thread -1331086416 (LWP 6309)]

Program received signal SIGABRT, Aborted. [Switching to Thread -1287078992 (LWP 6302)] 0xffffe410 in kernel_vsyscall () (gdb) backtrace #0 0xffffe410 in kernel_vsyscall () #1 0x006c67d5 in raise () from /lib/tls/libc.so.6 #2 0x006c8149 in abort () from /lib/tls/libc.so.6 #3 0x00b3d0eb in gnu_cxx::verbose_terminate_handler ()

from /usr/lib/libstdc++.so.6

#4 0x00b3ae01 in cxa_call_unexpected () from /usr/lib/libstdc++.so.6 #5 0x00b3ae36 in std::terminate () from /usr/lib/libstdc++.so.6 #6 0x00b3af7f in cxa_throw () from /usr/lib/libstdc++.so.6 #7 0x00b3b3cc in operator new () from /usr/lib/libstdc++.so.6 #8 0x00b3b469 in operator new[] () from /usr/lib/libstdc++.so.6 #9 0xb7a1c493 in OSDTypeImage::LoadImage? ()

from /usr/local/lib/libmythtv-0.18.so.0

#10 0xb7a1c8b9 in OSDTypeImage::Reinit ()

from /usr/local/lib/libmythtv-0.18.so.0

#11 0xb7a2034a in OSDSet::Reinit () from /usr/local/lib/libmythtv-0.18.so.0 #12 0xb7a014f5 in OSD::Reinit () from /usr/local/lib/libmythtv-0.18.so.0 #13 0xb79b424e in NuppelVideoPlayer::ReinitOSD ()

from /usr/local/lib/libmythtv-0.18.so.0

#14 0xb79cd15c in NuppelVideoPlayer::ReinitVideo? ()

from /usr/local/lib/libmythtv-0.18.so.0

#15 0xb79cd700 in NuppelVideoPlayer::SetVideoParams? ()

from /usr/local/lib/libmythtv-0.18.so.0

#16 0xb79eded7 in AvFormatDecoder::MpegPreProcessPkt? ()

from /usr/local/lib/libmythtv-0.18.so.0

#17 0xb79eec77 in AvFormatDecoder::GetFrame? ()

from /usr/local/lib/libmythtv-0.18.so.0

#18 0xb79c7a3f in NuppelVideoPlayer::GetFrame? ()

from /usr/local/lib/libmythtv-0.18.so.0

#19 0xb79d2178 in NuppelVideoPlayer::StartPlaying? ()

from /usr/local/lib/libmythtv-0.18.so.0

#20 0xb7979e22 in SpawnDecode? () from /usr/local/lib/libmythtv-0.18.so.0 #21 0x008e6341 in start_thread () from /lib/tls/libpthread.so.0 #22 0x00765fee in clone () from /lib/tls/libc.so.6 (gdb) quit

Attachments (4)

frontend.log.gz (14.8 KB) - added by a.petersen AT telstra.com 14 years ago.
Frontend Log
frontend1.log.gz (14.7 KB) - added by a.petersen AT telstra.com 14 years ago.
Frontend Log
backend.log.gz (29.1 KB) - added by a.petersen AT telstra.com 14 years ago.
Backend Log
frontend-segv.txt (10.1 KB) - added by Stuart Auchterlonie 14 years ago.
Backtrace from frontend crash

Download all attachments as: .zip

Change History (12)

Changed 14 years ago by a.petersen AT telstra.com

Attachment: frontend.log.gz added

Frontend Log

Changed 14 years ago by a.petersen AT telstra.com

Attachment: frontend1.log.gz added

Frontend Log

Changed 14 years ago by a.petersen AT telstra.com

Attachment: backend.log.gz added

Backend Log

comment:1 Changed 14 years ago by Johnathon Meichtry

I was suffering this on all builds greater than 7739. Something to do with new LiveTV code. I tried a whole bunch of builds 7739, 7770, 7900, 8010, 8042 etc. and same on all. Problem also occurs with Master, Slave and Frontend arrangement where the Frontend attempts to get LiveTV from the slave.

I am using xv (not xvmc), Nova-T PCI DVB card and multiple Twinham PCI DVB cards. Was so much of a problem that this moring I have reverted back to stable release 18.1 as builds just prior to 7739 have broken EIT which is fixed in 7770 which suffers this problem.

comment:2 Changed 14 years ago by jonw

Are recordings working? I was getting a frontend crash on entering LiveTV because recordings on the backend weren't working properly - ticket 689 refers. It's fixed in 8042, although I see you've tried that.

comment:3 Changed 14 years ago by anonymous

Severity: highmedium

Following up on this, if I disable the "enter EPG upon starting Live TV" option, the crash goes away. Changes in r8042 didn't seem to affect the crash signature.

comment:4 Changed 14 years ago by anonymous

Ah, thanks, I had this same problem and turning off the "enter epg upon starting Live TV" stopped my live tv from crashing.

I actually had a work around in place for thanksgiving parades and football, I would quickly switch to an analog tuner before the DVB tuner finished locking on to the signal. I could then bring the EPG back up and switch to the DVB channel I wanted and it would successfully start (no EPG at that time, of course).

So I would say the problem is that the DVB signal lock on and start for Live TV does not work if the EPG is active.

Changed 14 years ago by Stuart Auchterlonie

Attachment: frontend-segv.txt added

Backtrace from frontend crash

comment:5 Changed 14 years ago by Stuart Auchterlonie

This may or may not relate to this problem, but the initial part of the backtrace is the same.

I made it crash by changing channels using the guide.

The backtrace has been attached. Thread 4 is the culprit. This is rev 8063.

comment:6 Changed 14 years ago by Isaac Richards

Owner: changed from Isaac Richards to danielk

Seems to be limited to only DVB cards - no repro with ivtv.

comment:7 Changed 14 years ago by danielk

Status: newassigned

I can't reproduce stuart's backtrace, probably because this is fixed in SVN? But I can reproduce the EPG fault. I get this in a backtrace after an aspect ratio switch while the EPG is on screen:

#10 0xb7addce0 in OSDSet::Reinit (this=0x8e5a180, screenwidth=704, screenheight=480, xoff=0, yoff=0, displaywidth=-1128, displayheight=401, wmult=-1.76250005, hmult=0.835416675, frint=33366)

It appears the VideoOutput::GetVisibleOSDBounds() is broken for embedded video, probably due to using dispw & disph which appear to not be updated when doing an embedding.

I'll look at this in detail tomorrow but as a workaround, adding this

    visible_aspect = abs(visible_aspect);
    font_scaling   = abs(font_scaling);
    if (vb.width() < 0 || vb.height() < 0)
        vb = QRect(vb.x(), vb.y(), abs(vb.width()), abs(vb.height()));

before the "return vb;" in VideoOutput::GetVisibleOSDBounds(..) in videooutbase.cpp prevents the segfault.

comment:8 Changed 14 years ago by danielk

Resolution: fixed
Status: assignedclosed

(In [8189]) Fixes #715.

Makes sure that the reported OSD dimensions do not contain any negative numbers, disables the OSD while the video is embedded and reinits OSD after the end of embedding.

Note: See TracTickets for help on using tickets.