ports/74903: devel/valgrind[-snapshot]: Fix lockup in state ``umtx'' on FreeBSD 5.3
Simon Barner
barner at gmx.de
Thu Dec 9 21:40:31 UTC 2004
>Number: 74903
>Category: ports
>Synopsis: devel/valgrind[-snapshot]: Fix lockup in state ``umtx'' on FreeBSD 5.3
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Thu Dec 09 21:40:30 GMT 2004
>Closed-Date:
>Last-Modified:
>Originator: Simon Barner
>Release: FreeBSD 5.3-STABLE i386
>Organization:
>Environment:
FreeBSD zi025.glhnet.mhn.de 5.3-STABLE FreeBSD 5.3-STABLE #0: Fri Nov 5 02:17:53 CET 2004 root at zi025.glhnet.mhn.de:/usr/obj/usr/src/sys/KISTE i386
>Description:
Starting from some point after FreeBSD 5.2.1, valgrind did not terminate
correctly, but got stuck in state ``umtx''. This was mentioned on the lists
and in kern/68992 [closed], but I was never able to fix the problem.
Today, I gave it another try, and it turned out to be quite simple
(from the current perspective ;-):
Since coregrind/vg_proxylwp.c did not include "vg_unsafe.h" (which in turn
includes <sys/param.h>), the __FreeBSD_version macro was undefined.
Thus the conditioned definition of the UMTX_CONTESTED constant has
always taken place in the <= 5.2.1 way. Therefore, on FreeBSD >= 502120,
the kernel's and valgrind's defintion of that flag were out of sync,
which is why valgrind did not terminate on these systems.
Btw: Pav, please regard this as a first step of closing ports/71832.
I had some questions to the originator of that PR, and I thought it would
be the best to provide him with a working version of valgrind ;-)
>How-To-Repeat:
Run valgrind{-snapshot} on FreeBSD >= 502120, e.g.
% valgrind --tool=memcheck true
>Fix:
--- valgrind.patch begins here ---
diff -ruN valgrind.orig/Makefile valgrind/Makefile
--- valgrind.orig/Makefile Thu Dec 9 22:07:55 2004
+++ valgrind/Makefile Thu Dec 9 22:08:12 2004
@@ -7,7 +7,7 @@
PORTNAME= valgrind
PORTVERSION= 352
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= devel
MASTER_SITES= http://www.rabson.org/
DISTNAME= ${PORTNAME}-stable-${PORTVERSION}
diff -ruN valgrind.orig/files/patch-coregrind-vg_proxylwp.c valgrind/files/patch-coregrind-vg_proxylwp.c
--- valgrind.orig/files/patch-coregrind-vg_proxylwp.c Thu Jan 1 01:00:00 1970
+++ valgrind/files/patch-coregrind-vg_proxylwp.c Thu Dec 9 22:05:11 2004
@@ -0,0 +1,10 @@
+--- coregrind/vg_proxylwp.c.orig Thu Dec 9 20:02:58 2004
++++ coregrind/vg_proxylwp.c Thu Dec 9 20:03:16 2004
+@@ -30,6 +30,7 @@
+
+
+ #include "vg_include.h"
++#include "vg_unsafe.h"
+
+ #ifndef UMTX_CONTESTED
+ # if __FreeBSD_version < 502120
--- valgrind.patch ends here ---
--- valgrind-snapshot.patch begins here ---
diff -ruN valgrind-snapshot.orig/Makefile valgrind-snapshot/Makefile
--- valgrind-snapshot.orig/Makefile Thu Dec 9 22:07:39 2004
+++ valgrind-snapshot/Makefile Thu Dec 9 22:08:24 2004
@@ -7,7 +7,7 @@
PORTNAME= valgrind
PORTVERSION= 352
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= devel
MASTER_SITES= http://www.rabson.org/
PKGNAMESUFFIX= -snapshot
diff -ruN valgrind-snapshot.orig/files/patch-coregrind-vg_proxylwp.c valgrind-snapshot/files/patch-coregrind-vg_proxylwp.c
--- valgrind-snapshot.orig/files/patch-coregrind-vg_proxylwp.c Thu Jan 1 01:00:00 1970
+++ valgrind-snapshot/files/patch-coregrind-vg_proxylwp.c Thu Dec 9 22:06:43 2004
@@ -0,0 +1,10 @@
+--- coregrind/vg_proxylwp.c.orig Thu Dec 9 20:02:58 2004
++++ coregrind/vg_proxylwp.c Thu Dec 9 20:03:16 2004
+@@ -30,6 +30,7 @@
+
+
+ #include "vg_include.h"
++#include "vg_unsafe.h"
+
+ #ifndef UMTX_CONTESTED
+ # if __FreeBSD_version < 502120
--- valgrind-snapshot.patch ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
X-send-pr-version: 3.113
X-GNATS-Notify:
More information about the freebsd-ports-bugs
mailing list