app-misc/utimer-0.4-r1 with (at least) sys-libs/glibc-2.38-r5 deadlocks at exit in the countdown mode. How to reproduce: utimer -c 1s Expected result: Program counts down to zero, then exits Actual result: Program counts down to zero, then locks up (sometimes pressing ENTER a few times lets it exit). Analysis: (gdb) thread 1 (gdb) bt #0 0x00007ffff7c64f16 in __lll_lock_wait_private () at /lib64/libc.so.6 #1 0x00007ffff7c625b5 in _IO_flush_all () at /lib64/libc.so.6 #2 0x00007ffff7c629a6 in _IO_cleanup () at /lib64/libc.so.6 #3 0x00007ffff7c1c270 in __run_exit_handlers () at /lib64/libc.so.6 #4 0x00007ffff7c1c2ac in () at /lib64/libc.so.6 #5 0x00007ffff7c03e13 in __libc_start_call_main () at /lib64/libc.so.6 #6 0x00007ffff7c03ec5 in __libc_start_main () at /lib64/libc.so.6 #7 0x0000555555556b6a in _start () (gdb) thread 2 (gdb) bt #0 0x00007ffff7cddf8d in read () at /lib64/libc.so.6 #1 0x00007ffff7c5f6f2 in _IO_file_underflow () at /lib64/libc.so.6 #2 0x00007ffff7c61afb in _IO_default_uflow () at /lib64/libc.so.6 #3 0x00007ffff7c5c008 in getc () at /lib64/libc.so.6 #4 0x0000555555557c2c in check_exit_from_user () #5 0x00007ffff7e575bd in g_thread_proxy () at /usr/lib64/libglib-2.0.so.0 #6 0x00007ffff7c681ea in start_thread () at /lib64/libc.so.6 #7 0x00007ffff7ceb4a8 in clone3 () at /lib64/libc.so.6 There seems to be no code in utimer to terminate at utimer exit that second thread - which is reading stdio via fgetc(). This causes its fgetc() call to deadlock with glibc atexit handlers run from main thread when it is trying to exit. A simple patch of switching to fgetc_unlocked() in that second thread seems to let it exit cleanly for me (patch attached). This might not be THE right solution - cleanly terminating the second thread would be required for that.
Created attachment 872938 [details, diff] Workaround fix
The bug has been referenced in the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ebee5f9ed8c1f7393becbf0de2c15948887eadb8 commit ebee5f9ed8c1f7393becbf0de2c15948887eadb8 Author: Michał Górny <mgorny@gentoo.org> AuthorDate: 2023-12-31 16:00:03 +0000 Commit: Michał Górny <mgorny@gentoo.org> CommitDate: 2023-12-31 17:21:48 +0000 package.mask: Last rite app-misc/utimer Bug: https://bugs.gentoo.org/915827 Signed-off-by: Michał Górny <mgorny@gentoo.org> profiles/package.mask | 6 ++++++ 1 file changed, 6 insertions(+)
The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9e57c0fda087323a434a3bfc389873c530594697 commit 9e57c0fda087323a434a3bfc389873c530594697 Author: Michał Górny <mgorny@gentoo.org> AuthorDate: 2024-02-02 16:41:40 +0000 Commit: Michał Górny <mgorny@gentoo.org> CommitDate: 2024-02-02 16:41:40 +0000 app-misc/utimer: Remove last-rited pkg Closes: https://bugs.gentoo.org/915827 Signed-off-by: Michał Górny <mgorny@gentoo.org> app-misc/utimer/Manifest | 1 - app-misc/utimer/files/utimer-0.4-fno-common.patch | 29 ---------------------- app-misc/utimer/files/utimer-0.4-locale.patch | 10 -------- app-misc/utimer/metadata.xml | 5 ---- app-misc/utimer/utimer-0.4-r1.ebuild | 30 ----------------------- profiles/package.mask | 6 ----- 6 files changed, 81 deletions(-)