mirror of
https://github.com/open-webui/open-webui.git
synced 2026-05-06 10:58:17 -05:00
[PR #22273] [MERGED] fix: use NullPool for SQLCipher engine to prevent segfault #26579
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/open-webui/open-webui/pull/22273
Author: @Classic298
Created: 3/5/2026
Status: ✅ Merged
Merged: 3/6/2026
Merged by: @tjbck
Base:
dev← Head:fix/sqlcipher-pool-type📝 Commits (1)
f04d8b1fix: use NullPool for SQLCipher engine to prevent segfault📊 Changes
1 file changed (+24 additions, -5 deletions)
View changed files
📝
backend/open_webui/internal/db.py(+24 -5)📄 Description
The SQLCipher engine used a dummy sqlite:// URL with a creator function, which caused SQLAlchemy to auto-select SingletonThreadPool. This pool non-deterministically closes in-use connections when thread count exceeds pool_size (default 5), leading to use-after-free segfaults (exit code 139) in the native sqlcipher3 C library during multi-threaded operations like user signup.
Now defaults to NullPool (each operation creates/closes its own connection) for maximum safety with the native C extension. Also respects the DATABASE_POOL_SIZE setting: if explicitly set >0, QueuePool is used with the configured pool parameters, matching the behavior of other DB paths.
Fixes #22258
Contributor License Agreement
By submitting this pull request, I confirm that I have read and fully agree to the Contributor License Agreement (CLA), and I am providing my contributions under its terms.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.