Странные артефакты вдоль границ окна после пробуждения компьютера из спящего режима

NB: Nvidia опубликовала официальное исправление; см. ответ ByteCommander, мой собственный ответ и / или ответ Каз Вулфа.

После пробуждения Ubuntu 16.04 от Suspend следующие графические сбои появляются вокруг всех окон, контекстных меню и аналогичный:

] В настоящее время известно, что это влияет на следующие карты NVIDIA, в которых работают проприетарные драйверы: NVIDIA GeForce 610M, версия драйвера 375.39, 340.102 NVIDIA GT 630M, версия драйвера 375.39 NVIDIA GTX 650, версия драйвера 375.39 NVIDIA GT 740M, версия драйвера 378.13 NVIDIA GTX 745, неизвестная версия драйвера NVIDIA GTX 850M, версия драйвера 375.39, 378.13 NVIDIA GT 940M, версия драйвера 375.39 NVIDIA GTX 950M, неизвестная версия драйвера NVIDIA GTX 960M, версия драйвера 378.13 NVIDIA GTX 970, версия драйвера 375.39 NVIDIA GTX 970M, версия драйвера 375.39 NVIDIA GTX 980 TI, неизвестная версия драйвера NVIDIA GTX 1060, версия драйвера 375.26, 375.39, 378.09 NVIDIA GTX 1070, версия драйвера 378.09 Вышеупомянутый список имеет b een получен из отчетов от других пользователей здесь, на AU, этой теме и этой теме. NB: Это не значит, что это эксклюзивный список. Вероятно, это влияет почти на все карты Nvidia.

Кроме того, эта проблема была реплицирована на чистой установке, где единственным изменением было обновление программного обеспечения и установка последних драйверов NVIDIA.

Что происходит, и как это можно решить?

1
задан 5 August 2017 в 01:40

9 ответов

NB: Это временное решение, пока Nvidia не выпустила исправленного драйвера. Прокрутите страницу вниз, чтобы найти другие ответы с фактическим исправлением. - Android Dev

У меня такая же проблема с использованием GPU: Nvidia GTX 970 с драйвером nvidia 375.39 на Ubuntu 16.04.2 LTS

Я наблюдал это с тех пор недавнее обновление драйвера nvidia. Поэтому я подозреваю, что это ошибка в драйвере.

Я нашел ответ на плате nvidia. Это подтвержденная ошибка в драйвере, и nvidia, по-видимому, уже работает над этим. Тем временем, вы можете перезапустить compiz с помощью

compiz --replace

, чтобы избавиться от артефактов.

на плате nvidia , включая автоматический сценарий обхода перезапустите compiz после возобновления.

77
ответ дан 23 May 2018 в 00:20
  • 1
    Удивительная детективная работа, спасибо! :) – Android Dev 24 March 2017 в 15:32
  • 2
    Другим решением было бы перейти на предыдущую версию драйвера: askubuntu.com/a/896544/657603 – Antoine Dusséaux 26 March 2017 в 13:55
  • 3
    Thx для обхода. Я не уверен, но поскольку у меня есть эта проблема, и у меня также есть еще одна проблема: мой ноутбук не всегда подвешен правильно через час после его установки. – Skalár Wag 28 March 2017 в 15:03
  • 4
    compiz --replace отлично работает с рабочими пространствами. Он помещает все окна всех рабочих областей в первое рабочее пространство :( – AlikElzin-kilaka 2 April 2017 в 10:15
  • 5
    Вы должны оставить терминал открытым с помощью этой команды. Если вы закроете терминал, он снова перезапустит compiz. Это будет работать до следующего приостановления, это не настоящее решение, я не могу работать с этой командой несколько раз в день. Пошел к вышеуказанному решению, изменив драйвер. – conualfy 5 April 2017 в 00:13

UPDATE 2:

Теперь Nvidia также обновила свои драйверы nvidia-375 до версии 375.66, которая доступна из стандартных репозиториев Ubuntu всех поддерживаемых в данный момент релизов.

Это означает, что теперь nvidia-375 , за исключением обычного обновления системы, как всегда. Вы не нуждаетесь в пакете драйвера из graphics-drivers PPA, если вы этого не хотите.

Ниже приведен фрагмент изменений для пакета из основных репозиториев 16.04 относительно этой ошибки:

$ apt changelog nvidia-375=375.66-0ubuntu0.16.04.1

  [...]
    - Fixed a regression that caused corruption in certain
      applications, such as window border shadows in Unity, after
      resuming from suspend.
  [...]

UPDATE:

Наконец, Nvidia исправила эту проблему и выпустила новую версию рабочего драйвера: nvidia-381

Решение, описанное в этом ответе, также было обновлено и теперь предлагает перейти на эту фиксированную версию вместо перехода на последнюю версию до ошибки. Однако это остается той же процедурой, но вы просто выключаете имена пакетов.

Проблема:

Некоторые из собственных пакетов драйверов графики Nvidia для Ubuntu ( а именно nvidia-375 и nvidia-378) являются ошибками и создают белые артефакты вокруг границ окна, которые показаны на ваших скриншотах в вопросе. Это происходит воспроизводимо каждый раз, когда вы снова приостанавливаете и снова пробуждаетесь.

До тех пор, пока несколько дней назад пакет nvidia-367 в репозитории Xenial работал нормально и надежно, но теперь они обновили его и преобразовали к пакету перехода, который автоматически устанавливает версию buggy nvidia-375.

Решение (обновлено после выпуска исправления от Nvidia):

Убедитесь, что у вас действительно есть графическая карта Nvidia, который вызывает проблему, а не один из другого бренда, который случайно ошибочно ведет себя аналогичным образом. Установка драйверов Nvidia для видеокарт без Nvidia не принесет пользы. Вы можете проверить это, проверив вывод команды ниже:
lspci -k | grep -iEA3 '3d|vga'

Мое решение на данный момент состоит в том, чтобы понизить с nvidia-375 или nvidia-378 до nvidia-370, что, похоже, работает до сих пор , Поскольку Nvidia выпустила новую версию обновленного драйвера nvidia-381 с исправленной ошибкой, мы можем (и должны) установить этот вариант вместо понижения.

Этот пакет недоступен из стандартные репозитории, но вы можете легко получить его из PPA и заменить его текущим драйвером, выполнив следующие команды:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt purge nvidia*

sudo apt install nvidia-370

sudo apt install nvidia-381

После вас закончили эту процедуру, перезагрузите компьютер и проверьте, есть ли у вас проблемы. Для меня они исчезли. Удачи.

58
ответ дан 23 May 2018 в 00:20
  • 1
    Для обычных пользователей я предпочел бы быстрое обходное решение вместо вместо того, чтобы понижать драйверы. Учитывая, что исправление будет освобождено (и, предположительно, не слишком ), это действительно просто временный дискомфорт. Однако если вы понижаете драйверы, вам придется не забывать возвращать apt обратно в состояние, в котором дополнительные обновления автоматически принимаются. Вам также придется активно следить за выпуском новой исправленной версии, а не просто ждать, чтобы получить ее автоматически - проблема подвержена и неудобна. – Jason C 4 April 2017 в 19:53
  • 2
    @JasonC Нет. [F1], скорее всего, также превратится в переходный пакет, как это уже делал nvidia-367, и поэтому это обновление автоматически установит версию драйвера nvidia / команда графических драйверов, которая считается подходящим преемником. 370 является последним (и, возможно, только) поддерживаемым в настоящий момент драйвером, на который не влияет эта ошибка, поэтому почему бы не использовать ее? По сравнению с 367, который использовался до обновления, введя эту ошибку, она по-прежнему обновляется. Кроме того, мы не сдерживаем какие-либо пакеты или не переопределяем какую-либо подходящую конфигурацию, как вы думаете. – Byte Commander 4 April 2017 в 23:03
  • 3
    @ByteCommander Я удалю свой комментарий в двух условиях. 1) Пока вы на 100% уверены, что будет превращаться в переходный пакет, я поверю вам (я не уверен на 100% в своем заявлении); или если вы не уверены на 100%, добавьте упоминание о риске для ответа и 2) Если вы добавите упоминание о том, как это не повлияет на будущие обновления, если он станет переходным пакетом и что делать один раз исправление освобождается, к ответу. – Jason C 5 April 2017 в 00:33
  • 4
    @JasonC Не нужно удалять свой комментарий. Я по очевидным причинам не могу гарантировать, что разработчики graphics-drivers PPA будут делать с их пакетами в будущем, я могу просто делать предположения, основываясь на том, что они делали в прошлом. И пока поддерживается 370, нет необходимости действовать, даже когда они фиксируют 375 и 378. Мое убеждение в том, что когда nvidia осуждает 370 (как это недавно делали с 367), сторонники PPA в переходный пакет, что означает, что обновленная версия не будет содержать больше кода, но добавит зависимость от более нового драйвера. – Byte Commander 5 April 2017 в 00:50
  • 5
    @ Мацмат, я не знаю. Время покажет. Возможно, он никогда не будет добавлен в репозитории «старше». Версии Ubuntu, выпущенные до этого пакета драйверов. Я не думаю, что можно дать точный ответ на этот вопрос, прежде чем это произошло. – Byte Commander 29 May 2017 в 00:50

Эта проблема присутствует в драйверах 375 и 378 ...

Учитывая, что просто уничтожение процесса компиляции устраняет проблему с плохой границей, я протестировал решение, которое работает на моем Ubuntu 16.04 каждый раз после пробуждения системы.

Шаг 1:

В каталоге /lib/systemd/system-sleep я создал скрипт под названием fixbadborders. Он содержал следующее:

#!/bin/sh
## This file (or a link to it) must be in the folder /lib/systemd/system-sleep/
## Purpose: Kill compiz after system wakes up from sleep.
## This will fix bad window borders caused by Nvidia driver 375.39.
kill $(ps -C compiz -o pid=)

Шаг 2:

Разрешил сценарию иметь разрешение на выполнение с помощью:

sudo chmod +x fixbadborders

Чтобы удалить этот скрипт: [ ! d7]

sudo rm /lib/systemd/system-sleep/fixbadborders

Все кредиты идут к Sun Bear, который создал этот комментарий к скрипту 13

7
ответ дан 23 May 2018 в 00:20
  • 1
    Лучше указывать вопросы как дубликаты, а не публиковать одно и то же решение снова и снова – Zanna 27 March 2017 в 09:01
  • 2
    Его недостатком является мой экран входа в систему, который никогда не отображается, когда выходите на рабочий стол со сна :( – Hesam 3 April 2017 в 20:35

NVIDIA выпустила обновленную версию драйвера, которая исправила эту регрессию. Любой драйвер, прошедший с 381.09, теперь больше не будет иметь эту проблему, пока NVIDIA не испортится снова.

До тех пор, пока драйвер не достигнет основных репозиториев, их можно загрузить с неофициального драйвера PPID NVIDIA. Это гарантирует, что вам не нужно будет возиться с установщиком (который считается плохой идеей) или нуво. Аналогичным образом, это позволит устанавливать / удалять драйверы через apt вместо опасной полуконфигурации, в которую установщик NVIDIA оставляет драйверы. Кроме того, это не вызовет никаких логических циклов или ошибок, если у вас нет странной системы. Чтобы установить, запустите:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-381

Старые драйверы будут автоматически удалены, а новые будут загружены. Последуйте за перезагрузкой компьютера (так как драйверы NVIDIA необходимо запекать в ядре) и все должно работать нормально. Вы можете проверить правильность установки драйверов, выполнив следующую команду:

nvidia-settings --version

Обязательно верните любые исправления, описанные в этом сообщении , а не , которые вы обновляете до последних драйверов. Например, если вы установили исправленную версию Unity, как описано ниже, запустите эту команду, чтобы вернуться к нормальной версии:

sudo ppa-purge ppa:kaihengfeng/lp1292830 

Обратите внимание, что вам понадобится ppa-purge, который может быть установлен сделано так:

sudo apt install ppa-purge

Если обновление не является вариантом (слишком старым для карты, политики компании и т. д.):

Kai-Heng Фэн из Launchpad был достаточно любезен, чтобы загрузить версию Unity в свой собственный PPA (ppa:kaihengfeng/lp1292830), который должен исправить эту проблему. Чтобы решить эту проблему, просто добавьте его PPA, выполнив следующие команды:

sudo add-apt-repository ppa:kaihengfeng/lp1292830 
sudo apt update
sudo apt full-upgrade

После того, как вы закончите, перезагрузите свою систему или перезапустите X11, выйдя из системы, а затем снова запустите.

В качестве альтернативы вы также можете выполнить любое из следующих действий:

Перейти на карту Intel. Если вы используете NVIDIA Prime, вы можете перейти на карту Intel, которая решит эту проблему. Обратите внимание, однако, что это не позволит системе использовать полную графическую мощность. Понижающие драйверы Согласно некоторым комментариям к отчету об ошибках, переход на драйвер NVIDIA 367.57 должен полностью решить проблему. Поскольку это больше не присутствует в PPA, вам необходимо загрузить его непосредственно из NVIDIA (64-разрядной) (32-разрядной) (32-разрядной ARM).
6
ответ дан 23 May 2018 в 00:20
  • 1
    367, похоже, уже не существует, как в официальных репозиториях Ubuntu, так и в graphics-drivers/ppa PPA, этот пакет является «переходным пакетом для nvidia-375, поэтому при установке он автоматически получит вам версию 375 багги. Если вам известен источник, из которого можно получить старый драйвер 367, вы должны включить его в свой ответ. – Byte Commander 1 April 2017 в 16:16
  • 2
    @ByteCommander сделал – Kaz Wolfe 1 April 2017 в 20:37
  • 3
    FYI, если вы его пропустили, исправленный драйвер теперь находится в официальном репо. – Android Dev 29 July 2017 в 15:27

Решение, предложенное Виктором А., прекрасно работает. Однако вы должны заметить, что скрипты, помещенные в /lib/systemd/system-sleep/, выполняются как при переходе компьютера в режим сна, так и при просыпании. Учитывая, что мы хотим только позже, использование предлагаемого сценария замедляет процесс перехода в сон без необходимости. Я рекомендую следующее:

#!/bin/sh
if [ "$2" = "suspend" ] || [ "$2" = "hybrid-sleep" ]; then
    case "$1" in
        post) kill $(ps -C compiz -o pid=) ;;
    esac
fi

Предупреждение. Этот скрипт (а также тот, который предлагается Виктором А.) отключит экран подсказки пароля при пробуждении, тем самым представляя угрозу безопасности.

3
ответ дан 23 May 2018 в 00:20

Эта проблема также исправлена ​​в драйвере Nvidia 375.66, который находится в обычных репозиториях и должен быть установлен обычными обновлениями.

3
ответ дан 23 May 2018 в 00:20
  • 1
    Приятно! Я обновил свой ответ, чтобы отразить эту новую разработку, и зачислил вам за то, что в официальном репо теперь есть исправленная версия :) – Android Dev 2 July 2017 в 00:15

Это не полное решение, но оно может быть лучше, чем с помощью compiz --replace или иначе перезапустить компиляцию и испортить ваши рабочие области.

Когда я возвращаюсь из suspend, я делаю это: [!d1 ] Система -> Настройки -> Тема изменения внешнего вида для другой темы. Вернуться к исходной теме

Это перезагрузит то, что кажется поврежденными текстурами в графическом процессоре. Если есть способ автоматически принудительно перезагрузить текстуру темы в резюме, это может быть постоянным решением.

2
ответ дан 23 May 2018 в 00:20

Есть еще один способ решить эту проблему.

Просто убить Xorg после пробуждения компьютера.

Найти PID Xorg:

top

Когда вы найдете pid Xorg, нажмите Ctrl + C, чтобы остановить «верхний» процесс.

Перейти к корню и убить процесс:

sudo su
kill [pid]

После этого войдите в свою учетную запись.

Предупреждение: это закроет все ваши приложения , Firefox не создает никаких проблем, он просто восстановит все ваши вкладки, но я не могу гарантировать другие приложения, поэтому сохраните их перед выполнением этого процесса.

1
ответ дан 23 May 2018 в 00:20
  • 1
    Кстати, чтобы закрыть стандартный путь, а не просто отменить задачу (Ctrl + C), вы можете просто нажать «q». – anonymous2 30 March 2017 в 14:35

Я попытался сменить драйвер на обновленную версию исправления ошибок, но он закрутил мою способность делать глубокое обучение с помощью тензорного потока, поэтому я вернулся к исходному программному обеспечению.

Это происходит каждый Я просыпаюсь с Убунту от сна. Я просто открываю терминал CTRL + ALT + T и нажимаю

killall compiz

Сброс дисплея и сбой исчезли. Это займет всего несколько секунд. Вы даже можете использовать его в своем ~/.bashrc, таком как alias kc='killall compiz', поэтому вам нужно только набрать kc, когда вы хотите выполнить команду.

0
ответ дан 23 May 2018 в 00:20

Другие вопросы по тегам:

Похожие вопросы: