Skip to content

Fix CRT startup and media DLL checks in automatic builds - #525

Merged
intraducine merged 1 commit into
mainfrom
codex/ci-crt-init-order
Nov 2, 2026
Merged

intraducine merged 1 commit into
mainfrom
codex/ci-crt-init-order

Conversation

@intraducine

@intraducine intraducine commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator

Automatic builds changed Wine's CRT delay imports into immediate imports. The reported device log reaches JIT successfully, then crashes at ucrtbase.dll+0x63670 while loading xtajit64.dll. An existing eager-link build has the same six instruction words at that offset.

PR #496 identified the startup dependency cycle and has now merged. This follow-up applies the fix in the shared module builder, including DLLs added by targets.py during import closure:

  • Keep delay imports for msvcrt and modules built from its sources. Relink these modules so an earlier eager-link output cannot survive an incremental build.
  • Keep the existing non-CRT delay-load workaround used by modules such as d2d1.
  • Reject eager advapi32 or user32 imports in packaged ucrtbase.dll and msvcrt.dll, including cache restores and final IPA checks.

The post-merge main build also fails the media check: wmvcore reader must import its real winegstreamer frontend. The blanket UNDELAY=0 change leaves that dependency delayed. Keeping the non-CRT workaround also fixes this build failure.

Validation: all 14 runtime tests pass, including the production build script with old CRT outputs, temporary-source restoration on failure, and invalid cached/packaged DLLs with valid checksums. Build-input and component-cache checks pass. The new binary check rejects both historical eager-link CRTs and accepts the tracked CRTs.

Six extra build-script checks pass for mixed and CRT-only module sets with UNDELAY unset, 0, and 1. Three code review passes covered DLL load order, build callers and source restoration, and cache and package checks.

The full automatic build passed at 7ab9c29415c00582220fe8b3aed76199f545bc7d. All component jobs passed. The app job validated the complete IPA and uploaded the Madeira-ipa artifact.

Thanks to g6c8jfntbc-dotcom for the diagnosis in #496. A fresh physical-device launch and gameplay test remain untested.

@intraducine intraducine changed the title Keep CRT startup imports delayed across all Windows runtime builds Fix CRT startup and media DLL checks in automatic builds Nov 2, 2026
@intraducine
intraducine merged commit 34ff639 into main Nov 2, 2026
13 checks passed
125hz added a commit that referenced this pull request Nov 2, 2026
Their changes are already on main as squashed commits, each authored by its
author (insertfloppy), on top of #525. They merged without conflicts; the host
checks they touch (translations, GPU card, recommended lists, D3D9 older
NVIDIA, KMT adapter, library sections, frontend, settings catalog, JIT method,
runtime settings, Dock start screen) pass on the combined tree. This merge only
adds the pull requests' heads as parents (the ours strategy changes no files),
so GitHub shows them as merged.

Pull requests: #528 #530 #531

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@intraducine
intraducine deleted the codex/ci-crt-init-order branch November 8, 2026 16:54
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.

1 participant