Skip to content

Windows binary crashes at startup with C++ exception 0xE06D7363 — reproduces v26.03.26 → v26.04.22 #20

@dailylawgroup

Description

@dailylawgroup

Summary

The Windows release binary (flapi-windows-amd64.zip) crashes immediately at startup on every Windows host I've tested, with an unhandled C++ exception. The crash fires consistently after credential-manager init logs and before any DuckDB engine init log line. Reproduces across at least 4 releases.

--validate-config always passes; the crash is purely at runtime initialization.

Environment

  • OS: Windows 10 Pro (build 19045)
  • Architecture: AMD64
  • DuckDB file: tested with both an existing file created by DuckDB 1.5.1 and a fresh file flapi itself creates (via --access-mode READ_WRITE)
  • Telemetry: disabled three ways (--no-telemetry CLI flag, DATAZOO_DISABLE_TELEMETRY=1, FLAPI_NO_TELEMETRY=1) — no change

Crash signature (consistent across versions)

[INFO]  Initializing cloud storage credentials...
[INFO]  Credential Manager Status:
[INFO]    S3: not configured
[INFO]    GCS: not configured
[INFO]    Azure: not configured
[ERROR] Unhandled Windows exception caught!
[ERROR] Exception code: e06d7363
[ERROR] Address: 00007FFE6C655369
[ERROR] Writing crash dump to crash_dump_<pid>.dmp

0xE06D7363 is the standard MSVC magic number for a throw statement, so something is throwing an exception that nothing catches. The address is consistent across runs and across versions, suggesting it's the same throw site.

Versions tested (all crash identically)

Version Result
v26.04.22 (latest) crash
v26.04.21 crash
v26.04.03 crash
v26.03.26 crash

Minimal reproduction

  1. Download flapi-windows-amd64.zip from any release
  2. Extract flapi.exe
  3. Create config.yaml:
    project-name: repro
    project-description: Windows crash repro
    template:
      path: './sqls'
    duckdb:
      db-path: ./fresh.duckdb
      access-mode: READ_WRITE
      threads: 1
      max-memory: 1GB
  4. Create empty sqls/ directory
  5. Run: flapi.exe -c config.yaml --no-telemetry

Same crash, same address.

Diagnostics ruled out

I bisected and ruled out the obvious candidates:

  • SQLite ATTACH connection — removing the entire connections: block doesn't fix it
  • Existing DuckDB file format — crashes equally with a fresh empty file flapi creates itself
  • Telemetry — disabled all three ways, no change in behavior
  • Config schema--validate-config passes cleanly; all _ keys converted to - per the v1.0+ schema
  • Path resolution — tested with absolute and relative paths
  • Credentials — no S3/GCS/Azure credentials configured (also tested with AWS_ACCESS_KEY_ID set to a dummy value, no change)

Hypothesis

The crash appears to be in the DuckDB engine init path (the next initialization phase after credential manager finishes logging). Recent commits like "Explicitly set MSVC static CRT (/MT) to fix LNK2038 with DuckDB 1.5.0" and "Switch Windows vcpkg triplet to x64-windows-static for DuckDB 1.5.0 /MT compatibility" suggest the Windows build path has had CRT-related fragility before. The bug persisting across 4 releases suggests the Windows binary may not be getting a functional smoke test in CI before release.

Workaround I'm using

Running the Linux binary inside WSL2 — works as expected.

Suggested triage

If the CI matrix doesn't include a step like "launch flapi.exe with a minimal config and curl /health on a Windows runner", that would catch this regression. I'm happy to:

  • Share the crash_dump_*.dmp file
  • Run additional diagnostics with a debug build if one is available
  • Test fixes on Windows 10 Pro 19045 / Windows 11

Thanks for flAPI — even with this Windows wrinkle, the YAML-driven endpoint pattern + DuckDB integration is one of the cleanest data-API designs I've evaluated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions