[mythtv-users] bug in mythreplex
D. Hugh Redelmeier
hugh at mimosa.com
Tue Sep 26 06:05:11 UTC 2006
| From: Clark Rawlins <clark at bit63.org>
| Subject: [mythtv-users] mythreplex
|
| I have run into a problem with mythreplex that causes a
| segmentation fault to occur. I would have debugged the
| problem myself and attempted a patch, but I get different
| behavior depending on whether the --compile-type=debug
| flag is passed to configure. Of course the segmentation
| fault only occurs when --compile-type is absent.
Yeah. Me too.
I figured out how to track this down. Thanks to Axel for explaining
how to building the RPM.
THE BUG:
in mythtv-0.20/programs/mythtranscode/replex/element.c
routine get_audio_info calls find_audio_sync
The second arg, is header, an array of 4 bytes.
Almost the first thing that find_audio_sync does is memset the first
7(!) bytes of this array.
That's the bug. I don't know what the correct fix would be.
You could prevent this particular crash by increasing the array size
but I don't know that the program would then be correct.
BTW, a gdb backtrace shows about 85 recusive calls to get_pes(). I
expect that this is accurate (but I may be wrong). This seems very
wasteful since the recursive call in get_pes is a last-action call and
could be turned into iteration very easily. Is there a reason not to
do this?
To whom should I report this? Is posting this message sufficient?
| What additional information should I include in a bug report.
The trick is to get a copy of the debug symbols without changing the
object code. You don't want to change the object code because the
symptom goes away (as you have found).
I rebuilt the rpm in the same way that Axel did. My intention was to
install the -debuginfo.rpm that was generated. But I found a
shortcut: the replex binary in the build tree was unstripped, so I
just tested with it.
Then it was just a matter of whacking on the problem (which was
nicely repeatable) with gdb. (Not totally trivial: I had to figure
out what the stack guard code did and use the "watch" command to catch
when the sentinel got written to.)
More information about the mythtv-users
mailing list