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

Reply via email to