Skip to content

<stacktrace>: ARM64EC isn't working properly #5830

@StephanTLavavej

Description

@StephanTLavavej

While working on enabling ARM64EC runtime test coverage (on an ARM64 host), I'm observing that <stacktrace> doesn't work.

For example, we expect "P0881R7_stacktrace!all_innermost" here:

assert(trim_past_plus(all.at(0).description()) == "P0881R7_stacktrace!all_innermost"sv);

This works for x64, x86, and ARM64. But for ARM64EC, we get "P0881R7_stacktrace". The content of all.at(0).description() is "P0881R7_stacktrace+0xB0E0" and the "+0xB0E0" is being trimmed off:

string trim_past_plus(string str) {
if (size_t pos = str.rfind("+", string::npos); pos != string::npos) {
str.resize(pos);
}
return str;
}

Similarly, in the header units and modules test,

auto desc = stacktrace::current().at(0).description();
if (auto pos = desc.find("!"); pos != string::npos) {
desc = desc.substr(pos + 1);
}
if (auto pos = desc.find("+"); pos != string::npos) {
desc.resize(pos);
}
assert(desc == "test_stacktrace");

desc is "P2465R3_standard_library_modules+0x95254" before trimming and "P2465R3_standard_library_modules" after.

My understanding of ARM64EC is extremely limited, so I don't know if this is an issue in dbgeng.dll, or the debug info that the compiler is emitting, or what.

Metadata

Metadata

Assignees

No one assigned

    Labels

    ARM64ECI can't believe it's not x64!bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions