Opened 5 years ago

Closed 5 years ago

Last modified 5 years ago

#12153 closed Bug Report - Hang/Deadlock (fixed)

0.27/fixes mythtranscode mpeg lossless segfaults on certain files

Reported by: tobias.powalowski@… Owned by: JYA
Priority: blocker Milestone: 0.27.3
Component: MythTV - Mythtranscode Version: 0.27-fixes
Severity: medium Keywords:
Cc: Ticket locked: no

Description

mythtranscode fixes from 20140527 segfaults on certain files. From mythfrontend it starts transcoding and creates the .tmp file in mythtv home directory and reports back error 140. It's again movies recorded from German Sky pay tv.

Calling from commandline I attached the debug output. Attached gdb file below.

It could be again something with the dynamic PMT stuff which Sky uses, but this time it segfaults and does not stop with ringbuffer errors like https://code.mythtv.org/trac/ticket/12147

Attachments (2)

gdb-1209.txt (14.4 KB) - added by tobias.powalowski@… 5 years ago.
GDB debug from segfault
Deadlock.txt (9.9 KB) - added by tobias.powalowski@… 5 years ago.
Cutting log with different start points of mythtranscode

Download all attachments as: .zip

Change History (19)

Changed 5 years ago by tobias.powalowski@…

Attachment: gdb-1209.txt added

GDB debug from segfault

comment:1 Changed 5 years ago by stuartm

Milestone: unknown0.27.2
Priority: minorblocker
Type: Bug Report - GeneralBug Report - Hang/Deadlock

I strongly suspect this is caused by one of the streams disappearing from the file. However the pointer address for MPEG2Fix is a little suspicious too.

comment:2 Changed 5 years ago by Stuart Morgan <smorgan@…>

In ad1304f653aba0eb052a1f6b2415d94b24c0b9bb/mythtv:

Add some probably unnecessary protection around pointers in mpeg2fix.cpp. None of these should cause a problem in normal operation, but the associated ticket appears to show the pointer to MPEG2fixup with a suspicious address which often sugests that it was unintialised. I believe the actual segfault may be due to one of the streams disappearing from the file and that requires more work to fix. Refs #12153

comment:3 Changed 5 years ago by stuartm

Logs provided by the reporter in IRC show there's some minor damage to the recording around this point. Damage that we can handle gracefully in playback but apparently not when doing a lossless transcode. There's no good reason for this however, we ought to be able to skip frames with missing data and proceed past the damage.

Changed 5 years ago by tobias.powalowski@…

Attachment: Deadlock.txt added

Cutting log with different start points of mythtranscode

comment:4 Changed 5 years ago by tobias.powalowski@…

https://dev.archlinux.org/~tpowa/Sample-Broken.mpg Provide the file, which contains the break point. Start and End points are ok, I created the snipplet with projectx. Stream 0x403 breaks it. Removing the AC3 stream pid fixes it.

comment:5 Changed 5 years ago by tobias.powalowski@…

Doing conversion with ffmpeg, leads to this error on AC3 stream. Pos: 7.5s 173f (87%) 0.00fps Trem: 0min 2mb A-V:-0.048 [617:1536] TS_PARSE: COULDN'T SYNC

comment:6 Changed 5 years ago by JYA

Status: newinfoneeded_new

can you provide the arguments you used when calling mythtranscode?

comment:7 Changed 5 years ago by JYA

Owner: set to JYA

comment:8 Changed 5 years ago by tobias.powalowski@…

I think it was this: mythtranscode -i ./Alien-test\[copy\].mpg --video --nologserver --mpeg2 --outfile blub-test.mpg

comment:9 Changed 5 years ago by Jean-Yves Avenard <jyavenard@…>

In 1267856cfbcfc01d2ff5b7ed8ac116e44ef3a0c4/mythtv:

Allow to override which mpegts demuxer is used

Set FFMPEGTS override (call with -O FFMPEGTS=1)

Refs:#12153

comment:10 Changed 5 years ago by Jean-Yves Avenard <jyavenard@…>

Resolution: fixed
Status: infoneeded_newclosed

In 345e2d651fe6dcb3f14caec73854b1a386e52be9/mythtv:

Ignore audio packets from ignored streams

Fixes #12153

comment:11 Changed 5 years ago by Jean-Yves Avenard <jyavenard@…>

In ff36448c27359619130cb6e221659330b70f19c8/mythtv:

Add —allaudiotracks

By default mythtranscode exclude all audio tracks where the number of channels is detected as 0. However, under some circumstances our mpegts demuxer doesn’t properly detect the audio streams and mark them as having 0 channels.
Use —allaudiotracks to include all audio tracks found.

Refs: #12153

comment:12 Changed 5 years ago by Stuart Morgan <smorgan@…>

In c3caccaefad7d469f0b769a3dca8eb4e8f628678/mythtv:

Add some probably unnecessary protection around pointers in mpeg2fix.cpp. None of these should cause a problem in normal operation, but the associated ticket appears to show the pointer to MPEG2fixup with a suspicious address which often sugests that it was unintialised. I believe the actual segfault may be due to one of the streams disappearing from the file and that requires more work to fix. Refs #12153

(cherry picked from commit ad1304f653aba0eb052a1f6b2415d94b24c0b9bb)

comment:13 Changed 5 years ago by Jean-Yves Avenard <jyavenard@…>

In f9ac3854932bb8164820abab6ad1f8dec3d10912/mythtv:

Allow to override which mpegts demuxer is used

Set FFMPEGTS override (call with -O FFMPEGTS=1)

Refs:#12153
(cherry picked from commit 1267856cfbcfc01d2ff5b7ed8ac116e44ef3a0c4)

comment:14 Changed 5 years ago by Jean-Yves Avenard <jyavenard@…>

In f2f014dc91f87b750bfec922fa6e0e2549a8ec94/mythtv:

Ignore audio packets from ignored streams

Fixes #12153

(cherry picked from commit 345e2d651fe6dcb3f14caec73854b1a386e52be9)

comment:15 Changed 5 years ago by Jean-Yves Avenard <jyavenard@…>

In ea583891b5efc7acad98d98d6976acaec9c1eabd/mythtv:

Add —allaudiotracks

By default mythtranscode exclude all audio tracks where the number of channels is detected as 0. However, under some circumstances our mpegts demuxer doesn’t properly detect the audio streams and mark them as having 0 channels.
Use —allaudiotracks to include all audio tracks found.

Refs: #12153
(cherry picked from commit ff36448c27359619130cb6e221659330b70f19c8)

Conflicts:

mythtv/programs/mythtranscode/mpeg2fix.cpp

comment:16 Changed 5 years ago by JYA

Milestone: 0.27.20.27.3

While mythtranscode will no longer crash, it will still no produce a valid file with your sample.

The problem is that our mpegts demuxer detects the audio streams as having 0 channels.

I've added two workarounds that you can use, their are independent to one another.

First one is a setting that you active by giving -O FFMPEGTS=1 as argument to mythtranscode. This will force mythtranscode to use the native ffmpegts demuxer. In this particular example, it will detect the audio streams perfectly.

There are issues with the ffmpeg mpegts demuxer: in particular it won't detect change of streams partway which could be an issue with some channels. it won't detect subtitles and mhi, but those are filtered anyway.

The other workaround is to use the new mythtranscode switch: -—allaudiotracks it will include all found audio channels, even those detected as having 0 channels.

Take your pick

comment:17 Changed 5 years ago by oli.henning@…

This workaround does not work I added "-O FFMPEGTS=1" as a command-line-parameter to mythtranscode in mythtv-setup -> General -> 9th Page (titled "Job Queue (Global)").

So the "Transcoder command" is now "mythtranscode -O FFMPEGTS=1". But now, mythtranscode seems not to start any more.

Any suggestions?

Note: See TracTickets for help on using tickets.