Opened 11 years ago

Closed 10 years ago

#5479 closed defect (fixed)

mythtranscode crashes on Ubuntu 8.04 amd64 svn 17644

Reported by: stephen.hocking@… Owned by: Isaac Richards
Priority: minor Milestone: 0.22
Component: mythtv Version: head
Severity: medium Keywords:
Cc: Ticket locked: no

Description

When transcoding from MPEG2 to MPEG2 with a cutlist, it crashes. Without a cutlist, it does not. A crash dump from the mythbackend log is attached - it has been doing this for a few days now (can't be sure quite when it started).

Attachments (1)

transcode.crash (39.7 KB) - added by Stephen.Hocking@… 11 years ago.
Mythbackend log containing crash report

Download all attachments as: .zip

Change History (7)

Changed 11 years ago by Stephen.Hocking@…

Attachment: transcode.crash added

Mythbackend log containing crash report

comment:1 Changed 11 years ago by stephen.hocking@…

Managed to get GDB backtrace -appended below.

Program received signal SIGABRT, Aborted. [Switching to Thread 0x7f44275cb7e0 (LWP 15158)] 0x00007f442d9c9095 in raise () from /lib/libc.so.6 (gdb) bt #0 0x00007f442d9c9095 in raise () from /lib/libc.so.6 #1 0x00007f442d9caaf0 in abort () from /lib/libc.so.6 #2 0x00007f442da03a7b in ?? () from /lib/libc.so.6 #3 0x00007f442da0ba14 in ?? () from /lib/libc.so.6 #4 0x00007f442da0d360 in malloc () from /lib/libc.so.6 #5 0x00007f442e24c5ed in operator new () from /usr/lib/libstdc++.so.6 #6 0x00007f442fcbfcaa in Q3GListIterator::Q3GListIterator ()

from /usr/lib/libQt3Support.so.4

#7 0x000000000042921b in MPEG2fixup::RenumberFrames? () #8 0x000000000043e549 in MPEG2fixup::Start () #9 0x00000000004179cb in main () (gdb)

comment:2 Changed 11 years ago by stephen.hocking@…

Managed to compile it with -g and disabling the no-frame-pointer stuff, back trace now looks like this -

(gdb) bt #0 0x00007fc7c7aff095 in raise () from /lib/libc.so.6 #1 0x00007fc7c7b00af0 in abort () from /lib/libc.so.6 #2 0x00007fc7c7b39a7b in ?? () from /lib/libc.so.6 #3 0x00007fc7c7b41a14 in ?? () from /lib/libc.so.6 #4 0x00007fc7c7b43360 in malloc () from /lib/libc.so.6 #5 0x00007fc7c83825ed in operator new () from /usr/lib/libstdc++.so.6 #6 0x00007fc7c9df5f97 in ?? () from /usr/lib/libQt3Support.so.4 #7 0x00007fc7c9df60cf in ?? () from /usr/lib/libQt3Support.so.4 #8 0x00007fc7c9df5c89 in Q3GListIterator::Q3GListIterator ()

from /usr/lib/libQt3Support.so.4

#9 0x000000000043c84f in Q3PtrListIterator (this=0x7fffd7a2a9c0,

l=@0x7fc7bc01c250) at /usr/include/qt4/Qt3Support/q3ptrlist.h:167

#10 0x000000000043135d in MPEG2fixup::RenumberFrames? (this=0x7fc7bc01b420,

start_pos=1, delta=-1) at mpeg2fix.cpp:1482

#11 0x0000000000436148 in MPEG2fixup::Start (this=0x7fc7bc01b420)

at mpeg2fix.cpp:2080

#12 0x0000000000413c64 in main (argc=7, argv=0x7fffd7a2c5d8) at main.cpp:617 (gdb) quit

If there's anything else I can do, please let me know. Granted the malloc arena corruption happened some time prior to this, but it's curious that a transcode without using a cutlist is fine. It's been a while since I poked C++ with anything other than a sharp stick

comment:3 Changed 10 years ago by stuartm

Milestone: unknown0.22
Status: newinfoneeded_new

Can you try the following patch?

Index: mythtv/programs/mythtranscode/mpeg2fix.cpp =================================================================== --- mythtv/programs/mythtranscode/mpeg2fix.cpp (revision 21428) +++ mythtv/programs/mythtranscode/mpeg2fix.cpp (working copy) @@ -1495,9 +1495,12 @@

{

Q3PtrListIterator<MPEG2frame> it (vFrame);

+ if (vFrame.isEmpty()) + return; +

it+= start_pos;

while (!it.atLast() + while ((*it) && (!it.atLast()
(it.atFirst() && (*it)->isSequence))
(it.atFirst() && (*it)->isSequence)))

{

SetFrameNum?((*it)->framePos,

GetFrameNum?((*it)) + delta);

comment:4 Changed 10 years ago by stuartm

Index: mythtv/programs/mythtranscode/mpeg2fix.cpp
===================================================================
--- mythtv/programs/mythtranscode/mpeg2fix.cpp  (revision 21428)
+++ mythtv/programs/mythtranscode/mpeg2fix.cpp  (working copy)
@@ -1495,9 +1495,12 @@
 {
     Q3PtrListIterator<MPEG2frame> it (vFrame);

+    if (vFrame.isEmpty())
+        return;
+
     it+= start_pos;

-    while (!it.atLast() || (it.atFirst() && (*it)->isSequence))
+    while ((*it) && (!it.atLast() || (it.atFirst() && (*it)->isSequence)))
     {
         SetFrameNum((*it)->framePos,
                       GetFrameNum((*it)) + delta);

comment:5 Changed 10 years ago by anonymous

Hi,

This one was actually fixed in trunk (which is what I'm running) a while ago.

comment:6 Changed 10 years ago by paulh

Resolution: fixed
Status: infoneeded_newclosed
Version: unknownhead

Reported as already fixed in trunk

Note: See TracTickets for help on using tickets.