I have bumped into a rather strange problem that I am unable to debug any further than I’ve tried so far…
The situation is as follows. The software I’m working with uses ROOT for
- serialization for backup/restore functionality
- the C++ notebooks
We generate, compile and link the dictionaries in one shared library (
libbiodynamo.so), which contains all the core code of the software as well.
Then the problem occurs when we do the following in either a notebook, or in cling:
root : .L libbiodynamo.so root : <macro with some calls into our library> *** Break *** segmentation violation ...
Now the stack trace differs depending on which calls we make. However, if there is a situation that causes a segfault, it segfaults deterministically.
The weird part is that when we compile the same program (with gcc) and then run it, there is no segfault (there are also no memory leaks / errors according to valgrind).
Even weirder: when we do not compile the dictionaries into
libbiodynamo.so, there is also no segfault anymore in the interpreted execution… It seems that somehow the presence of the dictionaries in
libbiodynamo.so is causing our program to crash in the interpreter.
A minimalistic reproducer unfortunately still is based on calls into our library, and I have been unable to isolate it further. I was hoping that someone in this forum recognizes this general issue and could give me tips on how to further debug this. Is there a way to use gdb in combination with the interpreter?
ROOT Version: v6.18.04
Platform: Ubuntu 16.04
Compiler: GCC 5.3