[Nouveau] [Bug 99799] Civilization VI makes nouveau crash on register allocation

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Tue Feb 14 17:43:50 UTC 2017


https://bugs.freedesktop.org/show_bug.cgi?id=99799

--- Comment #2 from Ilia Mirkin <imirkin at alum.mit.edu> ---
OK, so this is a previously-known issue. There's another bug filed about it
somewhere... crysis maybe? Anyways, it comes down to a problem with the
delete_Instruction() in the spill code. When deleting the instruction
(Instruction::~Instruction), it clears out its own ValueDef's (ValueDef::set),
which should in turn update the relevant Value's defs lists.

However this happens in the middle of RA, which means that various instructions
are joined into nodes, and value A's defs list ends up in value B's defs list.

Now this is where I get confused - when I change the logic to also remove the
ValueDef from val->join, this does not help.

Further vexing is the fact that this particular spill shouldn't even be
happening in the first place - it's a move between 2 LValues which I'm pretty
sure are joined to each other.

Valgrind catches the first badness where this happens, which is when building
live sets after spilling happens. Need to add more breaks and poke around more.

-- 
You are receiving this mail because:
You are the assignee for the bug.
You are the QA Contact for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170214/354a1f1f/attachment.html>


More information about the Nouveau mailing list