A failed SQLite integrity check on Windows that reported itself as a POSIX lock conflict
For several hours on 2026-09-30, every memory write from a Hermes Agent install on a Windows 11 machine failed with this: YantrikDB unavailable: remember failed: refusing to write: another SQLite library has C:/Users/<user>/AppData/Local/hermes/yantrikdb-memory-ml.db open in this process (issue #225 - POSIX locks are per process, so its unlock releases the engine's and the two writers would…
On September 30, 2026, a persistent memory engine called YantrikDB, version 0.23.1, experienced issues on a Windows 11 machine running Python 3.14.7 and sqlite3 3.53.1. The engine, written in Rust with Python bindings available on PyPI, encountered a failure when attempting to write to a shared-memory file, resulting in SQLite reporting a POSIX lock conflict.
The error was caused by a failed integrity check, which the YantrikDB engine interpreted as an in-process foreign SQLite library, even though the platform (Windows) does not support this behavior. The ForeignSqliteGuard detector, responsible for identifying such conflicts, was inert on Windows, leading to the false error report.
The detector relied on the note_integrity() function, which called PRAGMA quick_check(1) to verify the database's integrity. However, on Windows, this check was the only factor that could set the tainted flag, resulting in every refusal of the write operation being attributed to a failed integrity check.
The error message provided no indication of the actual cause, leading users to attempt closing connections, checking integrity, and reopening the engine. However, there was no reopen() or recover() function available, and restarting the entire application was the only solution. This left the database with a growing WAL file, causing performance issues.
To address this bug, a fix was released in version 0.23.2. The solution included a new IntegrityCheckFailed error, with a message containing the quick_check result. The ForeignSqliteInstance was raised only by the in-process detector, eliminating the Windows-specific error. The stats() function now displayed the cause, and a repair process was added to detect and resolve issues from another process. The final fix involved a one-time failure count, preventing repeated errors from triggering the same response.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.