Bug 106174 - vulkan dota2 broken (segfaulting), found bug commit
Summary: vulkan dota2 broken (segfaulting), found bug commit
Status: RESOLVED FIXED
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/Vulkan/radeon (show other bugs)
Version: git
Hardware: x86-64 (AMD64) Linux (All)
: highest blocker
Assignee: mesa-dev
QA Contact: mesa-dev
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-04-22 09:50 UTC by Sylvain BERTRAND
Modified: 2018-04-24 00:45 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Description Sylvain BERTRAND 2018-04-22 09:50:39 UTC
Did not see my email in the mailing list archive. I secure the report here:

After refurbishing my custom gnu/linux distro, dota2 vulkan was broken: could
not enter any game without segfaulting. (amd tahiti xt)

The segfault commit is:
6e22ad6edc34dc07a08b41a781f1c37ff3c536e7

I did revert this commit on top of 63572091b52ace35b60c46d092183bf818733ee0,
dota2 vulkan has been ok so far.
Comment 1 Bas Nieuwenhuizen 2018-04-22 17:28:45 UTC
Yeah, I noticed this too.

https://patchwork.freedesktop.org/patch/218205/

should fix this.
Comment 2 Sylvain BERTRAND 2018-04-22 18:06:06 UTC
On Sun, Apr 22, 2018 at 05:28:45PM +0000, bugzilla-daemon@freedesktop.org wrote:
> https://bugs.freedesktop.org/show_bug.cgi?id=106174
> 
> --- Comment #1 from Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> ---
> Yeah, I noticed this too.
> 
> https://patchwork.freedesktop.org/patch/218205/
> 
> should fix this.

Since I'm not into nir, I just reverted the patch.

Your patch seems to do what the commit intended to do in the first place, though.
Comment 3 Timothy Arceri 2018-04-24 00:45:48 UTC
Fixed by:

author	Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
commit	0e945fdf23bac5a62c15edfcbfd9d6ac4eee592f

nir: Do not use progress for unreachable code in return lowering.

We seem to use progress for two cases:
1) When we lowered some returns.
2) When we remove unreachable code.

If just case 2 happens we assert as state->return_flag has not
been allocated yet, but we are still trying to do insert all
predicates based on it.

This splits the concerns. We only use progress internally for case 1
and then keep track of 2 in a separate variable to indicate progress
in the return value of the pass.

This is slightly better than transforming the assert into
if (!state->return_flag) return, as the solution in this patch avoids
inserting predicates even if some other part of the might need them.

Fixes: 6e22ad6edc "nir: return early when lowering a return at the end of a function"
CC: 18.1 <mesa-stable@lists.freedesktop.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106174
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>


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.