Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 609752 - dev-qt/qtwebengine:5 causes nouveau driver crash
Summary: dev-qt/qtwebengine:5 causes nouveau driver crash
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal
Assignee: Gentoo X packagers
URL:
Whiteboard:
Keywords:
: 616956 617094 628844 629746 638896 (view as bug list)
Depends on: qt-5.9.6-stable
Blocks:
  Show dependency tree
 
Reported: 2017-02-18 16:53 UTC by Reuben Martin
Modified: 2018-09-08 07:21 UTC (History)
7 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Reuben Martin 2017-02-18 16:53:07 UTC
The nouveau drivers (especially for nv30 and nv40) do no gracefull deal with threaded calls into the driver. This is most problematic with apps using qtwebengine, like kmail for instance.

There is no readily available fix for nouveau. For the mesa-13 series I had been applying an experimental patch to provide locking that was a quick hack by Ilia Mirkin, however it is a nasty hack and isn't the correct way to deal with it. The best approach currently (I'm aware of) is to disable GPU rendering within qtwebengine when the nouveau driver is detected. Fixing nouveau will require a significant overhaul of it's internal workings, and nobody appears to be directly addressing that for the moment.

You can read more about it here:
https://bugs.freedesktop.org/show_bug.cgi?id=91632
https://bugs.freedesktop.org/show_bug.cgi?id=98039

There is a patch floating around for qtwebengine:5.7, but it will need to be reworked to apply cleanly on top of gentoo source + patches.
https://raw.githubusercontent.com/OpenMandrivaAssociation/qt5-qtwebengine/2e53a57ce5dd58f7ed06e715c9b0eeb7b2bd7718/disable-gpu-when-using-nouveau-boo-1005323.diff

Reproducible: Always
Comment 1 Paolo Pedroni 2017-03-17 10:32:27 UTC
Same problem :-(((
Comment 2 Reuben Martin 2017-03-17 15:08:37 UTC
Be aware that aside from patching qtwebengine, you can manually work around this by setting the environment variable QT_XCB_FORCE_SOFTWARE_OPENGL=1.

You don't have to set it globally, you can just set it for the processes causing problems.
Comment 3 Andreas Sturmlechner gentoo-dev 2017-05-07 17:23:53 UTC
*** Bug 616956 has been marked as a duplicate of this bug. ***
Comment 4 Andreas Sturmlechner gentoo-dev 2017-05-07 17:24:33 UTC
*** Bug 617094 has been marked as a duplicate of this bug. ***
Comment 5 Andrey Aleksandrovich 2017-05-13 14:12:23 UTC
(In reply to Reuben Martin from comment #2)
> Be aware that aside from patching qtwebengine, you can manually work around
> this by setting the environment variable QT_XCB_FORCE_SOFTWARE_OPENGL=1.
> 
> You don't have to set it globally, you can just set it for the processes
> causing problems.

It doesn't work with grsec/PaX enabled.
Comment 6 Andreas Sturmlechner gentoo-dev 2017-09-03 09:32:46 UTC
*** Bug 629746 has been marked as a duplicate of this bug. ***
Comment 7 Andreas Sturmlechner gentoo-dev 2017-09-10 10:03:11 UTC
*** Bug 628844 has been marked as a duplicate of this bug. ***
Comment 8 kavol 2017-09-10 10:23:47 UTC
(In reply to Reuben Martin from comment #2)
> Be aware that aside from patching qtwebengine, you can manually work around
> this by setting the environment variable QT_XCB_FORCE_SOFTWARE_OPENGL=1.
> 
> You don't have to set it globally, you can just set it for the processes
> causing problems.

ahem, pardon a stupid question, but where am I expected to set this so it is applied automatically, not having to run the apps from terminal with this variable exported/prepended?
Comment 9 Reuben Martin 2017-09-10 21:11:54 UTC
(In reply to kavol from comment #8)
> (In reply to Reuben Martin from comment #2)
> > Be aware that aside from patching qtwebengine, you can manually work around
> > this by setting the environment variable QT_XCB_FORCE_SOFTWARE_OPENGL=1.
> > 
> > You don't have to set it globally, you can just set it for the processes
> > causing problems.
> 
> ahem, pardon a stupid question, but where am I expected to set this so it is
> applied automatically, not having to run the apps from terminal with this
> variable exported/prepended?

You can prepend the variable def to the executable defined within a .desktop file the same as you do in a terminal.
Comment 10 kavol 2017-09-10 21:36:43 UTC
(In reply to Reuben Martin from comment #9)
... 
> You can prepend the variable def to the executable defined within a .desktop
> file the same as you do in a terminal.

thanks, but in that case I'd need to run it via that .desktop file, which isn't always sure

and I'd have to do that in /usr/share/applications/ so it takes effect for all users but I guess that would collide/get overwritten by merging updates

I was curious if there is some configfile to modify all that QT_* fancy stuff that gets set on session start, like some XDG_* vars can be found in /etc?
Comment 11 Reuben Martin 2017-09-11 05:39:53 UTC
(In reply to kavol from comment #10)
> I was curious if there is some configfile to modify all that QT_* fancy
> stuff that gets set on session start, like some XDG_* vars can be found in
> /etc?

If you want to set it globally, you can create a file in /etc/env.d/ with the variable set in it (similar to other files you will find in that location). Make sure after creating the file to run "env-update". After that reboot, and any session started will have that variable set.
Comment 12 kavol 2017-09-11 08:47:30 UTC
(In reply to Reuben Martin from comment #11)
> If you want to set it globally, you can create a file in /etc/env.d/ with
> the variable set in it (similar to other files you will find in that
> location). Make sure after creating the file to run "env-update". After that
> reboot, and any session started will have that variable set.

that's what I did in the end, however this really applies *globally*, i.e. I get this set even when logging in via ssh etc.

I was wondering what's the correct place to alter variables that are set when logging via displaymanager/starting up the desktop environment

I just can't find right keywords for Google, or this just isn't well documented

but StackExchange or so would be better place to ask probably, sorry for noise here, I didn't expect it to be that complicated and I hoped the answer might help others like me coming here via the crash

thanks for all the info
Comment 13 Andreas Sturmlechner gentoo-dev 2017-11-27 09:59:57 UTC
*** Bug 638896 has been marked as a duplicate of this bug. ***
Comment 14 Larry the Git Cow gentoo-dev 2018-06-20 15:29:03 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/proj/qt.git/commit/?id=938edc9a6b2179e4aabcf5ab340ebd64d90a77d1

commit 938edc9a6b2179e4aabcf5ab340ebd64d90a77d1
Author:     Andreas Sturmlechner <asturm@gentoo.org>
AuthorDate: 2018-06-18 21:05:49 +0000
Commit:     Andreas Sturmlechner <asturm@gentoo.org>
CommitDate: 2018-06-20 14:30:49 +0000

    dev-qt/qtwebengine: Disable GPU when using nouveau
    
    One upstream backport, the other one kindly borrowed from opensuse
    (disable-gpu-when-using-nouveau-boo-1005323.diff).
    
    Bug: https://bugs.gentoo.org/609752
    Package-Manager: Portage-2.3.40, Repoman-2.3.9

 ...-5.11.1-eglGetProcAddress-fallback-lookup.patch | 68 +++++++++++++++
 .../qtwebengine-5.11.1-nouveau-disable-gpu.patch   | 98 ++++++++++++++++++++++
 dev-qt/qtwebengine/qtwebengine-5.11.1.ebuild       |  2 +
 3 files changed, 168 insertions(+)
Comment 15 Larry the Git Cow gentoo-dev 2018-06-21 09:16:53 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/proj/qt.git/commit/?id=0ded5d274d2424fc1dae4221cf1f843d4c47d7e1

commit 0ded5d274d2424fc1dae4221cf1f843d4c47d7e1
Author:     Arfrever Frehtes Taifersar Arahesis <Arfrever@Apache.Org>
AuthorDate: 2018-06-21 03:55:08 +0000
Commit:     Jimi Huotari <chiitoo@gentoo.org>
CommitDate: 2018-06-21 09:11:07 +0000

    dev-qt/qtwebengine: Apply new patches in 5.11.9999 and 5.9999.
    
    Patches included:
    - libxml2-disable-catalogs.patch
    - ffmpeg4.patch
    - nouveau-disable-gpu.patch
    
    Bug: https://bugs.gentoo.org/609752
    Bug: https://bugs.gentoo.org/653078

 dev-qt/qtwebengine/qtwebengine-5.11.9999.ebuild | 6 ++++++
 dev-qt/qtwebengine/qtwebengine-5.9999.ebuild    | 6 ++++++
 2 files changed, 12 insertions(+)
Comment 16 Larry the Git Cow gentoo-dev 2018-06-27 19:00:45 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d88e48c5c2b63f9ad50d86329e8cae481d99ff97

commit d88e48c5c2b63f9ad50d86329e8cae481d99ff97
Author:     Andreas Sturmlechner <asturm@gentoo.org>
AuthorDate: 2018-06-26 13:40:47 +0000
Commit:     Andreas Sturmlechner <asturm@gentoo.org>
CommitDate: 2018-06-27 19:00:20 +0000

    dev-qt/qtwebengine: Disable GPU when using nouveau
    
    Kindly borrowed from opensuse
    (disable-gpu-when-using-nouveau-boo-1005323.diff).
    
    Bug: https://bugs.gentoo.org/609752
    Bug: https://bugs.gentoo.org/609752
    Package-Manager: Portage-2.3.40, Repoman-2.3.9

 dev-qt/qtwebengine/qtwebengine-5.9.6-r1.ebuild | 1 +
 1 file changed, 1 insertion(+)

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d88e48c5c2b63f9ad50d86329e8cae481d99ff97

commit d88e48c5c2b63f9ad50d86329e8cae481d99ff97
Author:     Andreas Sturmlechner <asturm@gentoo.org>
AuthorDate: 2018-06-26 13:40:47 +0000
Commit:     Andreas Sturmlechner <asturm@gentoo.org>
CommitDate: 2018-06-27 19:00:20 +0000

    dev-qt/qtwebengine: Disable GPU when using nouveau
    
    Kindly borrowed from opensuse
    (disable-gpu-when-using-nouveau-boo-1005323.diff).
    
    Bug: https://bugs.gentoo.org/609752
    Bug: https://bugs.gentoo.org/609752
    Package-Manager: Portage-2.3.40, Repoman-2.3.9

 dev-qt/qtwebengine/qtwebengine-5.9.6-r1.ebuild | 1 +
 1 file changed, 1 insertion(+)
Comment 17 Larry the Git Cow gentoo-dev 2018-09-08 07:21:35 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=dbd129895852cbeabe59b156a29f1f1d6d0eea2c

commit dbd129895852cbeabe59b156a29f1f1d6d0eea2c
Author:     Andreas Sturmlechner <asturm@gentoo.org>
AuthorDate: 2018-09-08 02:35:41 +0000
Commit:     Andreas Sturmlechner <asturm@gentoo.org>
CommitDate: 2018-09-08 07:21:01 +0000

    dev-qt: Drop Qt 5.9.4
    
    Closes: https://bugs.gentoo.org/609752
    Closes: https://bugs.gentoo.org/652508
    Package-Manager: Portage-2.3.49, Repoman-2.3.10

 dev-qt/assistant/Manifest                          |   1 -
 dev-qt/assistant/assistant-5.9.4.ebuild            |  55 -------
 dev-qt/designer/Manifest                           |   1 -
 dev-qt/designer/designer-5.9.4.ebuild              |  57 -------
 dev-qt/linguist-tools/Manifest                     |   1 -
 dev-qt/linguist-tools/linguist-tools-5.9.4.ebuild  |  35 -----
 dev-qt/linguist/Manifest                           |   1 -
 dev-qt/linguist/linguist-5.9.4.ebuild              |  48 ------
 dev-qt/pixeltool/Manifest                          |   1 -
 dev-qt/pixeltool/pixeltool-5.9.4.ebuild            |  25 ---
 dev-qt/qdbus/Manifest                              |   1 -
 dev-qt/qdbus/qdbus-5.9.4.ebuild                    |  25 ---
 dev-qt/qdbusviewer/Manifest                        |   1 -
 dev-qt/qdbusviewer/qdbusviewer-5.9.4.ebuild        |  45 ------
 dev-qt/qdoc/Manifest                               |   1 -
 dev-qt/qdoc/qdoc-5.9.4.ebuild                      |  31 ----
 dev-qt/qt-docs/Manifest                            |   9 --
 dev-qt/qt-docs/qt-docs-5.9.4_p201801220610.ebuild  |  51 ------
 dev-qt/qt3d/Manifest                               |   1 -
 dev-qt/qt3d/qt3d-5.9.4.ebuild                      |  32 ----
 dev-qt/qtbluetooth/Manifest                        |   1 -
 dev-qt/qtbluetooth/qtbluetooth-5.9.4.ebuild        |  33 ----
 dev-qt/qtcharts/Manifest                           |   1 -
 dev-qt/qtcharts/qtcharts-5.9.4.ebuild              |  29 ----
 dev-qt/qtconcurrent/Manifest                       |   1 -
 dev-qt/qtconcurrent/qtconcurrent-5.9.4.ebuild      |  23 ---
 dev-qt/qtcore/Manifest                             |   1 -
 dev-qt/qtcore/qtcore-5.9.4-r2.ebuild               |  75 ---------
 dev-qt/qtdatavis3d/Manifest                        |   1 -
 dev-qt/qtdatavis3d/qtdatavis3d-5.9.4.ebuild        |  31 ----
 dev-qt/qtdbus/Manifest                             |   1 -
 dev-qt/qtdbus/qtdbus-5.9.4.ebuild                  |  43 -----
 dev-qt/qtdeclarative/Manifest                      |   1 -
 dev-qt/qtdeclarative/qtdeclarative-5.9.4.ebuild    |  56 -------
 dev-qt/qtdiag/Manifest                             |   1 -
 dev-qt/qtdiag/qtdiag-5.9.4.ebuild                  |  36 -----
 dev-qt/qtgraphicaleffects/Manifest                 |   1 -
 .../qtgraphicaleffects-5.9.4.ebuild                |  21 ---
 dev-qt/qtgui/Manifest                              |   1 -
 .../files/qtgui-5.9.4-libinput-pixeldelta.patch    |  68 --------
 dev-qt/qtgui/files/qtgui-5.9.4-opengl.patch        |  87 ----------
 dev-qt/qtgui/files/qtgui-5.9.4-qsimpledrag.patch   | 170 --------------------
 dev-qt/qtgui/qtgui-5.9.4-r3.ebuild                 | 175 ---------------------
 dev-qt/qthelp/Manifest                             |   1 -
 dev-qt/qthelp/qthelp-5.9.4.ebuild                  |  30 ----
 dev-qt/qtimageformats/Manifest                     |   1 -
 dev-qt/qtimageformats/qtimageformats-5.9.4.ebuild  |  29 ----
 dev-qt/qtlocation/Manifest                         |   1 -
 dev-qt/qtlocation/qtlocation-5.9.4.ebuild          |  44 ------
 dev-qt/qtmultimedia/Manifest                       |   1 -
 dev-qt/qtmultimedia/qtmultimedia-5.9.4-r1.ebuild   |  69 --------
 dev-qt/qtnetwork/Manifest                          |   1 -
 dev-qt/qtnetwork/qtnetwork-5.9.4.ebuild            |  60 -------
 dev-qt/qtnetworkauth/Manifest                      |   1 -
 dev-qt/qtnetworkauth/qtnetworkauth-5.9.4.ebuild    |  20 ---
 dev-qt/qtopengl/Manifest                           |   1 -
 dev-qt/qtopengl/qtopengl-5.9.4.ebuild              |  34 ----
 dev-qt/qtpaths/Manifest                            |   1 -
 dev-qt/qtpaths/qtpaths-5.9.4.ebuild                |  23 ---
 dev-qt/qtplugininfo/Manifest                       |   1 -
 dev-qt/qtplugininfo/qtplugininfo-5.9.4.ebuild      |  23 ---
 dev-qt/qtpositioning/Manifest                      |   1 -
 dev-qt/qtpositioning/qtpositioning-5.9.4.ebuild    |  37 -----
 dev-qt/qtprintsupport/Manifest                     |   1 -
 dev-qt/qtprintsupport/qtprintsupport-5.9.4.ebuild  |  42 -----
 dev-qt/qtquickcontrols/Manifest                    |   1 -
 .../qtquickcontrols/qtquickcontrols-5.9.4.ebuild   |  32 ----
 dev-qt/qtquickcontrols2/Manifest                   |   1 -
 .../qtquickcontrols2/qtquickcontrols2-5.9.4.ebuild |  30 ----
 dev-qt/qtscript/Manifest                           |   1 -
 dev-qt/qtscript/qtscript-5.9.4.ebuild              |  36 -----
 dev-qt/qtscxml/Manifest                            |   1 -
 dev-qt/qtscxml/qtscxml-5.9.4.ebuild                |  19 ---
 dev-qt/qtsensors/Manifest                          |   1 -
 dev-qt/qtsensors/qtsensors-5.9.4.ebuild            |  28 ----
 dev-qt/qtserialbus/Manifest                        |   1 -
 dev-qt/qtserialbus/qtserialbus-5.9.4.ebuild        |  20 ---
 dev-qt/qtserialport/Manifest                       |   1 -
 dev-qt/qtserialport/qtserialport-5.9.4.ebuild      |  27 ----
 dev-qt/qtspeech/Manifest                           |   1 -
 dev-qt/qtspeech/qtspeech-5.9.4.ebuild              |  22 ---
 dev-qt/qtsql/Manifest                              |   1 -
 dev-qt/qtsql/files/qtsql-5.9.4-mariadb-10.2.patch  |  35 -----
 dev-qt/qtsql/qtsql-5.9.4-r1.ebuild                 |  62 --------
 dev-qt/qtsvg/Manifest                              |   1 -
 dev-qt/qtsvg/qtsvg-5.9.4-r2.ebuild                 |  23 ---
 dev-qt/qttest/Manifest                             |   1 -
 dev-qt/qttest/qttest-5.9.4.ebuild                  |  33 ----
 dev-qt/qttranslations/Manifest                     |   1 -
 dev-qt/qttranslations/qttranslations-5.9.4.ebuild  |  19 ---
 dev-qt/qtvirtualkeyboard/Manifest                  |   1 -
 .../qtvirtualkeyboard-5.9.4.ebuild                 |  38 -----
 dev-qt/qtwayland/Manifest                          |   1 -
 .../files/qtwayland-5.9.4-qquickwindow-crash.patch | 109 -------------
 dev-qt/qtwayland/qtwayland-5.9.4-r1.ebuild         |  41 -----
 dev-qt/qtwebchannel/Manifest                       |   1 -
 dev-qt/qtwebchannel/qtwebchannel-5.9.4.ebuild      |  26 ---
 dev-qt/qtwebengine/Manifest                        |   1 -
 .../files/qtwebengine-5.9.3-icu-60.1.patch         |  16 --
 dev-qt/qtwebengine/qtwebengine-5.9.4.ebuild        | 127 ---------------
 dev-qt/qtwebsockets/Manifest                       |   1 -
 dev-qt/qtwebsockets/qtwebsockets-5.9.4.ebuild      |  27 ----
 dev-qt/qtwebview/Manifest                          |   1 -
 dev-qt/qtwebview/qtwebview-5.9.4.ebuild            |  21 ---
 dev-qt/qtwidgets/Manifest                          |   1 -
 dev-qt/qtwidgets/qtwidgets-5.9.4-r1.ebuild         |  57 -------
 dev-qt/qtx11extras/Manifest                        |   1 -
 dev-qt/qtx11extras/qtx11extras-5.9.4.ebuild        |  21 ---
 dev-qt/qtxml/Manifest                              |   1 -
 dev-qt/qtxml/qtxml-5.9.4.ebuild                    |  29 ----
 dev-qt/qtxmlpatterns/Manifest                      |   1 -
 dev-qt/qtxmlpatterns/qtxmlpatterns-5.9.4.ebuild    |  19 ---
 112 files changed, 2640 deletions(-)