[Kst] Valgrind of current trunk shows errors/leaks...

Adam Treat treat at kde.org
Wed Sep 13 18:53:34 CEST 2006


Hi all,

Using valgrind to debug a problem in my branch, I found the some further 
problems in trunk.  Valgrind is reporting three errors and seven leaks in 
trunk.  I've fixed one of the errors in my branch where a conditional was 
dependent on a potentially uninitialized value.  I've attached the patch.

Another error involves the VectorSelector widget displaying a pixmap from 
QImage.  The last error involves ICE via dcop I presume.  The leaks all seem 
to involve either X or the Qt libraries.  This is on SuSE 10.0 with the 
standard libraries shipped by this distribution.  Valgrind version = 
valgrind-3.2.0 installed from source.

Cheers,

Adam
-------------- next part --------------
manyoso at mobile:~> /usr/local/bin/valgrind --tool=memcheck --leak-check=full /opt/kde3/bin/kst
==8800== Memcheck, a memory error detector.
==8800== Copyright (C) 2002-2006, and GNU GPL'd, by Julian Seward et al.
==8800== Using LibVEX rev 1606, a library for dynamic binary translation.
==8800== Copyright (C) 2004-2006, and GNU GPL'd, by OpenWorks LLP.
==8800== Using valgrind-3.2.0, a dynamic binary instrumentation framework.
==8800== Copyright (C) 2000-2006, and GNU GPL'd, by Julian Seward et al.
==8800== For more details, rerun with: -v
==8800==
==8800== Syscall param writev(vector[...]) points to uninitialised byte(s)
==8800==    at 0x5ABF986: do_writev (in /lib/tls/libc-2.3.5.so)
==8800==    by 0x57F22FD: (within /usr/X11R6/lib/libX11.so.6.2)
==8800==    by 0x57F260E: _X11TransWritev (in /usr/X11R6/lib/libX11.so.6.2)
==8800==    by 0x57D6394: _XSend (in /usr/X11R6/lib/libX11.so.6.2)
==8800==    by 0x57CA5A2: (within /usr/X11R6/lib/libX11.so.6.2)
==8800==    by 0x57CA7AA: XPutImage (in /usr/X11R6/lib/libX11.so.6.2)
==8800==    by 0x5133BA4: QPixmap::convertFromImage(QImage const&, int) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x51F1D9F: QPixmap::convertFromImage(QImage const&, QPixmap::ColorMode) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x51F23A2: QPixmap::QPixmap(char const**) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x43B23A4: VectorSelector::VectorSelector(QWidget*, char const*, unsigned) (in /opt/kde3/lib/libkstwidgets.so.1.0.3)
==8800==    by 0x40EDDD4: CurveDialogWidget::CurveDialogWidget(QWidget*, char const*, unsigned) (in /opt/kde3/lib/libkstapp.so.1.0.3)
==8800==    by 0x42158B3: KstCurveDialogI::KstCurveDialogI(QWidget*, char const*, bool, unsigned) (in /opt/kde3/lib/libkstapp.so.1.0.3)
==8800==  Address 0x5B5CF43 is 27 bytes inside a block of size 16,384 alloc'd
==8800==    at 0x401C894: calloc (vg_replace_malloc.c:279)
==8800==    by 0x57C5AE3: XOpenDisplay (in /usr/X11R6/lib/libX11.so.6.2)
==8800==    by 0x5117E6D: qt_init_internal(int*, char**, _XDisplay*, unsigned long, unsigned long) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x511A5A5: qt_init(int*, char**, QApplication::Type) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x518260A: QApplication::construct(int&, char**, QApplication::Type) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x518293A: QApplication::QApplication(int&, char**, bool) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x4DEE53D: KApplication::KApplication(bool, bool) (in /opt/kde3/lib/libkdecore.so.4.2.0)
==8800==    by 0x804E480: main (in /opt/kde3/bin/kst)
==8800==
==8800== Syscall param write(buf) points to uninitialised byte(s)
==8800==    at 0x58C437B: (within /lib/tls/libpthread-2.3.5.so)
==8800==    by 0x58B04BE: _IceTransWrite (in /usr/X11R6/lib/libICE.so.6.3)
==8800==    by 0x58A8745: _IceWrite (in /usr/X11R6/lib/libICE.so.6.3)
==8800==    by 0x58A8821: IceFlush (in /usr/X11R6/lib/libICE.so.6.3)
==8800==    by 0x589A9F0: SmcSetProperties (in /usr/X11R6/lib/libSM.so.6.0)
==8800==    by 0x510A498: sm_setProperty(char const*, char const*, int, SmPropValue*) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x510B40E: sm_setProperty(QString const&, QString const&) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x511A7D9: sm_performSaveYourself(QSessionManagerData*) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x511B121: sm_saveYourselfCallback(_SmcConn*, void*, int, int, int, int) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x589CC66: _SmcProcessMessage (in /usr/X11R6/lib/libSM.so.6.0)
==8800==    by 0x58A8F83: IceProcessMessages (in /usr/X11R6/lib/libICE.so.6.3)
==8800==    by 0x510A663: QSmSocketReceiver::socketActivated(int) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==  Address 0x652A1BC is 12 bytes inside a block of size 1,024 alloc'd
==8800==    at 0x401C894: calloc (vg_replace_malloc.c:279)
==8800==    by 0x58A56D8: IceOpenConnection (in /usr/X11R6/lib/libICE.so.6.3)
==8800==    by 0x589A219: SmcOpenConnection (in /usr/X11R6/lib/libSM.so.6.0)
==8800==    by 0x511B2F1: QSessionManager::QSessionManager(QApplication*, QString&, QString&) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x518181F: QApplication::initialize(int, char**) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x5182638: QApplication::construct(int&, char**, QApplication::Type) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x518293A: QApplication::QApplication(int&, char**, bool) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x4DEE53D: KApplication::KApplication(bool, bool) (in /opt/kde3/lib/libkdecore.so.4.2.0)
==8800==    by 0x804E480: main (in /opt/kde3/bin/kst)
kst: Update thread paused...
kst: Update thread paused...
kst: Update thread paused...
kst: Update thread paused...
kst: Update thread paused...
kst: Update thread paused...
==8800==
==8800== Conditional jump or move depends on uninitialised value(s)
==8800==    at 0x427B2FC: KstApp::loadExtensions() (in /opt/kde3/lib/libkstapp.so.1.0.3)
==8800==    by 0x428A0BC: KstApp::qt_invoke(int, QUObject*) (in /opt/kde3/lib/libkstapp.so.1.0.3)
==8800==    by 0x51DE038: QObject::activate_signal(QConnectionList*, QUObject*) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x552BC01: QSignal::signal(QVariant const&) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x51FAF6A: QSignal::activate() (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x5202AB2: QSingleShotTimer::event(QEvent*) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x517D350: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x517DCD8: QApplication::notify(QObject*, QEvent*) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x4DD735D: KApplication::notify(QObject*, QEvent*) (in /opt/kde3/lib/libkdecore.so.4.2.0)
==8800==    by 0x5171EA3: QEventLoop::activateTimers() (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x512A8FD: QEventLoop::processEvents(unsigned) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x5194489: QEventLoop::processEvents(unsigned, int) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
kst: Update thread paused...
kst: Update thread paused...
kst: Update thread paused...
kst: Update thread paused...
kst: Update thread paused...
kst: Update thread paused...
kst: Update thread paused...
kst: Update thread paused...
kst: Update thread paused...
kst: Update thread paused...
kst: Update thread paused...
kst: Update thread paused...
kst: Update thread paused...
kst: Update thread paused...
kst: Update thread paused...
kst: Update thread paused...
kst: Update thread paused...
kst: Curve Anonymous Vector 2 said UPDATE
kst: Update plots
kst: Posting UpdateDataDialogs
kst: Update timer 200
==8800==
==8800== ERROR SUMMARY: 12 errors from 3 contexts (suppressed: 502 from 3)
==8800== malloc/free: in use at exit: 438,152 bytes in 5,603 blocks.
==8800== malloc/free: 687,751 allocs, 682,148 frees, 29,629,663 bytes allocated.
==8800== For counts of detected errors, rerun with: -v
==8800== searching for pointers to 5,603 not-freed blocks.
==8800== checked 3,825,680 bytes.
==8800==
==8800==
==8800== 20 bytes in 1 blocks are definitely lost in loss record 61 of 230
==8800==    at 0x401B4B9: malloc (vg_replace_malloc.c:149)
==8800==    by 0x566BD4C: XRRFindDisplay (in /usr/X11R6/lib/libXrandr.so.2.0)
==8800==    by 0x566C1DC: XRRQueryExtension (in /usr/X11R6/lib/libXrandr.so.2.0)
==8800==    by 0x5118CD8: qt_init_internal(int*, char**, _XDisplay*, unsigned long, unsigned long) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x511A5A5: qt_init(int*, char**, QApplication::Type) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x518260A: QApplication::construct(int&, char**, QApplication::Type) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x518293A: QApplication::QApplication(int&, char**, bool) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x4DEE53D: KApplication::KApplication(bool, bool) (in /opt/kde3/lib/libkdecore.so.4.2.0)
==8800==    by 0x804E480: main (in /opt/kde3/bin/kst)
==8800==
==8800==
==8800== 204 (12 direct, 192 indirect) bytes in 1 blocks are definitely lost in loss record 78 of 230
==8800==    at 0x401B878: operator new(unsigned) (vg_replace_malloc.c:163)
==8800==    by 0x54A571C: QGList::append(void*) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x6D273F6: ???
==8800==    by 0x6CFA635: ???
==8800==    by 0x53C805D: QInputContextFactory::create(QString const&, QWidget*) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x5147009: QWidget::createInputContext() (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x5149761: QWidget::resetInputContext() (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x52B0F41: QLineEdit::setText(QString const&) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x5302A92: QSpinBox::updateDisplay() (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x5300EA4: QSpinBox::initSpinBox() (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x530141A: QSpinBox::QSpinBox(QWidget*, char const*) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x4274240: KstMonochromeDialog::KstMonochromeDialog(QWidget*, char const*, bool, unsigned) (in /opt/kde3/lib/libkstapp.so.1.0.3)
==8800==
==8800==
==8800== 32 bytes in 1 blocks are definitely lost in loss record 100 of 230
==8800==    at 0x401B878: operator new(unsigned) (vg_replace_malloc.c:163)
==8800==    by 0x6D275BF: ???
==8800==    by 0x53C805D: QInputContextFactory::create(QString const&, QWidget*) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x6CFA30D: ???
==8800==    by 0x6CFA51E: ???
==8800==    by 0x6CFA61A: ???
==8800==    by 0x53C805D: QInputContextFactory::create(QString const&, QWidget*) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x5147009: QWidget::createInputContext() (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x5149761: QWidget::resetInputContext() (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x52B0F41: QLineEdit::setText(QString const&) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x5302A92: QSpinBox::updateDisplay() (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x5300EA4: QSpinBox::initSpinBox() (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==
==8800==
==8800== 68 bytes in 1 blocks are possibly lost in loss record 134 of 230
==8800==    at 0x401C894: calloc (vg_replace_malloc.c:279)
==8800==    by 0x400DCC8: allocate_dtv (in /lib/ld-2.3.5.so)
==8800==    by 0x400DF3B: _dl_allocate_tls (in /lib/ld-2.3.5.so)
==8800==    by 0x58BF8E4: pthread_create@@GLIBC_2.1 (in /lib/tls/libpthread-2.3.5.so)
==8800==    by 0x517632C: QThread::start(QThread::Priority) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x5176515: QThread::start() (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x42875D9: KstApp::KstApp(QWidget*, char const*) (in /opt/kde3/lib/libkstapp.so.1.0.3)
==8800==    by 0x804E5A8: main (in /opt/kde3/bin/kst)
==8800==
==8800==
==8800== 80 bytes in 1 blocks are definitely lost in loss record 140 of 230
==8800==    at 0x401B4B9: malloc (vg_replace_malloc.c:149)
==8800==    by 0x5672363: XcursorCursorsCreate (in /usr/X11R6/lib/libXcursor.so.1.0.2)
==8800==    by 0x5673857: XcursorImagesLoadCursors (in /usr/X11R6/lib/libXcursor.so.1.0.2)
==8800==    by 0x5673953: XcursorImagesLoadCursor (in /usr/X11R6/lib/libXcursor.so.1.0.2)
==8800==    by 0x5676A20: XcursorTryShapeCursor (in /usr/X11R6/lib/libXcursor.so.1.0.2)
==8800==    by 0x57B5FE1: XCreateGlyphCursor (in /usr/X11R6/lib/libX11.so.6.2)
==8800==    by 0x57B6458: XCreateFontCursor (in /usr/X11R6/lib/libX11.so.6.2)
==8800==    by 0x5122CE4: QCursor::update() const (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x5122E03: QCursor::handle() const (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x5149915: qt_x11_enforce_cursor(QWidget*) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x510D147: QApplication::setOverrideCursor(QCursor const&, bool) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x421D30A: KstDoc::openDocument(KURL const&, QString const&, int, int, int, bool) (in /opt/kde3/lib/libkstapp.so.1.0.3)
==8800==
==8800==
==8800== 9,612 (100 direct, 9,512 indirect) bytes in 1 blocks are definitely lost in loss record 202 of 230
==8800==    at 0x401B4B9: malloc (vg_replace_malloc.c:149)
==8800==    by 0x6D9F06E: create_oc (omGeneric.c:1655)
==8800==    by 0x57EF536: XCreateOC (in /usr/X11R6/lib/libX11.so.6.2)
==8800==    by 0x57EE776: XCreateFontSet (in /usr/X11R6/lib/libX11.so.6.2)
==8800==    by 0x6D26A71: ???
==8800==    by 0x6D27344: ???
==8800==    by 0x53C805D: QInputContextFactory::create(QString const&, QWidget*) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x6CFA30D: ???
==8800==    by 0x6CFA51E: ???
==8800==    by 0x6CFA61A: ???
==8800==    by 0x53C805D: QInputContextFactory::create(QString const&, QWidget*) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x5147009: QWidget::createInputContext() (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==
==8800==
==8800== 216 bytes in 1 blocks are definitely lost in loss record 206 of 230
==8800==    at 0x401B4B9: malloc (vg_replace_malloc.c:149)
==8800==    by 0x6D3B535: _XimOpenIM (imInt.c:208)
==8800==    by 0x5821600: (within /usr/X11R6/lib/libX11.so.6.2)
==8800==    by 0x6D3B07F: _XimRegisterIMInstantiateCallback (imInsClbk.c:193)
==8800==    by 0x5821713: (within /usr/X11R6/lib/libX11.so.6.2)
==8800==    by 0x57EF457: XRegisterIMInstantiateCallback (in /usr/X11R6/lib/libX11.so.6.2)
==8800==    by 0x6D27BA5: ???
==8800==    by 0x6D28540: ???
==8800==    by 0x6D28CFC: ???
==8800==    by 0x53C829A: QInputContextPluginPrivate::create(QString const&) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x53C8045: QInputContextFactory::create(QString const&, QWidget*) (in /usr/lib/qt3/lib/libqt-mt.so.3.3.6)
==8800==    by 0x6CFA30D: ???
==8800==
==8800== LEAK SUMMARY:
==8800==    definitely lost: 460 bytes in 6 blocks.
==8800==    indirectly lost: 9,704 bytes in 183 blocks.
==8800==      possibly lost: 68 bytes in 1 blocks.
==8800==    still reachable: 427,920 bytes in 5,413 blocks.
==8800==         suppressed: 0 bytes in 0 blocks.
==8800== Reachable blocks (those to which a pointer was found) are not shown.
==8800== To see them, rerun with: --show-reachable=yes
-------------- next part --------------
A non-text attachment was scrubbed...
Name: conditional.diff
Type: text/x-diff
Size: 1165 bytes
Desc: not available
Url : http://mail.kde.org/pipermail/kst/attachments/20060913/22e8687a/attachment.bin 


More information about the Kst mailing list