Skip to content

[DO NOT MERGE] measurement for #693: which process exits, and the encoding build.ninja is written in - #697

Closed
Sunrisepeak wants to merge 6 commits into
mainfrom
measure/693-windows-acp
Closed

Sunrisepeak wants to merge 6 commits into
mainfrom
measure/693-windows-acp

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

Temporary measurement branch. Do not merge. Every workflow except measure-693.yml is removed on this branch so that only these readings run.

Readings for #693 on windows-latest (system ANSI code page 1252), with the released mcpp 2026.9.25.1:

  • Q1. Which process ends with 0xC0000409 in a directory outside the ANSI code page: mcpp.exe itself, the release zip's mcpp.bat, or the xlings shim that fronts mcpp in an xlings installation. Windows Error Reporting events and local dumps name the faulting image and module.
  • Q2. Whether build.ninja and compile_commands.json are written in the process ANSI code page while the Ninja that mcpp runs reads UTF-8. Tested in a directory the code page can represent (caf + U+00E9), where the two encodings differ in bytes.
  • Q3. Whether a UTF-8 activeCodePage manifest, embedded with mt.exe into a copy of the released mcpp.exe, changes Q1 and Q2, and whether it is sufficient end to end: clang 20.1.7, lld, Ninja, the std module, and a build.mcpp written with narrow APIs or with wide APIs.

The readings feed .agents/docs/2026-09-25-issues-693-696-triage-and-repair-plan.md. This PR is closed once they are recorded.

…ith the loop variable; the shim runs inside its workspace; cdb records the crash
…sponse-file encodings, and which MinGW executables declare UTF-8
@Sunrisepeak

Copy link
Copy Markdown
Member Author

Readings recorded in .agents/docs/2026-09-25-issues-693-696-triage-and-repair-plan.md (§6.2 and Appendix A.10). Closing; the branch stays for the script it references.

Run What it measured
36162457075 Q1 (which process exits). The build readings of this run are void: the PowerShell loop variable $fx overwrote $Fx, so no build started.
36163057371 Q1 with the shim inside its workspace, cdb on xlings --version, Q2/Q3 on the llvm row
36163850821 the MSVC and MinGW rows under a UTF-8 activeCodePage copy of mcpp.exe; which MinGW executables declare UTF-8
36164076852 a non-ASCII MCPP_HOME; replicates every earlier reading

Findings:

  • The silent 0xC0000409 comes from xlings: its start-up throws std::system_error ("No mapping for the Unicode character exists in the target multi-byte code page.") in a working directory outside the ANSI code page, and its main has no exception boundary. The released mcpp.exe prints its version in the same directory.
  • mcpp 2026.9.25.1 fails every build, with an internal exception, when the project or the mcpp home lies under a non-ASCII name. This includes names that the ANSI code page can represent: [json.exception.type_error.316] invalid UTF-8 byte.
  • With a UTF-8 activeCodePage manifest, mcpp.exe builds and runs the fixtures in both kinds of non-ASCII directory on the llvm, MSVC and MinGW rows. A build program has to be in UTF-8 as well.

…exe read a response file, and the same file written by Ninja
@Sunrisepeak Sunrisepeak reopened this Sep 25, 2026
@Sunrisepeak

Copy link
Copy Markdown
Member Author

Round 5 and 5b recorded; closed again.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants