dbpass.py draws its password box on the terminal, not in the hook's pipe #20
No reviewers
Labels
No labels
accessibility
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Keel-Linux/keel-mariadb!20
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/dbpass-draws-on-the-terminal"
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?
An interactive first boot of any appliance with MariaDB (keel-wordpress 19.0-3 on Proxmox, 2026-09-30) froze at the MariaDB password.
firstboot.d/35mysqlpassreadsbin/dbpass.py's standard output forDB_PASS=, and dialog draws on standard output: the hung dialog's fd 1 was a pipe, so the box was drawn into the hook and the console showed a frozen screen. The root password worked because 30rootpass does not capture setpass.py's output.Fix: dbpass.py keeps a duplicate of the pipe for the KEY=value answers and points standard output, which dialog inherits, at /dev/tty. The hook is unchanged.
Tests:
tests/dbpass.batsruns the script as the hook does, output redirected, inside a real pseudo terminal (script(1)), with a libinithooks stand-in whose dialog refuses to draw anywhere but a terminal; it fails on the old code and passes on the new. Also checked on the test LXC with the real dialog and libinithooks: the box appears on the screen and the hook receives DB_PASS.