Standalone Program (HistPresent) with 6.12.04, ub 16.04, g++5.4.0 crash

Dear Rooters,
my HistPresent ran happily for ~20 y with root_0.9 - 6.11.02
With 6.12.04 it crashes anywhere.
valgrind gives 300 lines of diags coming from the 3rd line of main
before any user code:
TRint::TRint(char const*, int*, char**, void*, int, bool) (TRint.cxx:146)

I add the output of :
valgrind --tool=memcheck --suppressions=$ROOTSYS/etc/valgrind-root.supp
ldd which HistPresent
an example of rootcling …
Note: Compiling and linking of root and HistPresent worked without problems

Thanks for a hint where to start
Cheers
Otto

rootcling_61204.txt (246 Bytes)
hpr_61204_valgrind.txt (35.0 KB)
hpr_ldd.txt (3.4 KB)

Hi Otto,
According to the trace back you posted it seems to me that @pcanal may have an idea about it.
Cheers,
Olivier

What does

gROOT->GetListOfCleanups()->ls();

prints when run ‘during’ the failing case?

What is at line 346 of your file HistPresent.cxx ?

Thanks,
Philippe.

PS. Did you recompile completely your code when updating to the latest version of ROOT?

Hi Otto,

Is this problem resolved?

Thanks,
Philippe.

Otto mentioned:

yes I found my problems:
Essentially some of the destructors had not been prepared
to run without the “normal” constructor,
i.e. dtors used not initialized values.
This never hurt before 6.12.04

Indeed, in v6.12/04 a class which has instance added to a THashList or THashTable will have its default constructor and destructor called; this is part of a new feature checking that if a class overload TObject::Hash, it calls RecursiveRemove in its destructor. In v6.12/06 we reduced this check to only the classes that overload TObject::Hash.

Cheers,
Philippe.