NetBSD Problem Report #21750
Received: (qmail 28946 invoked by uid 605); 1 Jun 2003 15:18:50 -0000
Message-Id: <20030601151846.605D4A6C56@gaia.eterna.com.au>
Date: Mon, 2 Jun 2003 01:18:46 +1000 (EST)
From: mrg@eterna.com.au
Sender: gnats-bugs-owner@netbsd.org
Reply-To: mrg@eterna.com.au
To: gnats-bugs@gnats.netbsd.org
Subject: sleep never returns, select/poll don't time out
X-Send-Pr-Version: 3.95
>Number: 21750
>Category: port-sparc64
>Synopsis: sleep never returns, select/poll don't time out
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: chs
>State: closed
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sun Jun 01 15:19:00 +0000 2003
>Closed-Date: Sun Dec 07 00:39:43 +0000 2008
>Last-Modified: Sun Dec 07 00:39:43 +0000 2008
>Originator: matthew green
>Release: NetBSD 1.6R
>Organization:
people's front against (bozotic) www (softwar foundation)
>Environment:
System: NetBSD gaia.eterna.com.au 1.6R NetBSD 1.6R (_gaia_) #66: Sat Apr 26 13:13:18 EST 2003 mrg@what-time-is-love.eterna.com.au:/var/sys/_gaia_ sparc64
Architecture: sparc
Machine: sparc64
>Description:
on an ultra1/140 with 256MB ram i frequently find that processes
do not return from sleep() or timeout poll() or select() calls
(they do return when data arrives later, though...)
this obviously causes all sorts of problems to occur.
>How-To-Repeat:
run -current on an ultra1/140. the machine has two hme sbus cards
and is a router...
>Fix:
>Release-Note:
>Audit-Trail:
From: Chuck Silvers <chs@netbsd.org>
To: gnats-bugs@netbsd.org
Cc:
Subject: PR/21750 CVS commit: src/sys/arch/sparc64/sparc64
Date: Sat, 12 Feb 2005 21:32:56 +0000 (UTC)
Module Name: src
Committed By: chs
Date: Sat Feb 12 21:32:56 UTC 2005
Modified Files:
src/sys/arch/sparc64/sparc64: locore.s
Log Message:
in sparc_interrupt(), wait to enable interrupts until just before calling
the handler and disable them again right after the handler returns.
we don't want another hardware interrupt coming in while we're mucking
with the list pointers. also, clear the intrhand's ih_pending pointer
before calling the handler rather than after, so that if another interrupt
comes in while the handler is running, we can put the intrhand back on
the list so it will be called again.
in send_softint(), disable interrupts via %pstate instead of %pil, so that
hardware interrupts at higher levels are blocked while we manipulate the
intrpending list. also, if the intrhand already has ih_pending set,
don't bother poking the SET_SOFTINT register again, since being on the list
implies that there is already a softint pending in the hardware.
these appear to fix PR 21750 (the "sleep forever" problem).
while I'm here, remove more vestiges of the !INTRLIST softint stuff
(code and comments). and in sparc64_ipi_flush_all(), interrupts are
already disabled so we don't need to fiddle with %pstate.
To generate a diff of this commit:
cvs rdiff -r1.203 -r1.204 src/sys/arch/sparc64/sparc64/locore.s
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
State-Changed-From-To: open->feedback
State-Changed-By: martin@netbsd.org
State-Changed-When: Wed, 09 Mar 2005 08:06:31 +0000
State-Changed-Why:
Can you confirm this is fixed?
(I know that's not easy to answer fast)
From: Matthias Scheler <tron@netbsd.org>
To: gnats-bugs@netbsd.org
Cc:
Subject: PR/21750 CVS commit: [netbsd-2-0] src/sys/arch/sparc64/sparc64
Date: Sun, 1 May 2005 11:23:38 +0000 (UTC)
Module Name: src
Committed By: tron
Date: Sun May 1 11:23:38 UTC 2005
Modified Files:
src/sys/arch/sparc64/sparc64 [netbsd-2-0]: locore.s
Log Message:
Apply patch (requested by martin in ticket #1487):
Various changes from NetBSD-current, revisions 1.197 to 1.204.
Interrupt and soft-interrupt handling changes that appear to fix
the "sleep forever" problem (PR port-sparc64/21750).
To generate a diff of this commit:
cvs rdiff -r1.196.2.1 -r1.196.2.2 src/sys/arch/sparc64/sparc64/locore.s
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
From: Matthias Scheler <tron@netbsd.org>
To: gnats-bugs@netbsd.org
Cc:
Subject: PR/21750 CVS commit: [netbsd-2] src/sys/arch/sparc64/sparc64
Date: Sun, 1 May 2005 11:25:46 +0000 (UTC)
Module Name: src
Committed By: tron
Date: Sun May 1 11:25:46 UTC 2005
Modified Files:
src/sys/arch/sparc64/sparc64 [netbsd-2]: locore.s
Log Message:
Apply patch (requested by martin in ticket #1487):
Various changes from NetBSD-current, revisions 1.197 to 1.204.
Interrupt and soft-interrupt handling changes that appear to fix
the "sleep forever" problem (PR port-sparc64/21750).
To generate a diff of this commit:
cvs rdiff -r1.196.2.1 -r1.196.2.1.2.1 src/sys/arch/sparc64/sparc64/locore.s
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
State-Changed-From-To: feedback->open
State-Changed-By: mrg@netbsd.org
State-Changed-When: Wed, 29 Jun 2005 06:12:01 +0000
State-Changed-Why:
while i haven't been able to reproduce this problem lately (i haven't had
much chance to try), chuck silvers reports he still can.
State-Changed-From-To: open->feedback
State-Changed-By: mrg@NetBSD.org
State-Changed-When: Sat, 08 Nov 2008 00:49:04 +0000
State-Changed-Why:
chuq, have you seen this bug anymore? no one else seems to have
in years now?
Responsible-Changed-From-To: port-sparc64-maintainer->chs
Responsible-Changed-By: mrg@NetBSD.org
Responsible-Changed-When: Fri, 05 Dec 2008 06:41:48 +0000
Responsible-Changed-Why:
chuck, please either close this or let me know if we need to look more.
thanks.
State-Changed-From-To: feedback->closed
State-Changed-By: chs@NetBSD.org
State-Changed-When: Sun, 07 Dec 2008 00:39:43 +0000
State-Changed-Why:
I haven't seen this in a long time now.
(sorry I didn't see your earlier question about it)
>Unformatted:
(Contact us)
$NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.