I am able to reproduce the hang on head of master and emacs-27 branches using
emacs -Q, it does not happen every time, sometime it takes a few tries. The
following is what is shown by strace in a loop:
pselect6(20, [3 5 13 17 19], NULL, NULL, {tv_sec=0, tv_nsec=0}, {NULL, 8}) = 1
(in [19], left {tv_sec=0, tv_nsec=0})
rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
pselect6(20, [3 5 6 8 13 15 17 19], [], NULL, {tv_sec=0, tv_nsec=0}, {NULL, 8})
= 1 (in [19], left {tv_sec=0, tv_nsec=0})
rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
pselect6(20, [3 5 13 17 19], NULL, NULL, {tv_sec=0, tv_nsec=0}, {NULL, 8}) = 1
(in [19], left {tv_sec=0, tv_nsec=0})
rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
pselect6(20, [3 5 6 8 13 15 17 19], [], NULL, {tv_sec=0, tv_nsec=0}, {NULL, 8})
= 1 (in [19], left {tv_sec=0, tv_nsec=0})
rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0