diff --git a/src/core/main.cpp b/src/core/main.cpp index 0ea00a8c5..2aaf29f85 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -43,9 +43,13 @@ # include #endif +#ifdef Q_OS_UNIX +# include +#endif + #ifdef Q_OS_DARWIN - #include - #include +# include +# include #endif #ifdef Q_OS_WIN32 @@ -62,7 +66,7 @@ #include "qtsinglecoreapplication.h" #ifdef HAVE_DBUS - #include "mpris.h" +# include "mpris.h" #endif #include "utilities.h" #include "metatypes.h" @@ -222,5 +226,17 @@ int main(int argc, char* argv[]) { int ret = a.exec(); +#ifdef Q_OS_LINUX + QFile self_maps("/proc/self/maps"); + if (self_maps.open(QIODevice::ReadOnly)) { + QByteArray data = self_maps.readAll(); + if (data.contains("libnvidia-tls.so.")) { + qLog(Warning) << "Exiting immediately to work around NVIDIA driver bug"; + _exit(ret); + } + self_maps.close(); + } +#endif + return ret; }