Skip to content

CI: [diagnostic, do not merge] Test update: false for MSYS2 setup - #703

Closed
echoix wants to merge 1 commit into
mainfrom
ci-diag/pin-msys2-no-update
Closed

echoix wants to merge 1 commit into
mainfrom
ci-diag/pin-msys2-no-update

Conversation

@echoix

@echoix echoix commented Sep 26, 2026

Copy link
Copy Markdown
Owner

Purpose

Follow-up to the gdal313.dll/dumpbin diagnostic PR, which ruled out
GDAL, curl, and OpenSSL as the cause of the OSGeo4W CI regression
(no relevant exported symbols removed on either side, confirmed with
dumpbin against the actual old/new package builds).

The real, actual failure (re-checked directly against the original
reported job logs, not just the pytest summary) is a fatal Windows
exception, not a clean ImportError:

Windows fatal exception: code 0xc0000139

occurring in ctypes.CDLL.__init__ while grass/lib/gis.py loads
grass_gis.8.6.dll -- GRASS's own core library, compiled fresh in
that CI run from source, not an OSGeo4W package.

What actually changed

Diffing pacman's Packages (N) resolution summary line between the
last passing run (2026-09-24 18:47 UTC) and the first failing one
(2026-09-25/26 01:0x UTC), every one of the ~150 installed MSYS2 and
mingw64 packages is identical (same gcc-16.2.0-4, binutils-2.47-3,
libiconv-1.19-1, pcre-8.45-2, zlib-1.3.2-2, etc.) except one family,
which moved from git snapshot r420.g61d40c4c0 to r426.g4564ee4b5:

  • mingw-w64-x86_64-crt
  • mingw-w64-x86_64-headers
  • mingw-w64-x86_64-tools
  • mingw-w64-x86_64-libmangle
  • mingw-w64-x86_64-libwinpthread
  • mingw-w64-x86_64-winpthreads
  • mingw-w64-x86_64-winstorecompat

These are mingw-w64's own rolling git-snapshot packages (there is no
stable/versioned alternative build), pulled in transitively by
gcc/toolchain, and forced to the current upstream snapshot by this
workflow's update: true, which runs a full pacman -Syu before
installing the requested package list. The old r420 snapshot has
already been pruned from the public MSYS2 mirrors (rolling -git
packages aren't retained once superseded), so a direct dumpbin
export/import diff like the GDAL one isn't possible; this PR tests
the regression indirectly instead.

What this PR does

Sets update: false on the msys2/setup-msys2 step, skipping the
pacman -Syu sync so package resolution uses whatever crt/headers/
winpthreads snapshot is already bundled in the pinned setup-msys2
action release, rather than pulling the latest upstream git snapshot.

If this avoids the crash, it confirms the mingw-w64 CRT/headers/
winpthreads snapshot bump as the cause.

This PR is for CI investigation only and is not meant to be merged.

🤖 Generated with Claude Code

…not for merge)

Diffing the exact "Packages (N)" resolution lines pacman printed in the
last passing OSGeo4W run (2026-09-24) against the first failing one
(2026-09-25) shows every installed MSYS2/mingw64 package identical
except one family: mingw-w64-x86_64-crt/headers/tools/libmangle/
libwinpthread/winpthreads/winstorecompat, which moved from git snapshot
r420.g61d40c4c0 to r426.g4564ee4b5. These are mingw-w64's own rolling
git-snapshot packages (no stable/versioned alternative exists), pulled
in by gcc/toolchain and forced to the latest snapshot by this
workflow's unconditional `update: true` (a full pacman -Syu before
installing requested packages).

A separate exports/imports diff of gdal313.dll, libcurl.dll, and
libssl/libcrypto (old vs new OSGeo4W builds, via dumpbin) found no
removed symbols relevant to any osgeo Python binding, ruling out the
GDAL package bump that happened in the same window as an unrelated
coincidence.

This sets update: false to check whether skipping the pacman sync
(and thus not pulling the newer crt/headers/winpthreads snapshot)
avoids the "DLL load failed... procedure could not be found" crash
when ctypes loads grass_gis.8.6.dll.

Temporary, for CI investigation only.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@echoix echoix closed this Oct 1, 2026
@echoix
echoix deleted the ci-diag/pin-msys2-no-update branch October 1, 2026 00:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant