Bug 110216

Summary: radv: Segfault when compiling compute shaders from Assassin's Creed Odyssey (regression, bisected)
Product: Mesa Reporter: Philip Rebohle <philip.rebohle>
Component: Drivers/Vulkan/radeonAssignee: mesa-dev
Status: RESOLVED FIXED QA Contact: mesa-dev
Severity: normal    
Priority: medium    
Version: git   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: Compute shader that triggers the crash

Description Philip Rebohle 2019-03-21 09:05:44 UTC
Created attachment 143744 [details]
Compute shader that triggers the crash

Hello,

trying to compile the attached compute shader (among others) causes the driver to segfault. The commit which introduced the issue is:


commit 3235a942c16b61849bc16a710c53f0a7a5566f0d (HEAD, refs/bisect/bad)
Author: Timothy Arceri <tarceri@itsqueeze.com>
Date:   Thu Dec 6 16:00:40 2018 +1100

    nir: find induction/limit vars in iand instruction


Please let me know if you need more info.
Comment 1 Timothy Arceri 2019-03-21 10:41:33 UTC
Sorry, it's been fixed I'm waiting on someone to review the patch.

https://patchwork.freedesktop.org/patch/292850/
Comment 2 Timothy Arceri 2019-03-21 10:52:45 UTC
Fixed by:

commit 427a6fee439b2df96edc813c56572169385772a6
Author: Timothy Arceri <tarceri@itsqueeze.com>
Date:   Tue Mar 19 12:09:36 2019 +1100

    nir: only override previous alu during loop analysis if supported
    
    Users of this function expect alu to be a supported comparision
    if the induction variable is not NULL. Since we attempt to
    override the return values if the first limit is not a const, we
    must make sure we are dealing with a valid comparision before
    overriding the alu instruction.
    
    Fixes an unreachable in inverse_comparison() with the game
    Assasins Creed Odyssey.
    
    Fixes: 3235a942c16b ("nir: find induction/limit vars in iand instructions")
    
    Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110216

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.