This guide provides practical solutions for common issues encountered during development and operation.
Common Issues & Solutions¶
1. Browser Worker Failures¶
Symptom: Mermaid/BPMN renders return “Internal Server Error” or time out.
Check: Run with
RUST_LOG=debugto verify if Chromium is launching correctly.Fix: Ensure
CHROME_BINis pointing to a valid executable and your system has sufficient RAM (min 2GB).
2. Podman Resource Exhaustion & OOM¶
Symptom: Compilation fails with
Signal 9or the container crashes during heavy builds (e.g.,headless_chrome).Fix: Increase Podman VM resources to at least 12GB RAM:
podman machine stop podman machine set --memory 12288 --cpus 5 podman machine start
3. Stale Caches & Fingerprint Mismatch¶
Symptom: Changes in
Dockerfilearen’t reflected, or images are pulled unnecessarily.Check: Run
make print-base-fingerprintand verify againstpodman images.Fix: Use
--purgeto force a clean slate:./dflow ci-verify --purge
4. Exec Format Errors¶
Symptom:
exec format errorwhen running the application inside the container.Cause: Reusing a
target/directory compiled for the host (e.g., macOS binary on Linux).Fix: Ensure container builds use
target/ci(automatically handled byrepro-ci.sh). If stuck, wipe the target:rm -rf target/ci.
5. Sccache Connectivity Failures¶
Symptom:
sccachereturns 400 Bad Request, fails to connect to the GHA backend, orOperation not permittedwhen running locally.Fix: Our infrastructure now uses disk-based sccache. Ensure
SCCACHE_GHA_ENABLEDisfalseand that.cargo-cache/sccacheis correctly mounted and has write permissions. On systems wheresccachecannot run (e.g., sandboxed macOS), disable the wrapper for the local session withSCCACHE_ENABLED=false ./dflow dev(or./dflow ci-verify). This skips theRUSTC_WRAPPERentirely without affecting CI.
Debugging Tools¶
Interactive Container Shell¶
If a test fails only in the container, use ci-shell to debug in real-time:
./dflow ci-shell
# Inside: cargo test --test integration_testsTrace Profiling¶
For performance bottlenecks, use tokio-console (requires compilation with special flags) to inspect task scheduling.