microsoft / microsoft/STL

`<stacktrace>`: ARM64EC isn't working properly

Open
#5,830 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

ARM64EC bug
Dominant language
C++
Stars
11.1k
Forks
1.7k
Avg merge
4d 15h
Merged PRs (30d)
22

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:

https://github.com/microsoft/STL/blob/defc75b4758bd03e075dc9d0de093572dc57c160/tests/std/tests/P0881R7_stacktrace/test.cpp#L193

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:

https://github.com/microsoft/STL/blob/defc75b4758bd03e075dc9d0de093572dc57c160/tests/std/tests/P0881R7_stacktrace/test.cpp#L103-L108

Similarly, in the header units and modules test,

https://github.com/microsoft/STL/blob/defc75b4758bd03e075dc9d0de093572dc57c160/tests/std/include/test_header_units_and_modules.hpp#L851-L861

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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with tests/std/tests/P0881R7_stacktrace/test.cpp, especially the expected innermost name and description trimming, then compare tests/std/include/test_header_units_and_modules.hpp. Investigate whether ARM64EC symbol data or dbgeng.dll causes the offset to be removed; done means the relevant ARM64EC tests preserve the expected function names and pass.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
operating-systems, testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.