Skip to content

[Tests] SIGSEGV in extract_coarse_mapping_int on ARM64 (AArch64) #322

Description

@brunobdmoura

The test extract_coarse_mapping_int is currently failing due to a segmentation fault on ARM architecture.

Investigating a little further and comparing the behavior, to AMD64 here is the output of gdb in the investigation:

(gdb) break 'rocalution::HostVector<int>::ExtractCoarseMapping'
Breakpoint 1 at 0x7ffff7947e40: file /usr/src/rocalution-7.1.0-0ubuntu1/src/base/host/host_vector.cpp, line 1644.
(gdb) run --gtest_filter=local_vector_test.extract_coarse_mapping_int
...
Breakpoint 1, rocalution::HostVector<int>::ExtractCoarseMapping (this=0x555555cf5320,
    start=0, end=5, index=0x7fffffffdb98, nc=3, size=0x7fffffffdb6c, map=0x7fffffffdba4)
    at /usr/src/rocalution-7.1.0-0ubuntu1/src/base/host/host_vector.cpp:1644

In the above snippet, the test correctly runs and there is no errors detected, as expected.

However, if the same gdb procedure is performed on the ARM build after it fails:

(gdb) run --gtest_filter=local_vector_test.extract_coarse_mapping_int
...
Program received signal SIGSEGV, Segmentation fault.
0x0000fffff7ad25cc in rocalution::HostVector<int>::ExtractCoarseMapping (this=0xaaaaab2214b0,
    start=0, end=5, index=0xffffffffead0, nc=3, size=0xffffffffea9c, map=0xffffffffeac0)
    at /usr/src/rocalution-7.1.0-0ubuntu1/src/base/host/host_vector.cpp:1666

(gdb) bt
#0  0x0000fffff7ad25cc in rocalution::HostVector<int>::ExtractCoarseMapping (...) at ...:1666
#1  0x0000fffff7988de4 [PAC] in rocalution::LocalVector<int>::ExtractCoarseMapping (...) at ...:1225

While the addresses of the variables on the ARM build (e.g., 0xffffffffead0) are within the valid AArch64 user-space stack range, the SIGSEGV occurs consistently at line 1666. This may point to a memory alignment issue or an architectural difference in how HostVector handles memory indexing on ARM64 compared to AMD64.

For additional information on ARM architecture memory mappings, this link details the sections of memory addresses dedicated to each use.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions