Иногда в chromium подобных браузерах начинают очень криво отображаться страницы. Не то что бы “не по стандарту”, а с пропуском части контента и миганиями.
История
В большей своей массе проблемы рендеринга были просто “неудобные”, временами вообще не давали пользоваться браузером. Усугублялось все тем, что все основные часть браузера “показываются” через web-view - а значит с этими ошибками.
В основном проблема отображения заключались в:
- блоки меняют свое положение;
- контент мигает;
- часть или целая страница оказывается “не видимой”.
Из-за редкой повторяемости и простого (оказалось что как повезет) решения, даже не копал в сторону поиска и решения
проблемы. Обычно просто переключал флаг Preferred Ozone platform
на странице флагов и жил дальше.
Но в последний раз это оказалось не возможным: из-за вышеописанного (страница флагов - это web-view) она открывалась просто пустой, без каких-либо видимых контролов. Если поводить мышкой над страницей, то можно было увидеть что указатель менялся. Проблема в том, что я не помню наизусть где какой контрол находиться 😥.
Поиски причин
Так как сбой были явно связаны не с версткой, а с процессом рендеринга (и лечились переключение настройками рендеринга), решено было глянуть логи. В логах нашлось интересное:
|
|
Это сообщение повторялось раз за разом. При этом глаз зацепился за Skia shader compilation error
, что-то про GPU и
шейдер. В надежде (ну да 🙃), что это проблема не только у меня, решил поискать “собратьев по счастью”. Наткнулся на
баг: https://bugs.chromium.org/p/chromium/issues/detail?id=1442633.
Решение
Поискал упоминание этого бага и везде, как и в самом баг-репорте, советуют удалить папку с GPU кешем: GPUCache
. Найти
ее можно по пути:
|
|
Для других браузеров пути похожи, только нужно заменить название браузера в пути. В общем-то сбрасывать кеш GPU - задачка не сложная. Но есть особенности:
- проблема время от времени повторяется;
- браузеров несколько;
- лень запоминать пути и прочее.
Поэтому добавил в свой zsh
функцию-скрипт, что бы было человеческое автодополнение и можно было все “починить за пару
табов”:
|
|
Скрипт удалит кеш еще и для расширений. Дополнительные браузеры можно вписать во второй строке.