Skip to content

Missing prepare_for_lookup in test_members_database.cpp #351

Closed
@yugr

Description

@yugr

What version of libosmium are you using?

libosmium-2.13.1 but issues applies to master as well

What operating system and compiler are you using?

Ubuntu 20.04

Tell us something about your system

64 GB RAM, 8 CPUs, bare metal

What did you do exactly?

Ran ctest -V after successful build

What did you expect to happen?

All tests completed without errors

What did happen instead?

The testcase

TEST_CASE("Remove non-existing object from members database doesn't do anything") {

in test_members_database.cpp does not call

    mdb.prepare_for_lookup();

which causes it to run equal_range on an unsorted m_elements array:

(gdb) p mdb.m_elements[0].member_id
$14 = 10
(gdb) p mdb.m_elements[1].member_id
$15 = 11
(gdb) p mdb.m_elements[2].member_id
$16 = 12
(gdb) p mdb.m_elements[3].member_id
$17 = 13
(gdb) p mdb.m_elements[4].member_id
$18 = 10
(gdb) p mdb.m_elements[5].member_id
$19 = 14

The issue has been found with SortChecker++ tool.

What did you do to try analyzing the problem?

Inspected data in debugger

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions