Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

x86 IIS module in CI-built MSI fails to load - fuzzy.dll missing MinGW runtime DLLs (error 126)

オープン
#3,599 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
72/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
静か
技術スタック
cpp, github-actions

調査の方向性

.github/workflows/test-ci-windows.yml から始めて、MINGW32 ビルド、x86 リリースディレクトリ、WiX heat harvest の手順を追跡します。出荷される x86 fuzzy.dll の依存関係を確認し、ワークフローから MSI をビルドします。完了とは、インストールされた x86 IIS モジュールが 32 ビットのアプリケーションプールでエラー 126 なしに読み込まれることです。

索引モデルが issue の本文から書いたものです。

説明

2.x pr available windows

Describe the bug

The MSI produced by the "CI/CD for IIS Module" workflow installs an x86 IIS module that fails to load in 32-bit application pools with error 126. The x64 module loads and works correctly; only 32-bit pools are affected.

Cause: fuzzy.dll (ssdeep) is built with MinGW gcc in CI, unlike the rest of the module which is MSVC/vcpkg. The 32-bit MinGW build of fuzzy.dll imports libgcc_s_dw2-1.dll (which in turn requires libwinpthread-1.dll), but the MSI does not package these DLLs, so the x86 dependency chain breaks and ModSecurityIIS.dll cannot load. Confirmed by reading the import table of the shipped x86 fuzzy.dll - its only non-system import is libgcc_s_dw2-1.dll, which is not present in the MSI or on a standard Windows Server install.

Logs and dumps

Windows Application Event Log, event ID 2280, on any request to a site in a 32-bit application pool:

The Module DLL C:\WINDOWS\SysWOW64\inetsrv\ModSecurityIIS.dll failed to load.  The data is the error.

Event data contains Win32 error 126 (ERROR_MOD_NOT_FOUND).

LoadLibraryEx on C:\Windows\SysWOW64\inetsrv\fuzzy.dll in a 32-bit process fails with error 126; after copying libgcc_s_dw2-1.dll and libwinpthread-1.dll into the same directory, fuzzy.dll, libxml2.dll and modsecurityiis.dll all load successfully.

No debug/audit/error logs are produced because the module never loads. No crash/core dump - clean load failure.

To Reproduce

  1. Download the MSI artifact (modsecurityiis-installers-Release) from a "CI/CD for IIS Module" workflow run on v2/master
  2. Install on Windows Server with IIS
  3. Set an application pool to "Enable 32-Bit Applications = True"
  4. Request any page from a site in that pool
  5. Site fails / event 2280 logged; x64 pools on the same server work fine

Expected behavior

x86 module loads in 32-bit application pools, as the x64 module does in 64-bit pools.

Workaround (verified in production)

Copy libgcc_s_dw2-1.dll and libwinpthread-1.dll (from MSYS2 packages mingw-w64-i686-gcc-libs and mingw-w64-i686-libwinpthread) into C:\Windows\SysWOW64\inetsrv\. The module then loads and blocks correctly in 32-bit pools.

Suggested fix

In .github/workflows/test-ci-windows.yml, copy the MinGW runtime DLLs from the MINGW32 environment into the x86 release directory alongside fuzzy.dll before the WiX heat harvest, so they are included in the MSI. (Alternatively, build ssdeep with MSVC like the other dependencies, or statically link the MinGW runtime with -static-libgcc.)

Server

  • ModSecurity version: v2/master CI build (post-2.9.13, 2026)
  • WebServer: IIS on Windows Server, mixed 32/64-bit application pools
  • OS: Windows Server (multiple versions across a shared hosting estate)
主要言語
C++
スター
9.8k
フォーク
1.8k
平均マージ
1日 1時間
マージ済み PR(30日)
13

環境構築

  • Dockerfile・Docker Compose ファイルなし
  • プルリクエストのテンプレートあり
  • コントリビューションガイドなし

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

owasp-modsecurity/ModSecurity のほかの issue

owasp-modsecurity/ModSecurity の issue をすべて見る

似ている issue

C++ の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。