On Sun, Aug 13, 2023 at 06:39:39PM +0300, Mikhail wrote: > I can reproduce it with tog (game of trees tui tool, it's multithreaded, > I can't reproduce the hang with simple 'got' binary, which is single > threaded - this is only difference I'm aware of): > > git clone ssh://anonym...@got.gameoftrees.org/got.git > mkdir ~/bin > cd got > make obj > make > make install > egdb tog > b add_matched_line > run ($PWD must be got repo) > > now enter a commit with <enter> and start search, something like > /a<enter>, it will fire breakpoint, now just 'n' and keep pressing > <enter> > > sometimes it hangs on free(), sometimes on strndup(), sometimes on > wattr(), sometimes on format_line(), etc > > kill -9 doesn't help, only reboot > > Stefan (stsp@) prompted to try 7.3-release for comparison - no hang > there. >
Thanks for the report and how to reproduce it. I was able to trigger the same issue with: OpenBSD 7.3-current (GENERIC.MP) #1335: Thu Aug 10 17:35:07 MDT 2023 but not anymore with -current: OpenBSD 7.3-current (GENERIC.MP) #1340: Tue Aug 15 14:26:29 MDT 2023 My bet is that the kern_sig.c commit 1.312 fixed this: ---------------------------- revision 1.312 date: 2023/08/13 15:53:31; author: claudio; state: Exp; lines: +7 -4; commitid: 4AoIY2kEzLXStend; Fix P_WSLEEP handling when continuing SSTOP-ed processes When continuing a process on the sleep queue just let it switch to p_stat = SSLEEP even when P_WSLEEP is set. Once a proc is SSTOP-ed in sleep_finish() a valid sleep point has been reached and there is no need to make the process runnable again (which results in some hairy race conditions). Instead simply clear P_WSLEEP since a stopped proc reached the sleep state and there is no race with wakeup() anymore. OK mpi@ ---------------------------- Cheers -- :wq Claudio