Open
Description
A minimal example to reproduce the bug, which sometimes leads to segfaults:
#include <shogun/base/init.h>
#include <shogun/lib/DynamicObjectArray.h>
using namespace shogun;
int main(int argc, char *argv[])
{
init_shogun_with_defaults();
CDynamicObjectArray * m_labels = new CDynamicObjectArray(100);
m_labels->set_element(NULL, 0);
exit_shogun();
return 0;
}
The output of valgrind ./dyn-object-array
:
==27759== Conditional jump or move depends on uninitialised value(s)
==27759== at 0x402406: shogun::CDynamicObjectArray::set_element(shogun::CSGObject*, int, int, int) (DynamicObjectArray.h:252)
It turns out, that in line 252 we're trying to UNREF uninitialized values:
CSGObject* old=(CSGObject*) m_array.get_element(idx1+dim1_size*(idx2+dim2_size*idx3));
SG_UNREF(old);