Hi Manuel, On Tue, May 05, 2009 at 08:26:37PM +0000, Manuel Bouyer wrote:
> Module Name: src > Committed By: bouyer > Date: Tue May 5 20:26:36 UTC 2009 > > Modified Files: > src/sys/kern: kern_softint.c > > Log Message: > Declare sh_flags volatile. > Without it, on ports where splhigh() is inline, the compiler will optimise > the second SOFTINT_PENDING test in softint_schedule(). A dissasembly > of softint_schedule() with and without the volatile sh_flags confirm this > on sparc. > Because of this there is a race that could lead to the softhand_t > being enqueued twice on si_q, leading to a corrupted queue and > some handler being SOFTINT_PENDING but never called. > > Should fix PR kern/38637 Your change works around a bug with sparc64 or perhaps even gcc. Please address the root cause instead. Thanks.