Skip to content

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

Description

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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