summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <sthibault@debian.org>2009-05-25 09:45:02 +0000
committerSamuel Thibault <sthibault@debian.org>2009-05-25 09:45:02 +0000
commit07034c18144f3bf68b5ada5fd1338777f869eb80 (patch)
tree2d6ad00d6a4b39509e5880b92396bf76b2292448
parent5a15d70208d32e63e95a8a67ef3ca7574eed1589 (diff)
debian/patches/exec_fix.patch: New patch to fix random hang of exec.
-rw-r--r--debian/changelog1
-rw-r--r--debian/patches/exec_fix.patch30
-rw-r--r--debian/patches/series1
3 files changed, 32 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog
index eecfaf2a..d4cee716 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -57,6 +57,7 @@ hurd (20080921-1) UNRELEASED; urgency=low
to drop undefined references to __pthread_recursive_mutexattr.
* debian/patches/extern_inline_fix.patch: New patch from Marc Dequène to
fix extern inline declarations.
+ * debian/patches/exec_fix.patch: New patch to fix random hang of exec.
-- Michael Banck <mbanck@debian.org> Sat, 13 Sep 2008 23:43:27 +0200
diff --git a/debian/patches/exec_fix.patch b/debian/patches/exec_fix.patch
new file mode 100644
index 00000000..00c88d42
--- /dev/null
+++ b/debian/patches/exec_fix.patch
@@ -0,0 +1,30 @@
+Fixes long-standing random hang of exec.
+
+2009-05-25 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * exec.c (finish): Set FILE_DATA and MAP_BUFFER members of E to NULL
+ after freeing them.
+
+Index: exec/exec.c
+===================================================================
+RCS file: /cvsroot/hurd/hurd/exec/exec.c,v
+retrieving revision 1.93
+diff -u -p -r1.93 exec.c
+--- exec/exec.c 2 Apr 2009 23:06:37 -0000 1.93
++++ exec/exec.c 25 May 2009 09:39:35 -0000
+@@ -1008,10 +1008,13 @@ finish (struct execdata *e, int dealloc_
+ #ifdef EXECDATA_STREAM
+ fclose (&e->stream);
+ #else
+- if (e->file_data != NULL)
++ if (e->file_data != NULL) {
+ free (e->file_data);
+- else if (map_buffer (e) != NULL)
++ e->file_data = NULL;
++ } else if (map_buffer (e) != NULL) {
+ munmap (map_buffer (e), map_vsize (e));
++ map_buffer (e) = NULL;
++ }
+ #endif
+ }
+ if (dealloc_file && e->file != MACH_PORT_NULL)
diff --git a/debian/patches/series b/debian/patches/series
index 440a28f3..904f4e3b 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -28,3 +28,4 @@ libpthread_fix.patch -p0
libpthread_setcancel.patch -p0
libpthread_no_recursive_mutex_initializer.patch -p0
extern_inline_fix.patch -p1
+exec_fix.patch -p0