On Mon, May 28, 2012 at 3:08 AM, Noel O'Boyle <baoilleach@gmail.com> wrote:
> Now I've checked the tautomer tests, and it also fails with the "stock"
> r4758, i.e. before I changed smilesformat.cpp.
>
>    $ bin/test_tautomer
>
>    /home/cjames/openbabel-2.3.x-r4758/source/test/tautomertest.cpp:76:
> canonicalTautomers.size() == 1 [13 == 1] (FAIL)

I think there's something wrong with your setup because if you go back
in time on the dashboard you can see that the tests passed until last
week. I typically run the tests with "ctest -R taut* -VV", which sets
some environment variables and then runs the test from the correct
directory with verbose output.

Hmmm ... something isn't adding up.  I double-checked that I have an unaltered OpenBabel source tree at revision 4758.

$ svn diff -r4758
$

I.e. it's a completely stock version of OpenBabel 2.3.x.  I'm using Ubuntu 10.04 ("stable") release, fully updated. I don't have any environment variables set that would affect OpenBabel.  After "make install", I ran  "ctest -R '.*' -VV" and got lots of segfaults (see summary below).

I attached some output from valgrind below for one particular test (cansmi), which seems to be typical. My first guess is that it's a problem in the SMARTS matching system that's causing a double-free of memory.

Craig


The following tests passed:
        spectrophore_Test
        squareplanar_Test
        tautomer_Test
        tetrahedral_Test
        tetranonplanar_Test
        tetraplanar_Test
        uniqueid_Test
        atom_Test
        bond_Test
        datatest_Test
        internalcoord_Test
        invalidsmarts_Test
        math_Test
        smartsparse_Test
        unitcell_Test
        pytest_babel
        pytest_sym
        pytest_smartssym
        pytest_fastsearch
        pytest_unique
        pytest_kekule

36% tests passed, 38 tests failed out of 59

Total Test time (real) = 136.52 sec

The following tests FAILED:
          1 - automorphism_Test (SEGFAULT)
          2 - builder_Test (SEGFAULT)
          3 - canonconsistent_Test (SEGFAULT)
          4 - canonstable_Test (SEGFAULT)
          5 - cistrans_Test (SEGFAULT)
          6 - graphsym_Test (SEGFAULT)
          7 - implicitH_Test (SEGFAULT)
          8 - lssr_Test (SEGFAULT)
          9 - isomorphism_Test (SEGFAULT)
         10 - rotor_Test (SEGFAULT)
         11 - shuffle_Test (SEGFAULT)
         12 - smiles_Test (SEGFAULT)
         15 - stereo_Test (SEGFAULT)
         16 - stereoperception_Test (SEGFAULT)
         22 - inchiSamples.sdf_Test (SEGFAULT)
         23 - inchiSamplesTechMan.sdf_Test (SEGFAULT)
         24 - inchiSteffen_PubChem.smi_Test (SEGFAULT)
         25 - aromatest_Test (SEGFAULT)
         28 - cansmi_Test (SEGFAULT)
         29 - charge-mmff94_Test (SEGFAULT)
         30 - charge-gasteiger_Test (SEGFAULT)
         31 - conversion_Test (SEGFAULT)
         33 - ffgaff_Test (SEGFAULT)
         34 - ffghemical_Test (SEGFAULT)
         35 - ffmmff94_Test (SEGFAULT)
         36 - ffuff_Test (SEGFAULT)
         37 - formalcharge_Test (SEGFAULT)
         38 - format_Test (SEGFAULT)
         39 - formula_Test (SEGFAULT)
         42 - invalidsmiles_Test (SEGFAULT)
         43 - iterators_Test (SEGFAULT)
         44 - logp_psa_Test (SEGFAULT)
         46 - mol_Test (SEGFAULT)
         47 - phmodel_Test (SEGFAULT)
         48 - residue_Test (SEGFAULT)
         49 - ringtest_Test (SEGFAULT)
         50 - smartstest_Test (SEGFAULT)
         52 - smilesmatch_Test (SEGFAULT)
Errors while running CTest


==25027== Invalid read of size 8
==25027==    at 0x52FDB68: OpenBabel::FreePattern(OpenBabel::Pattern*) (parsmart.cpp:544)
==25027==    by 0x52FE433: OpenBabel::OBSmartsPattern::~OBSmartsPattern() (parsmart.cpp:1787)
==25027==    by 0x530C2EC: OpenBabel::OBPhModel::~OBPhModel() (phmodel.h:40)
==25027==    by 0x4E6662F: __cxa_finalize (cxa_finalize.c:56)
==25027==    by 0x520B865: ??? (in /home/cjames/openbabel-2.3.x/lib/libopenbabel.so.4.0.0)
==25027==    by 0x5371240: ??? (in /home/cjames/openbabel-2.3.x/lib/libopenbabel.so.4.0.0)
==25027==    by 0x4E66261: exit (exit.c:78)
==25027==    by 0x4E4BC53: (below main) (libc-start.c:258)
==25027==  Address 0x6398bd8 is 24 bytes inside a block of size 48 free'd
==25027==    at 0x4C26DCF: operator delete(void*) (vg_replace_malloc.c:387)
==25027==    by 0x52FE433: OpenBabel::OBSmartsPattern::~OBSmartsPattern() (parsmart.cpp:1787)
==25027==    by 0x530C2EC: OpenBabel::OBPhModel::~OBPhModel() (phmodel.h:40)
==25027==    by 0x4E66261: exit (exit.c:78)
==25027==    by 0x4E4BC53: (below main) (libc-start.c:258)
==25027==
==25027== Invalid read of size 8
==25027==    at 0x52FDB6F: OpenBabel::FreePattern(OpenBabel::Pattern*) (parsmart.cpp:544)
==25027==    by 0x52FE433: OpenBabel::OBSmartsPattern::~OBSmartsPattern() (parsmart.cpp:1787)
==25027==    by 0x530C2EC: OpenBabel::OBPhModel::~OBPhModel() (phmodel.h:40)
==25027==    by 0x4E6662F: __cxa_finalize (cxa_finalize.c:56)
==25027==    by 0x520B865: ??? (in /home/cjames/openbabel-2.3.x/lib/libopenbabel.so.4.0.0)
==25027==    by 0x5371240: ??? (in /home/cjames/openbabel-2.3.x/lib/libopenbabel.so.4.0.0)
==25027==    by 0x4E66261: exit (exit.c:78)
==25027==    by 0x4E4BC53: (below main) (libc-start.c:258)
==25027==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==25027==
==25027==
==25027== Process terminating with default action of signal 11 (SIGSEGV)
==25027==  Access not within mapped region at address 0x0
==25027==    at 0x52FDB6F: OpenBabel::FreePattern(OpenBabel::Pattern*) (parsmart.cpp:544)
==25027==    by 0x52FE433: OpenBabel::OBSmartsPattern::~OBSmartsPattern() (parsmart.cpp:1787)
==25027==    by 0x530C2EC: OpenBabel::OBPhModel::~OBPhModel() (phmodel.h:40)
==25027==    by 0x4E6662F: __cxa_finalize (cxa_finalize.c:56)
==25027==    by 0x520B865: ??? (in /home/cjames/openbabel-2.3.x/lib/libopenbabel.so.4.0.0)
==25027==    by 0x5371240: ??? (in /home/cjames/openbabel-2.3.x/lib/libopenbabel.so.4.0.0)
==25027==    by 0x4E66261: exit (exit.c:78)
==25027==    by 0x4E4BC53: (below main) (libc-start.c:258)
==25027==  If you believe this happened as a result of a stack
==25027==  overflow in your program's main thread (unlikely but
==25027==  possible), you can try to increase the size of the
==25027==  main thread stack using the --main-stacksize= flag.
==25027==  The main thread stack size used in this run was 8388608.