[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