Skip to content

Segfault/uninitialized values in CDynamicObjectArray #1758

Open
@tklein23

Description

@tklein23

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);

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions