[mythtv] errors thrown up by valgrind

Simon Kenyon simon at koala.ie
Fri Nov 30 09:18:07 UTC 2007


i run gentoo everywhere and i recently updated all my machines.
since then i've had my slave backend crapping out with a glibc malloc error.

so last night i ran it under valgrind (as suggested recently on this list).
i (of course) could not get it to fall over, but in the process did 
catch a few things that may be of interest.
on the other hand they may not.

i'm assuming that the "invalid read of size 4 by dlopen()" is an artifact
likewise for operator new[] in QString::unicodeToLatin1()

regards
--
simon

2 errors in context 5 of 27:
Thread 18:
Syscall param ioctl(generic) points to uninitialised byte(s)
   at 0x4000882: (within /lib/ld-2.6.1.so)
   by 0x48AE8CC: MpegRecorder::Open() (mpegrecorder.cpp:792)
   by 0x48A51CE: MpegRecorder::StartRecording() (mpegrecorder.cpp:797)
   by 0x47BB557: TVRec::RecorderThread(void*) (tv_rec.cpp:1133)
   by 0x61A418A: (within /lib/libpthread-2.6.1.so)
   by 0x638D24D: clone (in /lib/libc-2.6.1.so)
 Address 0x10AFAE3C is on thread 18's stack

10 errors in context 17 of 27:
Conditional jump or move depends on uninitialised value(s)
   at 0x4E26454: ff_ac3_parse_header (ac3_parser.c:46)
   by 0x4B166CD: av_probe_input_format2 (utils.c:288)
   by 0x4B16758: av_probe_input_format (utils.c:304)
   by 0x45FEA4A: AvFormatDecoder::OpenFile(RingBuffer*, bool, char*, 
int) (avformatdecoder.cpp:820)
   by 0x45B1230: NuppelVideoPlayer::OpenFile(bool, unsigned, bool) 
(NuppelVideoPlayer.cpp:1114)
   by 0x45B2A97: NuppelVideoPlayer::GetScreenGrabAtFrame(long long, 
bool, int&, int&, int&, float&) (NuppelVideoPlayer.cpp:5312)
   by 0x45B465C: NuppelVideoPlayer::GetScreenGrab(int, int&, int&, int&, 
float&) (NuppelVideoPlayer.cpp:5277)
   by 0x442AAF4: PreviewGenerator::GetScreenGrab(ProgramInfo const*, 
QString const&, int, int&, int&, int&, float&) (previewgenerator.cpp:487)
   by 0x442CAA8: PreviewGenerator::LocalPreviewRun() 
(previewgenerator.cpp:292)
   by 0x442CF53: PreviewGenerator::Run() (previewgenerator.cpp:160)
   by 0x442DC14: PreviewGenerator::PreviewRun(void*) 
(previewgenerator.cpp:180)
   by 0x61A418A: (within /lib/libpthread-2.6.1.so)

10 errors in context 18 of 27:
Conditional jump or move depends on uninitialised value(s)
   at 0x4E26454: ff_ac3_parse_header (ac3_parser.c:46)
   by 0x4B166CD: av_probe_input_format2 (utils.c:288)
   by 0x4B16758: av_probe_input_format (utils.c:304)
   by 0x45F01DB: AvFormatDecoder::CanHandle(char*, QString const&, int) 
(avformatdecoder.cpp:739)
   by 0x45B0AB0: NuppelVideoPlayer::OpenFile(bool, unsigned, bool) 
(NuppelVideoPlayer.cpp:1079)
   by 0x45B2A97: NuppelVideoPlayer::GetScreenGrabAtFrame(long long, 
bool, int&, int&, int&, float&) (NuppelVideoPlayer.cpp:5312)
   by 0x45B465C: NuppelVideoPlayer::GetScreenGrab(int, int&, int&, int&, 
float&) (NuppelVideoPlayer.cpp:5277)
   by 0x442AAF4: PreviewGenerator::GetScreenGrab(ProgramInfo const*, 
QString const&, int, int&, int&, int&, float&) (previewgenerator.cpp:487)
   by 0x442CAA8: PreviewGenerator::LocalPreviewRun() 
(previewgenerator.cpp:292)
   by 0x442CF53: PreviewGenerator::Run() (previewgenerator.cpp:160)
   by 0x442DC14: PreviewGenerator::PreviewRun(void*) 
(previewgenerator.cpp:180)
   by 0x61A418A: (within /lib/libpthread-2.6.1.so)

20 bytes in 1 blocks are possibly lost in loss record 83 of 483
   at 0x4023194: operator new(unsigned) (in 
/usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
   by 0x5E11A3C: QString::setLength(unsigned) (in 
/usr/qt/3/lib/libqt-mt.so.3.3.8)
   by 0x5E11E8B: QString::real_detach() (in /usr/qt/3/lib/libqt-mt.so.3.3.8)
   by 0x8079456: QString::detach() (qstring.h:854)
   by 0x80794C9: QDeepCopy<QString>::operator QString() (qdeepcopy.h:69)
   by 0x450CC29: DBChannel::operator=(DBChannel const&) (channelutil.cpp:33)
   by 0x4514643: DBChannel::DBChannel(DBChannel const&) (channelutil.cpp:21)
   by 0x451D6D2: void std::_Construct<DBChannel, DBChannel>(DBChannel*, 
DBChannel const&) (stl_construct.h:81)
   by 0x451DA7A: DBChannel* 
std::__uninitialized_copy_aux<__gnu_cxx::__normal_iterator<DBChannel 
const*, std::vector<DBChannel, std::allocator<DBChannel> > >, 
DBChannel*>(__gnu_cxx::__normal_iterator<DBChannel const*, 
std::vector<DBChannel, std::allocator<DBChannel> > >, 
__gnu_cxx::__normal_iterator<DBChannel const*, std::vector<DBChannel, 
std::allocator<DBChannel> > >, DBChannel*, __false_type) 
(stl_uninitialized.h:86)
   by 0x451DB22: DBChannel* 
std::uninitialized_copy<__gnu_cxx::__normal_iterator<DBChannel const*, 
std::vector<DBChannel, std::allocator<DBChannel> > >, 
DBChannel*>(__gnu_cxx::__normal_iterator<DBChannel const*, 
std::vector<DBChannel, std::allocator<DBChannel> > >, 
__gnu_cxx::__normal_iterator<DBChannel const*, std::vector<DBChannel, 
std::allocator<DBChannel> > >, DBChannel*) (stl_uninitialized.h:113)
   by 0x451DB54: DBChannel* 
std::__uninitialized_copy_a<__gnu_cxx::__normal_iterator<DBChannel 
const*, std::vector<DBChannel, std::allocator<DBChannel> > >, 
DBChannel*, DBChannel>(__gnu_cxx::__normal_iterator<DBChannel const*, 
std::vector<DBChannel, std::allocator<DBChannel> > >, 
__gnu_cxx::__normal_iterator<DBChannel const*, std::vector<DBChannel, 
std::allocator<DBChannel> > >, DBChannel*, std::allocator<DBChannel>) 
(stl_uninitialized.h:254)
   by 0x473AD34: std::vector<DBChannel, std::allocator<DBChannel> 
 >::vector(std::vector<DBChannel, std::allocator<DBChannel> > const&) 
(stl_vector.h:234)

20 bytes in 1 blocks are possibly lost in loss record 84 of 483
   at 0x4023194: operator new(unsigned) (in 
/usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
   by 0x5E17354: QString::QString(char const*) (in 
/usr/qt/3/lib/libqt-mt.so.3.3.8)
   by 0x402E58E: QMYSQLResult::data(int) (in 
/usr/qt/3/plugins/sqldrivers/libqsqlmysql.so)
   by 0x5D989FA: QSqlQuery::value(int) const (in 
/usr/qt/3/lib/libqt-mt.so.3.3.8)
   by 0x46A1AD3: VideoDisplayProfile::LoadDB(unsigned) 
(videodisplayprofile.cpp:408)
   by 0x46A3BC0: VideoDisplayProfile::VideoDisplayProfile() 
(videodisplayprofile.cpp:213)
   by 0x466AC5A: VideoOutput::VideoOutput() (videooutbase.cpp:289)
   by 0x466F838: VideoOutputNull::VideoOutputNull() (videoout_null.cpp:16)
   by 0x45B169A: NuppelVideoPlayer::InitVideo() (NuppelVideoPlayer.cpp:561)
   by 0x45B3A94: NuppelVideoPlayer::GetScreenGrabAtFrame(long long, 
bool, int&, int&, int&, float&) (NuppelVideoPlayer.cpp:5339)
   by 0x45B465C: NuppelVideoPlayer::GetScreenGrab(int, int&, int&, int&, 
float&) (NuppelVideoPlayer.cpp:5277)
   by 0x442AAF4: PreviewGenerator::GetScreenGrab(ProgramInfo const*, 
QString const&, int, int&, int&, int&, float&) (previewgenerator.cpp:487)

2,280 bytes in 15 blocks are possibly lost in loss record 278 of 483
   at 0x4021ABE: calloc (in 
/usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
   by 0x4010988: (within /lib/ld-2.6.1.so)
   by 0x4010A4B: _dl_allocate_tls (in /lib/ld-2.6.1.so)
   by 0x61A49A0: pthread_create (in /lib/libpthread-2.6.1.so)
   by 0x43772B3: JobQueue::JobQueue(bool) (jobqueue.cpp:41)
   by 0x8094CCA: main (main.cpp:646)

31,734 (3,264 direct, 28,470 indirect) bytes in 12 blocks are definitely 
lost in loss record 291 of 483
   at 0x4023194: operator new(unsigned) (in 
/usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
   by 0x42AA93E: ProgramInfo::GetProgramFromRecorded(QString const&, 
QString const&) (programinfo.cpp:871)
   by 0x42AC01D: ProgramInfo::GetProgramFromRecorded(QString const&, 
QDateTime const&) (programinfo.cpp:840)
   by 0x42CF9D6: ProgramInfo::GetProgramFromBasename(QString) 
(programinfo.cpp:827)
   by 0x8098426: MainServer::LocalFilePath(QUrl&) (mainserver.cpp:4123)
   by 0x80B372F: MainServer::HandleAnnounce(QStringList&, QStringList, 
MythSocket*) (mainserver.cpp:1000)
   by 0x80B6BC4: MainServer::ProcessRequestWork(MythSocket*) 
(mainserver.cpp:316)
   by 0x80BAFBA: MainServer::ProcessRequest(MythSocket*) 
(mainserver.cpp:285)
   by 0x80C42E9: ProcessRequestThread::run() (mainserver.cpp:142)
   by 0x5AD7F82: QThreadInstance::start(void*) (in 
/usr/qt/3/lib/libqt-mt.so.3.3.8)
   by 0x61A418A: (within /lib/libpthread-2.6.1.so)
   by 0x638D24D: clone (in /lib/libc-2.6.1.so)

13,228 (336 direct, 12,892 indirect) bytes in 14 blocks are definitely 
lost in loss record 293 of 483
   at 0x4023194: operator new(unsigned) (in 
/usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
   by 0x808F6C4: QMapPrivate<QString, QString>::insert(QMapNodeBase*, 
QMapNodeBase*, QString const&) (qmap.h:552)
   by 0x808F8F3: QMapPrivate<QString, QString>::insertSingle(QString 
const&) (qmap.h:535)
   by 0x808F9A1: QMap<QString, QString>::insert(QString const&, QString 
const&, bool) (qmap.h:822)
   by 0x808FA87: QMap<QString, QString>::operator[](QString const&) 
(qmap.h:803)
   by 0x46A6CE4: ProfileItem::Set(QString const&, QString const&) 
(videodisplayprofile.h:33)
   by 0x46A1B36: VideoDisplayProfile::LoadDB(unsigned) 
(videodisplayprofile.cpp:408)
   by 0x46A3BC0: VideoDisplayProfile::VideoDisplayProfile() 
(videodisplayprofile.cpp:213)
   by 0x466AC5A: VideoOutput::VideoOutput() (videooutbase.cpp:289)
   by 0x466F838: VideoOutputNull::VideoOutputNull() (videoout_null.cpp:16)
   by 0x45B169A: NuppelVideoPlayer::InitVideo() (NuppelVideoPlayer.cpp:561)
   by 0x45B3A94: NuppelVideoPlayer::GetScreenGrabAtFrame(long long, 
bool, int&, int&, int&, float&) (NuppelVideoPlayer.cpp:5339)

1,416 (48 direct, 1,368 indirect) bytes in 2 blocks are definitely lost 
in loss record 294 of 483
   at 0x4023194: operator new(unsigned) (in 
/usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
   by 0x808F148: QMapPrivate<QString, QString>::copy(QMapNode<QString, 
QString>*) (qmap.h:457)
   by 0x808F1AD: QMapPrivate<QString, QString>::copy(QMapNode<QString, 
QString>*) (qmap.h:460)
   by 0x808F2D7: QMapPrivate<QString, 
QString>::QMapPrivate(QMapPrivate<QString, QString> const*) (qmap.h:445)
   by 0x808F35C: QMap<QString, QString>::detachInternal() (qmap.h:840)
   by 0x808F3A8: QMap<QString, QString>::detach() (qmap.h:739)
   by 0x808FA01: QMap<QString, QString>::operator[](QString const&) 
(qmap.h:799)
   by 0x4698925: VideoDisplayProfile::SetPreference(QString const&, 
QString const&) (videodisplayprofile.cpp:346)
   by 0x46A055C: VideoDisplayProfile::SetVideoRenderer(QString const&) 
(videodisplayprofile.cpp:278)
   by 0x466E6FB: VideoOutputNull::Init(int, int, float, unsigned long, 
int, int, int, int, unsigned long) (videoout_null.cpp:110)
   by 0x45B171E: NuppelVideoPlayer::InitVideo() (NuppelVideoPlayer.cpp:562)
   by 0x45B3A94: NuppelVideoPlayer::GetScreenGrabAtFrame(long long, 
bool, int&, int&, int&, float&) (NuppelVideoPlayer.cpp:5339)

30,238 (400 direct, 29,838 indirect) bytes in 10 blocks are definitely 
lost in loss record 432 of 483
   at 0x4023194: operator new(unsigned) (in 
/usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
   by 0x466AC46: VideoOutput::VideoOutput() (videooutbase.cpp:289)
   by 0x466F838: VideoOutputNull::VideoOutputNull() (videoout_null.cpp:16)
   by 0x45B169A: NuppelVideoPlayer::InitVideo() (NuppelVideoPlayer.cpp:561)
   by 0x45B3A94: NuppelVideoPlayer::GetScreenGrabAtFrame(long long, 
bool, int&, int&, int&, float&) (NuppelVideoPlayer.cpp:5339)
   by 0x45B465C: NuppelVideoPlayer::GetScreenGrab(int, int&, int&, int&, 
float&) (NuppelVideoPlayer.cpp:5277)
   by 0x442AAF4: PreviewGenerator::GetScreenGrab(ProgramInfo const*, 
QString const&, int, int&, int&, int&, float&) (previewgenerator.cpp:487)
   by 0x442CAA8: PreviewGenerator::LocalPreviewRun() 
(previewgenerator.cpp:292)
   by 0x442CF53: PreviewGenerator::Run() (previewgenerator.cpp:160)
   by 0x442DC14: PreviewGenerator::PreviewRun(void*) 
(previewgenerator.cpp:180)
   by 0x61A418A: (within /lib/libpthread-2.6.1.so)
   by 0x638D24D: clone (in /lib/libc-2.6.1.so)

1,200 bytes in 1 blocks are definitely lost in loss record 452 of 483
   at 0x4021ABE: calloc (in 
/usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
   by 0x63AA005: getifaddrs (in /lib/libc-2.6.1.so)
   by 0x50C7CD5: GetIPAddressList(QStringList&) (upnputil.cpp:67)
   by 0x50BFB16: UPnp::Initialize(int, HttpServer*) (upnp.cpp:75)
   by 0x5345E6C: MythContextPrivate::InitUPnP() (mythcontext.cpp:1166)
   by 0x5346809: MythContextPrivate::DefaultUPnP(QString&) 
(mythcontext.cpp:1359)
   by 0x5354DAE: MythContextPrivate::FindDatabase(bool, bool) 
(mythcontext.cpp:586)
   by 0x53557A7: MythContextPrivate::Init(bool, UPnp*, bool, bool) 
(mythcontext.cpp:538)
   by 0x5355C84: MythContext::Init(bool, UPnp*, bool, bool) 
(mythcontext.cpp:1450)
   by 0x8093201: main (main.cpp:486)

21,264 (104 direct, 21,160 indirect) bytes in 2 blocks are definitely 
lost in loss record 472 of 483
   at 0x4023194: operator new(unsigned) (in 
/usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
   by 0x4735D47: ChannelBase::InitializeInputs() (channelbase.cpp:422)
   by 0x481ED68: Channel::InitializeInputs() (channel.cpp:229)
   by 0x48202D6: Channel::Open() (channel.cpp:83)
   by 0x47DF1AF: TVRec::CreateChannel(QString const&) (tv_rec.cpp:201)
   by 0x47E2C47: TVRec::Init() (tv_rec.cpp:242)
   by 0x8090E11: setupTVs(bool, bool&) (main.cpp:145)
   by 0x8094AD5: main (main.cpp:618)

128 bytes in 1 blocks are possibly lost in loss record 473 of 483
   at 0x4022E14: operator new[](unsigned) (in 
/usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
   by 0x5E119EE: QString::setLength(unsigned) (in 
/usr/qt/3/lib/libqt-mt.so.3.3.8)
   by 0x5E11E8B: QString::real_detach() (in /usr/qt/3/lib/libqt-mt.so.3.3.8)
   by 0x8079456: QString::detach() (qstring.h:854)
   by 0x80794C9: QDeepCopy<QString>::operator QString() (qdeepcopy.h:69)
   by 0x450CCB7: DBChannel::operator=(DBChannel const&) (channelutil.cpp:34)
   by 0x4514643: DBChannel::DBChannel(DBChannel const&) (channelutil.cpp:21)
   by 0x451D6D2: void std::_Construct<DBChannel, DBChannel>(DBChannel*, 
DBChannel const&) (stl_construct.h:81)
   by 0x451DA7A: DBChannel* 
std::__uninitialized_copy_aux<__gnu_cxx::__normal_iterator<DBChannel 
const*, std::vector<DBChannel, std::allocator<DBChannel> > >, 
DBChannel*>(__gnu_cxx::__normal_iterator<DBChannel const*, 
std::vector<DBChannel, std::allocator<DBChannel> > >, 
__gnu_cxx::__normal_iterator<DBChannel const*, std::vector<DBChannel, 
std::allocator<DBChannel> > >, DBChannel*, __false_type) 
(stl_uninitialized.h:86)
   by 0x451DB22: DBChannel* 
std::uninitialized_copy<__gnu_cxx::__normal_iterator<DBChannel const*, 
std::vector<DBChannel, std::allocator<DBChannel> > >, 
DBChannel*>(__gnu_cxx::__normal_iterator<DBChannel const*, 
std::vector<DBChannel, std::allocator<DBChannel> > >, 
__gnu_cxx::__normal_iterator<DBChannel const*, std::vector<DBChannel, 
std::allocator<DBChannel> > >, DBChannel*) (stl_uninitialized.h:113)
   by 0x451DB54: DBChannel* 
std::__uninitialized_copy_a<__gnu_cxx::__normal_iterator<DBChannel 
const*, std::vector<DBChannel, std::allocator<DBChannel> > >, 
DBChannel*, DBChannel>(__gnu_cxx::__normal_iterator<DBChannel const*, 
std::vector<DBChannel, std::allocator<DBChannel> > >, 
__gnu_cxx::__normal_iterator<DBChannel const*, std::vector<DBChannel, 
std::allocator<DBChannel> > >, DBChannel*, std::allocator<DBChannel>) 
(stl_uninitialized.h:254)
   by 0x473AD34: std::vector<DBChannel, std::allocator<DBChannel> 
 >::vector(std::vector<DBChannel, std::allocator<DBChannel> > const&) 
(stl_vector.h:234)


More information about the mythtv-dev mailing list