From: bugzilla-daemon@freedesktop.org
To: dri-devel@lists.freedesktop.org
Subject: [Bug 84232] New: PHINode containing itself causes segfault in LLVM when compiling Blender OpenCL kernel with R600 backend
Date: Tue, 23 Sep 2014 09:19:35 +0000 [thread overview]
Message-ID: <bug-84232-502@http.bugs.freedesktop.org/> (raw)
[-- Attachment #1.1: Type: text/plain, Size: 2432 bytes --]
https://bugs.freedesktop.org/show_bug.cgi?id=84232
Priority: medium
Bug ID: 84232
Assignee: dri-devel@lists.freedesktop.org
Summary: PHINode containing itself causes segfault in LLVM when
compiling Blender OpenCL kernel with R600 backend
Severity: normal
Classification: Unclassified
OS: All
Reporter: vitalif@yourcmc.ru
Hardware: Other
Status: NEW
Version: XOrg CVS
Component: DRM/Radeon
Product: DRI
Created attachment 106717
--> https://bugs.freedesktop.org/attachment.cgi?id=106717&action=edit
Blender output with R600_DEBUG=compute,fs,vs,gs,ps,cs
I'm trying to run Blender using Mesa OpenCL implementation on a radeonsi card.
First the kernel didn't want to compile, but that was caused by a bug in it
(they were using . instead of -> in 1 place), and after fixing this bug I've
got the kernel to compile...
...But after that, LLVM started to crash during translation of IR into shader
code with R600 backend.
I've done some investigation and figured out that the crash is caused by a
PHINode containing itself. SIAnnotateControlFlow::handleLoopCondition() can't
handle such situation - it recurses into itself, calls Phi->eraseFromParent()
inside the inner execution, returns into outer one, gets zeroed out object and
crashes when trying to do something with its members... for example when
trying to erase it again.
I've tried to understand the semantics of such PHINodes from reading the code
and got a suspicion that the rest of LLVM code just ignores PHINodes equal to
their parent, so I've tried to fix the bug by making handleLoopCondition()
skip IncomingValues equal to the Phi itself, but the bug didn't go away!
Surprisingly, PHINode may not just contain itself directly, but it also may
contain itself inside another PHINode, i.e.
Phi->getIncomingValue(0)->getIncomingValue(0) == Phi, which results in the same
problem with SIAnnotateControlFlow...
I'll attach Blender output with R600_DEBUG = trace everything and a stack trace
of the crash.
The bug reproduced with llvm 3.5 and snapshot of 3.6; blender is 2.71; Mesa is
from OIBAF's repository.
sudo -E CYCLES_OPENCL_TEST=1 R600_DEBUG=compute,fs,vs,gs,ps,cs blender cup\ of\
coffee\ 5.blend &> kernel-llvm.log
--
You are receiving this mail because:
You are the assignee for the bug.
[-- Attachment #1.2: Type: text/html, Size: 3990 bytes --]
[-- Attachment #2: Type: text/plain, Size: 159 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
next reply other threads:[~2014-09-23 9:19 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-23 9:19 bugzilla-daemon [this message]
2014-09-23 9:19 ` [Bug 84232] PHINode containing itself causes segfault in LLVM when compiling Blender OpenCL kernel with R600 backend bugzilla-daemon
2014-09-23 13:19 ` bugzilla-daemon
2014-10-07 21:23 ` bugzilla-daemon
2014-10-07 21:45 ` bugzilla-daemon
2014-10-07 22:23 ` bugzilla-daemon
2014-10-08 20:56 ` bugzilla-daemon
2014-10-09 8:22 ` bugzilla-daemon
2014-10-10 15:48 ` bugzilla-daemon
2014-10-10 20:31 ` bugzilla-daemon
2014-10-10 21:36 ` bugzilla-daemon
2014-10-22 23:07 ` bugzilla-daemon
2014-10-22 23:08 ` bugzilla-daemon
2014-10-22 23:16 ` bugzilla-daemon
2014-10-23 9:12 ` bugzilla-daemon
2014-12-05 15:44 ` bugzilla-daemon
2014-12-08 16:57 ` bugzilla-daemon
2014-12-08 21:11 ` bugzilla-daemon
2017-03-22 16:00 ` bugzilla-daemon
2017-03-22 16:00 ` bugzilla-daemon
2018-04-03 3:49 ` bugzilla-daemon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bug-84232-502@http.bugs.freedesktop.org/ \
--to=bugzilla-daemon@freedesktop.org \
--cc=dri-devel@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).