[Bug 200992] proccess won't die in thread_suspend_switch

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Sun Jun 21 06:31:11 UTC 2015


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=200992

Konstantin Belousov <kib at FreeBSD.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rrs at FreeBSD.org

--- Comment #4 from Konstantin Belousov <kib at FreeBSD.org> ---
The issue is that callout_stop() call in the sleepq_check_timeout() returned
zero, which made the thread to (in)voluntarily relinguish the CPU.  But
apparently the thread sleep callout was not really run, which means that there
is nobody to make the thread runnable again.

The situation was already fixed once, it is the reason for the
CALLOUT_DFRMIGRATION existence.

For me, it looks as if the r278469 could be a cause.  The added block which
calculates the not_on_a_list means that sometimes previously pending callout is
not longer pending, but also that we return 0 in this case.I think that in case
not_on_a_list == 1, we _must_ return 1 from callout_stop().

I am attaching the non-tested proof of concept patch to try.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-threads mailing list