graph LR A["Same source code"] --> B{"Which build?"} B -- "Debug\n(/RTC, _DEBUG)" --> C["π₯ SIGSEGV\n9 passed / 144 skipped"] B -- "Release\n(NDEBUG)" --> D["β 154 passed\n766 assertions"] style C fill:#ffcdd2,stroke:#c62828,stroke-width:3px style D fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style A fill:#eceff1,stroke:#455a64,stroke-width:3px
graph TD subgraph CI["GitHub Actions windows-latest"] W1["Configure\n-DCMAKE_BUILD_TYPE=Release"] W2["ctest -C Release"] end subgraph Local["My Machine"] L1["cmake -B build\n(no build type)"] L2["MSVC multi-config\ndefaults to Debug"] L3["π₯ Crash"] end CI --> W3["β Green"] L1 --> L2 --> L3 style L3 fill:#ffcdd2,stroke:#c62828,stroke-width:3px style W3 fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px
graph LR A["conda ships\nRelease-only fmt.dll\n_ITERATOR_DEBUG_LEVEL=0"] --> B["find_package(fmt)\nsilently accepts it\ninto a Debug build"] B --> C["Debug code reads the DLL's\nstd::string with the WRONG layout\n_ITERATOR_DEBUG_LEVEL=2"] C --> D["π₯ SIGSEGV / terminate\non every string copy"] style A fill:#fff9c4,stroke:#f57f17,stroke-width:3px style B fill:#ffe0b2,stroke:#e65100,stroke-width:3px style C fill:#ffcdd2,stroke:#c62828,stroke-width:3px style D fill:#ffcdd2,stroke:#c62828,stroke-width:3px
graph TD subgraph Before["Before π"] B1["find_package(fmt)\nβ conda fmt.dll (Release)"] --> B2["Debug build\nπ₯ corrupt strings"] end subgraph After["After β "] A1["if(NOT MSVC)\n find_package(fmt)"] --> A2{"On MSVC?"} A2 -- "Yes" --> A3["CPMAddPackage\nbuild fmt from source"] A2 -- "No" --> A4["system package\n(as before)"] A3 --> A5["Debug build\nβ matching ABI"] end style B2 fill:#ffcdd2,stroke:#c62828,stroke-width:3px style A5 fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px
graph TD subgraph Chain["The crash chain"] C1["conda\nPrimary π―"] --> C2["CMake\nShould catch"] --> C3["MSVC\nEnabler"] end subgraph Innocent["Innocent"] C4["C++ standard"] C5["CPM"] end style C1 fill:#fff9c4,stroke:#f57f17,stroke-width:3px style C2 fill:#ffe0b2,stroke:#e65100,stroke-width:3px style C3 fill:#ffcdd2,stroke:#c62828,stroke-width:3px style C4 fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style C5 fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px