[beignet] 01/03: Fix invalid-iterator crash when compiling large kernels

Rebecca Palmer rnpalmer-guest at moszumanska.debian.org
Tue Jan 3 22:29:08 UTC 2017


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

rnpalmer-guest pushed a commit to branch master
in repository beignet.

commit 6bb30d969c20c383142f04f9144c533cb036e712
Author: Rebecca N. Palmer <rebecca_palmer at zoho.com>
Date:   Tue Jan 3 21:57:47 2017 +0000

    Fix invalid-iterator crash when compiling large kernels
---
 debian/changelog                            |  6 ++++++
 debian/patches/avoid-invalid-iterator.patch | 24 ++++++++++++++++++++++++
 debian/patches/series                       |  1 +
 3 files changed, 31 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index ef837c3..536b8ab 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+beignet (1.2.1-2) UNRELEASED; urgency=medium
+
+  * Fix invalid-iterator crash when compiling large kernels.
+
+ -- Rebecca N. Palmer <rebecca_palmer at zoho.com>  Tue, 03 Jan 2017 21:52:36 +0000
+
 beignet (1.2.1-1) unstable; urgency=medium
 
   * New upstream release.  (Closes: #844370)
diff --git a/debian/patches/avoid-invalid-iterator.patch b/debian/patches/avoid-invalid-iterator.patch
new file mode 100644
index 0000000..82b8b74
--- /dev/null
+++ b/debian/patches/avoid-invalid-iterator.patch
@@ -0,0 +1,24 @@
+Description: Avoid possible invalid pointer by vector iterator
+
+Elements may be added to the std::vector "revisit" in
+findPointerEscape(), possibly invalidating iterators on it.
+When compiling huge kernel like blender, it will cause random
+segment fault crash.
+[] operator will be more safe.
+
+Origin: upstream https://cgit.freedesktop.org/beignet/commit/?id=2de87cd63a80dbd4ea4e8e4ce3af8e0535b910cb
+Author: Yan Wang
+
+--- a/backend/src/llvm/llvm_gen_backend.cpp
++++ b/backend/src/llvm/llvm_gen_backend.cpp
+@@ -1390,8 +1390,8 @@ namespace gbe
+       }
+     }
+     // storing/loading pointer would introduce revisit
+-    for (std::vector<Value *>::iterator iter = revisit.begin(); iter != revisit.end(); ++iter) {
+-      findPointerEscape(*iter, mixedPtr, true, revisit);
++    for (size_t i = 0; i < revisit.size(); ++i) {
++      findPointerEscape(revisit[i], mixedPtr, true, revisit);
+     }
+ 
+     // the second pass starts from mixed pointer
diff --git a/debian/patches/series b/debian/patches/series
index 64371c0..b5cad71 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -9,3 +9,4 @@ find-python35.patch
 docs-broken-links.patch
 cl_accelerator_intel.patch
 llvm39-support.patch
+avoid-invalid-iterator.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-opencl/beignet.git



More information about the Pkg-opencl-commits mailing list