Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

valgrind issues from CRAN #32

Open
lawremi opened this issue Nov 30, 2014 · 0 comments
Open

valgrind issues from CRAN #32

lawremi opened this issue Nov 30, 2014 · 0 comments

Comments

@lawremi
Copy link
Member

lawremi commented Nov 30, 2014

BR ran valgrind on qtbase and there were many errors. Some might be fixed already in git, and many are seemingly internal to Qt and the GTK+ stack (how is GTK involved?). But these probably need to be addressed:

==2322== 16 bytes in 1 blocks are definitely lost in loss record 392 of 3,962
==2322==    at 0x4A06965: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==2322==    by 0x101B4A6E: RDynamicQObject::createSlot(char const*) (packages/tests-vg/qtbase/src/RDynamicQObject.cpp:26)
==2322==    by 0x101B3988: DynamicQObject::connectDynamicSlot(QObject*, char const*, char const*) (packages/tests-vg/qtbase/src/dynamicqobject.cpp:42)
==2322==    by 0x101B2ED5: qt_qconnect (packages/tests-vg/qtbase/src/connect.cpp:21)
==2322==    by 0x482A6F: do_dotcall (svn/R-devel/src/main/dotcode.c:1251)
==2322==    by 0x4C2DCE: Rf_eval (svn/R-devel/src/main/eval.c:655)
==2322==    by 0x4C4E38: do_begin (svn/R-devel/src/main/eval.c:1643)
==2322==    by 0x4C2C38: Rf_eval (svn/R-devel/src/main/eval.c:627)
==2322==    by 0x4C3E1E: Rf_applyClosure (svn/R-devel/src/main/eval.c:1039)
==2322==    by 0x4C2A23: Rf_eval (svn/R-devel/src/main/eval.c:674)
==2322==    by 0x4C6075: do_set (svn/R-devel/src/main/eval.c:2034)
==2322==    by 0x4C2C38: Rf_eval (svn/R-devel/src/main/eval.c:627)

Cause: DynamicQObject seems to be missing a destructor...

==2322== 24 bytes in 1 blocks are definitely lost in loss record 596 of 3,962
==2322==    at 0x4A06965: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==2322==    by 0x1023C55A: registerSmokeModule (packages/tests-vg/qtbase/src/module.cpp:400)
==2322==    by 0x1023C5E5: init_smoke() (packages/tests-vg/qtbase/src/module.cpp:407)
==2322==    by 0x1019BEB8: R_init_qtbase (packages/tests-vg/qtbase/src/init.cpp:140)
==2322==    by 0x41BF7D: AddDLL (svn/R-devel/src/main/Rdynload.c:569)
==2322==    by 0x41C1F6: do_dynload (svn/R-devel/src/main/Rdynload.c:884)
==2322==    by 0x4B4210: bcEval (svn/R-devel/src/main/eval.c:5398)
==2322==    by 0x4C2A6F: Rf_eval (svn/R-devel/src/main/eval.c:558)
==2322==    by 0x4C3E1E: Rf_applyClosure (svn/R-devel/src/main/eval.c:1039)
==2322==    by 0x4BB5AA: bcEval (svn/R-devel/src/main/eval.c:5370)
==2322==    by 0x4C2A6F: Rf_eval (svn/R-devel/src/main/eval.c:558)
==2322==    by 0x4C3E1E: Rf_applyClosure (svn/R-devel/src/main/eval.c:1039)

Cause: We register smoke modules statically. Could free them in .onUnload.

==2322== 32 bytes in 2 blocks are definitely lost in loss record 802 of 3,962
==2322==    at 0x4A06965: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==2322==    by 0x101B8796: SmokeMethodCache::insert(MethodCall const&, Smoke::ModuleIndex const&) (packages/tests-vg/qtbase/src/SmokeClass.cpp:39)
==2322==    by 0x101B91B7: SmokeClass::findIndex(MethodCall const&) const (packages/tests-vg/qtbase/src/SmokeClass.cpp:132)
==2322==    by 0x101B928D: SmokeClass::findMethod(MethodCall const&) const (packages/tests-vg/qtbase/src/SmokeClass.cpp:139)
==2322==    by 0x101C13B2: DynamicBinding::invoke(SEXPREC*, SEXPREC*) (packages/tests-vg/qtbase/src/DynamicBinding.cpp:8)
==2322==    by 0x101B3160: qt_qinvokeStatic (packages/tests-vg/qtbase/src/invoke.cpp:28)
==2322==    by 0x482A6F: do_dotcall (svn/R-devel/src/main/dotcode.c:1251)
==2322==    by 0x4C2DCE: Rf_eval (svn/R-devel/src/main/eval.c:655)
==2322==    by 0x4C4E38: do_begin (svn/R-devel/src/main/eval.c:1643)
==2322==    by 0x4C2C38: Rf_eval (svn/R-devel/src/main/eval.c:627)
==2322==    by 0x4C3E1E: Rf_applyClosure (svn/R-devel/src/main/eval.c:1039)
==2322==    by 0x4C2A23: Rf_eval (svn/R-devel/src/main/eval.c:674)

Cause: We cache smoke methods; could free in .onUnload.

==2322== 16 bytes in 1 blocks are definitely lost in loss record 393 of 3,962
==2322==    at 0x4A06965: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==2322==    by 0x101B635D: Class::fromSexp(SEXPREC*, bool) (packages/tests-vg/qtbase/src/Class.cpp:62)
==2322==    by 0x101BF3FA: qt_qinitClass (packages/tests-vg/qtbase/src/classes.cpp:20)
==2322==    by 0x482A6F: do_dotcall (svn/R-devel/src/main/dotcode.c:1251)
==2322==    by 0x4C2DCE: Rf_eval (svn/R-devel/src/main/eval.c:655)
==2322==    by 0x4C4E38: do_begin (svn/R-devel/src/main/eval.c:1643)
==2322==    by 0x4C2C38: Rf_eval (svn/R-devel/src/main/eval.c:627)
==2322==    by 0x4C3E1E: Rf_applyClosure (svn/R-devel/src/main/eval.c:1039)
==2322==    by 0x4C2A23: Rf_eval (svn/R-devel/src/main/eval.c:674)
==2322==    by 0x4C4E38: do_begin (svn/R-devel/src/main/eval.c:1643)
==2322==    by 0x4C2C38: Rf_eval (svn/R-devel/src/main/eval.c:627)
==2322==    by 0x4C3E1E: Rf_applyClosure (svn/R-devel/src/main/eval.c:1039)

Cause: We cache Class objects; could release them in .onLoad.

=2322== 40 bytes in 1 blocks are possibly lost in loss record 975 of 3,962
==2322==    at 0x4A06965: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==2322==    by 0x34FCA98A87: QHashData::detach_helper2(void (*)(QHashData::Node*, void*), void (*)(QHashData::Node*), int, int) (in /usr/lib64/libQtCore.so.4.8.6)
==2322==    by 0x101BC0CD: QHash<char const*, int>::detach_helper() (/usr/include/QtCore/qhash.h:584)
==2322==    by 0x101BC143: QHash<char const*, int>::detach() (in /data/blackswan/ripley/R/packages/tests-vg/qtbase.Rcheck/qtbase/libs/qtbase.so)
==2322==    by 0x101BB551: QHash<char const*, int>::operator[](char const* const&) (/usr/include/QtCore/qhash.h:740)
==2322==    by 0x101BA070: SmokeClass::createEnumValuesMap() const (packages/tests-vg/qtbase/src/SmokeClass.cpp:255)
==2322==    by 0x101B9EE6: SmokeClass::enumValues() const (packages/tests-vg/qtbase/src/SmokeClass.cpp:236)
==2322==    by 0x10241B91: qt_qenums (packages/tests-vg/qtbase/src/smoke.cpp:101)
==2322==    by 0x482A6F: do_dotcall (svn/R-devel/src/main/dotcode.c:1251)
==2322==    by 0x4C2DCE: Rf_eval (svn/R-devel/src/main/eval.c:655)
==2322==    by 0x4C4E38: do_begin (svn/R-devel/src/main/eval.c:1643)
==2322==    by 0x4C2C38: Rf_eval (svn/R-devel/src/main/eval.c:627)

Cause: We need to release cached enum information in a SmokeClass destructor.

==2322== 40 bytes in 1 blocks are possibly lost in loss record 980 of 3,962
==2322==    at 0x4A06965: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==2322==    by 0x34FCA98A87: QHashData::detach_helper2(void (*)(QHashData::Node*, void*), void (*)(QHashData::Node*), int, int) (in /usr/lib64/libQtCore.so.4.8.6)
==2322==    by 0x101B459F: QHash<QByteArray, int>::detach_helper() (/usr/include/QtCore/qhash.h:584)
==2322==    by 0x101B41FD: QHash<QByteArray, int>::detach() (in /data/blackswan/ripley/R/packages/tests-vg/qtbase.Rcheck/qtbase/libs/qtbase.so)
==2322==    by 0x101BE1F7: QHash<QByteArray, int>::insert(QByteArray const&, int const&) (/usr/include/QtCore/qhash.h:756)
==2322==    by 0x101BDB06: MocClass::hasMethod(char const*, QFlags<Method::Qualifier>) const (packages/tests-vg/qtbase/src/MocClass.cpp:86)
==2322==    by 0x1023FBF8: InstanceObjectTable::methodExists(char const*) const (packages/tests-vg/qtbase/src/InstanceObjectTable.cpp:65)
==2322==    by 0x1024001B: InstanceObjectTable::get(char const*, Rboolean*) const (packages/tests-vg/qtbase/src/InstanceObjectTable.cpp:121)
==2322==    by 0x1023F215: ObjectTable_get(char const*, Rboolean*, _R_ObjectTable*) (packages/tests-vg/qtbase/src/ObjectTable.cpp:24)
==2322==    by 0x54F102: R_subset3_dflt (svn/R-devel/src/main/subset.c:1265)
==2322==    by 0x54F4A5: do_subset3 (svn/R-devel/src/main/subset.c:1150)
==2322==    by 0x4C2C38: Rf_eval (svn/R-devel/src/main/eval.c:627)

Cause: We need to release cached method information in a MocClass destructor.

==2322== 48 bytes in 1 blocks are definitely lost in loss record 1,057 of 3,962
==2322==    at 0x4A06965: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==2322==    by 0x101B96B9: SmokeClass::methods(QFlags<Method::Qualifier>) const (packages/tests-vg/qtbase/src/SmokeClass.cpp:189)
==2322==    by 0x101B9953: SmokeClass::methods(QFlags<Method::Qualifier>) const (packages/tests-vg/qtbase/src/SmokeClass.cpp:205)
==2322==    by 0x101BD85D: MocClass::methods(QFlags<Method::Qualifier>) const (packages/tests-vg/qtbase/src/MocClass.cpp:71)
==2322==    by 0x101B9953: SmokeClass::methods(QFlags<Method::Qualifier>) const (packages/tests-vg/qtbase/src/SmokeClass.cpp:205)
==2322==    by 0x101BD85D: MocClass::methods(QFlags<Method::Qualifier>) const (packages/tests-vg/qtbase/src/MocClass.cpp:71)
==2322==    by 0x101B9953: SmokeClass::methods(QFlags<Method::Qualifier>) const (packages/tests-vg/qtbase/src/SmokeClass.cpp:205)
==2322==    by 0x101BD85D: MocClass::methods(QFlags<Method::Qualifier>) const (packages/tests-vg/qtbase/src/MocClass.cpp:71)
==2322==    by 0x101B9953: SmokeClass::methods(QFlags<Method::Qualifier>) const (packages/tests-vg/qtbase/src/SmokeClass.cpp:205)
==2322==    by 0x101BD85D: MocClass::methods(QFlags<Method::Qualifier>) const (packages/tests-vg/qtbase/src/MocClass.cpp:71)
==2322==    by 0x102414A5: qt_qmethods (packages/tests-vg/qtbase/src/smoke.cpp:47)
==2322==    by 0x482A6F: do_dotcall (svn/R-devel/src/main/dotcode.c:1251)

Cause: We need to release cached method information in a SmokeClass destructor.

==2322== 93,235 (96 direct, 93,139 indirect) bytes in 3 blocks are definitely lost in loss record 3,915 of 3,962
==2322==    at 0x4A06965: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==2322==    by 0x101B5398: ClassFactory::createClass(Smoke*, int) (packages/tests-vg/qtbase/src/ClassFactory.cpp:13)
==2322==    by 0x101B5F68: Class::fromSmokeId(Smoke*, int) (packages/tests-vg/qtbase/src/Class.cpp:27)
==2322==    by 0x101B6148: Class::fromSmokeName(Smoke*, char const*) (packages/tests-vg/qtbase/src/Class.cpp:43)
==2322==    by 0x101B6331: Class::fromSexp(SEXPREC*, bool) (packages/tests-vg/qtbase/src/Class.cpp:60)
==2322==    by 0x10241D64: qt_qparentClasses (packages/tests-vg/qtbase/src/smoke.cpp:123)
==2322==    by 0x482A6F: do_dotcall (svn/R-devel/src/main/dotcode.c:1251)
==2322==    by 0x4C2DCE: Rf_eval (svn/R-devel/src/main/eval.c:655)
==2322==    by 0x4C4E38: do_begin (svn/R-devel/src/main/eval.c:1643)
==2322==    by 0x4C2C38: Rf_eval (svn/R-devel/src/main/eval.c:627)
==2322==    by 0x4C3E1E: Rf_applyClosure (svn/R-devel/src/main/eval.c:1039)
==2322==    by 0x4C2A23: Rf_eval (svn/R-devel/src/main/eval.c:674)

Cause: We need to release the Class cache in .onUnload.

==2322== 102,836 (96 direct, 102,740 indirect) bytes in 2 blocks are definitely lost in loss record 3,919 of 3,962
==2322==    at 0x4A06965: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==2322==    by 0x1023D256: SmokeObject::fromPtr(void*, Class const*, bool, bool) (packages/tests-vg/qtbase/src/SmokeObject.cpp:23)
==2322==    by 0x1023D589: SmokeObject::sexpFromPtr(void*, Class const*, bool, bool) (packages/tests-vg/qtbase/src/SmokeObject.cpp:95)
==2322==    by 0x1023D65A: SmokeObject::sexpFromPtr(void*, Smoke*, int, bool, bool) (packages/tests-vg/qtbase/src/SmokeObject.cpp:112)
==2322==    by 0x1023D6BC: SmokeObject::sexpFromPtr(void*, SmokeType const&, bool, bool) (packages/tests-vg/qtbase/src/SmokeObject.cpp:119)
==2322==    by 0x101A60B2: ptr_to_sexp(void*, SmokeType const&, bool) (packages/tests-vg/qtbase/src/convert.hpp:351)
==2322==    by 0x101C3B19: void marshal_to_sexp<SmokeClassWrapper>(MethodCall*) (packages/tests-vg/qtbase/src/type-handlers.cpp:239)
==2322==    by 0x101D3A79: void marshal<SmokeClassWrapper>(MethodCall*) (packages/tests-vg/qtbase/src/type-handlers.hpp:176)
==2322==    by 0x101C3CB7: marshal_basetype(MethodCall*) (packages/tests-vg/qtbase/src/type-handlers.cpp:299)
==2322==    by 0x101C2CF1: MethodCall::marshalItem() (packages/tests-vg/qtbase/src/MethodCall.hpp:138)
==2322==    by 0x101C2433: MethodCall::marshal() (packages/tests-vg/qtbase/src/MethodCall.cpp:87)
==2322==    by 0x101C25CB: MethodCall::eval() (packages/tests-vg/qtbase/src/MethodCall.cpp:117)
==2322== 

Cause: We need to release the SmokeObject cache in .onUnload.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant