[polyml] 07/09: Mark completed as volatile

James Clarke jrtc27-guest at moszumanska.debian.org
Thu Apr 7 10:52:23 UTC 2016


This is an automated email from the git hooks/post-receive script.

jrtc27-guest pushed a commit to branch master
in repository polyml.

commit 4d140ffafd179569ed31645c2d44d49f2082f792
Author: James Clarke <jrtc27 at jrtc27.com>
Date:   Wed Apr 6 21:20:00 2016 +0100

    Mark completed as volatile
---
 debian/changelog                                      |  2 ++
 .../patches/request-completed-volatile-barrier.diff   | 19 +++++++++++++++++++
 debian/patches/series                                 |  1 +
 3 files changed, 22 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index 5b325cd..bd0b0f2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,6 +3,8 @@ polyml (5.6-4) UNRELEASED; urgency=low
   * New patches:
     - hppa.diff: Add support for hppa
     - maxhostnamelen.diff: Remove all use of MAXHOSTNAMELEN
+    - request-completed-volatile-barrier.diff: Make MainThreadRequest
+    completed field volatile (fixes test suite deadlock on hppa)
     - sh.diff: Add support for sh4
     - sparc64.diff: Add support for sparc64
 
diff --git a/debian/patches/request-completed-volatile-barrier.diff b/debian/patches/request-completed-volatile-barrier.diff
new file mode 100644
index 0000000..accd0a7
--- /dev/null
+++ b/debian/patches/request-completed-volatile-barrier.diff
@@ -0,0 +1,19 @@
+Description: Make MainThreadRequest completed field volatile
+ This is accessed across threads and thus needs to be volatile in order
+ to avoid compiler optimisations breaking memory access order. This fixes
+ Tests/Succeed/Test120.ML sometimes deadlocking on HP PA-RISC.
+Author: James Clarke <jrtc27 at jrtc27.com>
+Forwarded: https://github.com/polyml/polyml/pull/49
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/libpolyml/processes.h
++++ b/libpolyml/processes.h
+@@ -225,7 +225,7 @@
+     MainThreadRequest (enum _mainThreadPhase phase): mtp(phase), completed(false) {}
+     virtual ~MainThreadRequest () {} // Suppress silly GCC warning
+     const enum _mainThreadPhase mtp;
+-    bool completed;
++    volatile bool completed;
+     virtual void Perform() = 0;
+ };
+ 
diff --git a/debian/patches/series b/debian/patches/series
index 173b9bd..9b626dc 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -23,3 +23,4 @@ maxhostnamelen.diff
 sparc64.diff
 sh.diff
 hppa.diff
+request-completed-volatile-barrier.diff

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/polyml.git



More information about the debian-science-commits mailing list