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

Fix invalid memory read in ring perception #2

Closed
kylelutz opened this issue May 9, 2011 · 1 comment
Closed

Fix invalid memory read in ring perception #2

kylelutz opened this issue May 9, 2011 · 1 comment
Labels

Comments

@kylelutz
Copy link
Owner

kylelutz commented May 9, 2011

Problem: Valgrind reports an "Invalid read of size 4" in the SSSR implementation in the libchemkit library.

How to reproduce: Run valgrind on the benzimidazole method of the ring-perception auto test. The output is as follows:

$ valgrind ./ringperceptiontest benzimidazole
==25592== Memcheck, a memory error detector
==25592== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==25592== Using Valgrind-3.6.0.SVN-Debian and LibVEX; rerun with -h for copyright info
==25592== Command: ./ringperceptiontest benzimidazole
==25592== 
********* Start testing of RingPerceptionTest *********
Config: Using QTest library 4.7.0, Qt 4.7.0
PASS   : RingPerceptionTest::initTestCase()
==25592== Invalid read of size 4
==25592==    at 0x4E865D2: chemkit::(anonymous namespace)::Sssr::isUnique(std::vector > const&) const (in /home/kyle/dev/chemkit/build/src/chemkit/libchemkit.so)
==25592==    by 0x4E883D6: chemkit::MolecularGraph::sssr_rpPath(chemkit::MolecularGraph const*) (in /home/kyle/dev/chemkit/build/src/chemkit/libchemkit.so)
==25592==    by 0x4E826F6: chemkit::MolecularGraph::sssr(chemkit::Fragment const*) (in /home/kyle/dev/chemkit/build/src/chemkit/libchemkit.so)
==25592==    by 0x4E827EA: chemkit::MolecularGraph::sssr(chemkit::Molecule const*) (in /home/kyle/dev/chemkit/build/src/chemkit/libchemkit.so)
==25592==    by 0x4E91894: chemkit::Molecule::rings() const (in /home/kyle/dev/chemkit/build/src/chemkit/libchemkit.so)
==25592==    by 0x4E919A8: chemkit::Molecule::ringCount() const (in /home/kyle/dev/chemkit/build/src/chemkit/libchemkit.so)
==25592==    by 0x40FD06: RingPerceptionTest::benzimidazole() (in /home/kyle/dev/chemkit/build/tests/auto/chemkit/ring-perception/ringperceptiontest)
==25592==    by 0x42E987: RingPerceptionTest::qt_metacall(QMetaObject::Call, int, void**) (in /home/kyle/dev/chemkit/build/tests/auto/chemkit/ring-perception/ringperceptiontest)
==25592==    by 0x545CBF8: QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const (in /usr/lib/libQtCore.so.4.7.0)
==25592==    by 0x545E305: QMetaObject::invokeMethod(QObject*, char const*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) (in /usr/lib/libQtCore.so.4.7.0)
==25592==    by 0x50D1385: ??? (in /usr/lib/libQtTest.so.4.7.0)
==25592==    by 0x50D2321: QTest::qExec(QObject*, int, char**) (in /usr/lib/libQtTest.so.4.7.0)
==25592==  Address 0x8953ee4 is 0 bytes after a block of size 20 alloc'd
==25592==    at 0x4C28973: operator new(unsigned long) (vg_replace_malloc.c:261)
==25592==    by 0x4E6F229: std::vector >::vector(std::vector > const&) (in /home/kyle/dev/chemkit/build/src/chemkit/libchemkit.so)
==25592==    by 0x4E6FA0C: std::vector >, std::allocator > > >::_M_insert_aux(__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, std::vector > const&) (in /home/kyle/dev/chemkit/build/src/chemkit/libchemkit.so)
==25592==    by 0x4E88D1A: chemkit::MolecularGraph::sssr_rpPath(chemkit::MolecularGraph const*) (in /home/kyle/dev/chemkit/build/src/chemkit/libchemkit.so)
==25592==    by 0x4E826F6: chemkit::MolecularGraph::sssr(chemkit::Fragment const*) (in /home/kyle/dev/chemkit/build/src/chemkit/libchemkit.so)
==25592==    by 0x4E827EA: chemkit::MolecularGraph::sssr(chemkit::Molecule const*) (in /home/kyle/dev/chemkit/build/src/chemkit/libchemkit.so)
==25592==    by 0x4E91894: chemkit::Molecule::rings() const (in /home/kyle/dev/chemkit/build/src/chemkit/libchemkit.so)
==25592==    by 0x4E919A8: chemkit::Molecule::ringCount() const (in /home/kyle/dev/chemkit/build/src/chemkit/libchemkit.so)
==25592==    by 0x40FD06: RingPerceptionTest::benzimidazole() (in /home/kyle/dev/chemkit/build/tests/auto/chemkit/ring-perception/ringperceptiontest)
==25592==    by 0x42E987: RingPerceptionTest::qt_metacall(QMetaObject::Call, int, void**) (in /home/kyle/dev/chemkit/build/tests/auto/chemkit/ring-perception/ringperceptiontest)
==25592==    by 0x545CBF8: QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const (in /usr/lib/libQtCore.so.4.7.0)
==25592==    by 0x545E305: QMetaObject::invokeMethod(QObject*, char const*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) (in /usr/lib/libQtCore.so.4.7.0)
==25592== 
PASS   : RingPerceptionTest::benzimidazole()
PASS   : RingPerceptionTest::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
********* Finished testing of RingPerceptionTest *********
==25592== 
==25592== HEAP SUMMARY:
==25592==     in use at exit: 760 bytes in 7 blocks
==25592==   total heap usage: 1,774 allocs, 1,767 frees, 57,684 bytes allocated
==25592== 
==25592== LEAK SUMMARY:
==25592==    definitely lost: 0 bytes in 0 blocks
==25592==    indirectly lost: 0 bytes in 0 blocks
==25592==      possibly lost: 0 bytes in 0 blocks
==25592==    still reachable: 760 bytes in 7 blocks
==25592==         suppressed: 0 bytes in 0 blocks
==25592== Rerun with --leak-check=full to see details of leaked memory
==25592== 
==25592== For counts of detected and suppressed errors, rerun with: -v
==25592== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 4 from 4)
@kylelutz
Copy link
Owner Author

Fixed by: 0a2a657

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

No branches or pull requests

1 participant