Report information
The Basics
Id:
44707
Status:
open
Priority:
Medium/Medium
Queue:

People
Owner:
Nobody in particular
Cc:
AdminCc:

BugTracker
Version Fixed:
(no value)
Version Found:
(no value)
Versions Affected:
(no value)
Versions Planned:
(no value)
Priority:
P3 Low
Severity:
S2 Normal
CVSS Score:
(no value)
CVE ID:
(no value)
Component:
(no value)
Area:
bug

Dates
Created:Thu, 16 Feb 2017 09:12:05 -0500
Updated:Wed, 02 Aug 2017 18:14:36 -0400
Closed:Not set



This bug tracker is no longer active.

Please go to our Gitlab to submit issues (both feature requests and bug reports) for active projects maintained by Internet Systems Consortium (ISC).

Due to security and confidentiality requirements, full access is limited to the primary maintainers.

Subject: 9.10.4 - BIND occasionally hangs on MIPS based systems
Date: Thu, 16 Feb 2017 14:12:01 +0000
To: bind-bugs@isc.org
From: "James Cowgill" <jcowgill@debian.org>
Bug Report from www.isc.org: Name: James Cowgill Email: jcowgill@debian.org Software Version: 9.10.4 OS: Debian Unstable Subject:BIND occasionally hangs on MIPS based systems Bug Detail =========== Originally reported here: https://bugs.debian.org/778720 There is a bug in the MIPS atomics implementation which can cause BIND to hang on MIPS. The patch to fix it is below. Please can you apply it. Thanks, James ========================== Subject: [PATCH] Add earlyclobber constraint in isc_atomic_cmpxchg() on mips The tmp register constraint should be earlyclobber ("=&r") because the other two registers (%3 and %4) will be read again after tmp (%2) is written if the code loops around. At the moment, GCC could make tmp and cmpval/val refer to the same register. --- lib/isc/mips/include/isc/atomic.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/isc/mips/include/isc/atomic.h b/lib/isc/mips/include/isc/atomic.h index e3657d7..13b5cff 100644 --- a/lib/isc/mips/include/isc/atomic.h +++ b/lib/isc/mips/include/isc/atomic.h @@ -79,7 +79,7 @@ isc_atomic_cmpxchg(isc_int32_t *p, int cmpval, int val) { " beqz %2, 1b \n" "2: move %0, $1 \n" " .set pop \n" - : "=&r"(orig), "+R" (*p), "=r" (tmp) + : "=&r"(orig), "+R" (*p), "=&r" (tmp) : "r"(cmpval), "r"(val) : "memory"); -- 2.5.1 --- This email was received through isc.org Bug Submission Form
Hi James, Thank you for submitting this fix to us. We discussed it in a BIND developers' meeting and decided not to integrate it at this time. We will keep your patch attached to this ticket in the public area of our bug db so others can find it. The problem is primarily that we no longer have a test environment to validate the MIPS optimization. We would rather not have features we can't test, obviously. We discussed possibly moving the MIPS optimization to the contrib directory, since we can't test it. We are also asking around to see if anyone wants to buy us the hw to add to our test bed, but I am not optimistic about that. A more satisfactory solution would probably be to move towards standard atomic instruction. We do have a ticket for that in this system (#40688), but we don't have time to tackle that right now. Regards, Vicky