Bug 91231 - [NV92] Psychonauts (native) segfaults on start when DRI3 enabled
Summary: [NV92] Psychonauts (native) segfaults on start when DRI3 enabled
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/nouveau (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Nouveau Project
QA Contact: Xorg Project Team
Keywords: bisected, regression
Depends on:
Reported: 2015-07-05 03:28 UTC by Béla Gyebrószki
Modified: 2015-07-08 04:22 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:

trace generated by apitrace (3.02 KB, application/octet-stream)
2015-07-05 03:28 UTC, Béla Gyebrószki
no flags Details
XOrg.log (37.34 KB, text/plain)
2015-07-05 03:29 UTC, Béla Gyebrószki
no flags Details
backtrace from the game and glretrace (1.78 KB, text/plain)
2015-07-05 03:33 UTC, Béla Gyebrószki
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Béla Gyebrószki 2015-07-05 03:28:02 UTC
Created attachment 116944 [details]
trace generated by apitrace

The game runs natively on Linux. When Mesa was compiled with DRI3 support the game segfaults when starting and I get this in the terminal:
Psychonauts: nv50/nv50_miptree.c:132: nv50_mt_choose_storage_type: Assertion `ms == 0' failed.
The game starts properly if I disable DRI3 at runtime (LIBGL_DRI3_DISABLE=1)

The problem is present since

commit 241e7289f25a342a457952b9b0e539c2f0b81d99
Author: Maarten Lankhorst <maarten.lankhorst@ubuntu.com>
Date:   Wed Oct 22 11:04:16 2014 +0200

    enable dri3 support without glamor

When replaying the trace with glretrace the message about the assertion is not present, but glretrace segfaults with signal 11.

Fedora 22 32-bit
Kernel 4.0.6-300.fc22.i686+PAE
VGA compatible controller: NVIDIA Corporation G92 [GeForce GTS 250] (rev a2) (prog-if 00 [VGA controller])
Mesa 10.6-branchpoint-826-gff0a41b
Comment 1 Béla Gyebrószki 2015-07-05 03:29:10 UTC
Created attachment 116945 [details]
Comment 2 Ilia Mirkin 2015-07-05 03:30:00 UTC
The assertion is regarding PIPE_BIND_SCANOUT + nr_samples != 0. I suspect this might be a dri st bug which only surfaces with the new mechanisms that dri3 enables.
Comment 3 Béla Gyebrószki 2015-07-05 03:33:02 UTC
Created attachment 116946 [details]
backtrace from the game and glretrace
Comment 4 Béla Gyebrószki 2015-07-06 07:09:52 UTC
If you have a Steam account and Steam for Linux installed you can reproduce the segfault with these native Linux demos on Steam:
- 'Running with Rifles' demo (note: I had to remove libstdc++.so.6 and libxcb.so.1 from ./lib).
- Torchlight II demo (the game starts with default settings, you need to enable anti-aliasing in-game option and restart the game to reproduce this bug).

All those games crash on start with
>nv50/nv50_miptree.c:132: nv50_mt_choose_storage_type: Assertion `ms == 0' failed.
when DRI3 is enabled.
Comment 5 Ilia Mirkin 2015-07-07 17:02:37 UTC
Marek posted a patch for this at http://patchwork.freedesktop.org/patch/53843/
Comment 6 Béla Gyebrószki 2015-07-07 17:29:18 UTC
(In reply to Ilia Mirkin from comment #5)
> Marek posted a patch for this at
> http://patchwork.freedesktop.org/patch/53843/

The patch works and fixes the problem in all the affected games that I know of.
Thank you both for your help fixing this bug.
Comment 7 Béla Gyebrószki 2015-07-08 04:22:01 UTC
Patch committed, marking the bug as fixed.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct.