Странный баг отрисовки в Windows

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Странный баг отрисовки в Windows

Сообщение Хакер » 15.07.2015 (Ср) 12:33

Не так давно стал замечать странный баг в работе механизма отрисовки окон в Windows.

Такое впечатление, что кто-то в определённые момент времени начинает фильтровать WM_PAINT и WM_NCPAINT. Оборачивается, это, естественно, тем, что многие приложения не перерисовывают свои окна и имеют мусор на них.

Пока разбираться и деттально копать нет времени.

Никто не встречался с таким у себя?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

The trick
Постоялец
Постоялец
 
Сообщения: 781
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Странный баг отрисовки в Windows

Сообщение The trick » 15.07.2015 (Ср) 12:37

На Win7 x64 такое было регулярно, обычно когда над IDE пронесешь другое окно то в окне кода мусор и больше половины символов не видно.
UA6527P

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Странный баг отрисовки в Windows

Сообщение Хакер » 15.07.2015 (Ср) 12:45

Это баг IDE, я его всю жизнь наблюдаю.

Сейчас речь об XP, а страдают все приложения.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

The trick
Постоялец
Постоялец
 
Сообщения: 781
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Странный баг отрисовки в Windows

Сообщение The trick » 15.07.2015 (Ср) 12:49

Хакер писал(а):Это баг IDE, я его всю жизнь наблюдаю.

Сейчас речь об XP, а страдают все приложения.

Странно, но сейчас у меня XP и в IDE все в порядке.
UA6527P

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Странный баг отрисовки в Windows

Сообщение Хакер » 15.07.2015 (Ср) 13:00

Ну он не всегда в IDE проявляется, но часто бывает. Во всяком случае, я его не вчера наблюдать начал.

А то, о чём я пишу, буквально дня 4 назад появилось.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Странный баг отрисовки в Windows

Сообщение Mikle » 15.07.2015 (Ср) 14:30

Вижу довольно часто, например, при перекрытии браузером аудиоредактора. XP SP3.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Странный баг отрисовки в Windows

Сообщение Хакер » 15.07.2015 (Ср) 15:58

Если только аудиоредактор страдает, то это может быть багом аудиоредактора.

У меня же с недавних пор страдает всё:
FireFox, Skype, виндовый проводник и системные диалоги (например Пуск→Выполнить).
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Странный баг отрисовки в Windows

Сообщение alibek » 15.07.2015 (Ср) 17:23

Хакер писал(а):У меня же с недавних пор страдает всё:

Возможно виноват баг в какой-нибудь сервисной утилите, которая цепляется ко всем процессам.
Можно просмотреть HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs, чтобы определиться с кандидатом.
Lasciate ogni speranza, voi ch'entrate.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Странный баг отрисовки в Windows

Сообщение Хакер » 15.07.2015 (Ср) 18:28

Дело в том, что ничего не инсталлировалось. Абсолютно ничего.
Единственная вещь, которая была скачана и запущена и момент запуска которой совпадает с появления бага, — это игра Майкла.

А смотреть я конечно буду, но немного позже.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Странный баг отрисовки в Windows

Сообщение Хакер » 15.07.2015 (Ср) 19:03

Любопытно, но при этом ещё и ломается возможность снимать скриншоты.

Если снимать снималками — то ломаются они.
Например SnagIt:
---------------------------
SnagIt
---------------------------
Unable to capture input.
---------------------------
ОК
---------------------------


Если снимать штатными средствами, то что-то в буфер обмена копируется, но при попытке вставить в Paint:
---------------------------
Paint
---------------------------
Ошибка при чтении данных из буфера обмена.
---------------------------
ОК
---------------------------
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Странный баг отрисовки в Windows

Сообщение Mikle » 15.07.2015 (Ср) 22:08

Хакер писал(а):Единственная вещь, которая была скачана и запущена и момент запуска которой совпадает с появления бага, — это игра Майкла.

Но там же ничего нет, кроме инициализации D3D в текущем режиме экрана. Если что-то и слетит по какой-то причине, то до перезагрузки системы.
Ты компьютер полноценно перезагружал? (мало ли, вдруг гибернацией пользуешься).
Как вариант - попробуй сменить битность режима экрана на 16 бит, а потом восстановить нормальную.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Странный баг отрисовки в Windows

Сообщение Хакер » 15.07.2015 (Ср) 22:10

Компьютер обычно не перезагружается по 2—3 месяца, но в данном случае перезагружался несколько раз вчера.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Странный баг отрисовки в Windows

Сообщение alibek » 15.07.2015 (Ср) 22:52

Ищи живность.
Lasciate ogni speranza, voi ch'entrate.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Странный баг отрисовки в Windows

Сообщение Хакер » 16.07.2015 (Чт) 10:33

Кстати, если скриншот всего экрана не вставляется, то скриншот одного окна вставляется, но оказывается при этом чёрно-белым (двухцветным).

Я думаю, что это не живность, а какая-то проблема в графической подсистеме. Возможно надо расчехлять memtest86.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Странный баг отрисовки в Windows

Сообщение Хакер » 16.07.2015 (Чт) 17:47

Чем дальше в лес, тем больше дров.

До обеда были странные вещи:
unexpected_err1.png
unexpected_err1.png (9 Кб) Просмотров: 8569


unexpected_err2.PNG
unexpected_err2.PNG (10.59 Кб) Просмотров: 8569


Потом я уехал. А после приезда компьютер встретил меня этим:
igxprd32_bsod.jpg
igxprd32_bsod.jpg (63.37 Кб) Просмотров: 8569

(простите за смазанную фотографию).

igxprd32 — это как раз Intel Graphics 2D Rotation Driver, то есть отношение к графике самое прямое.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Странный баг отрисовки в Windows

Сообщение ger_kar » 18.07.2015 (Сб) 21:14

Хакер писал(а):Компьютер обычно не перезагружается по 2—3 месяца
Да, энергетика у вас надежная. У меня бы столько не простоял, энергетики бы выключится обязательно помогли :)
Бороться и искать, найти и перепрятать

Kroos
Обычный пользователь
Обычный пользователь
 
Сообщения: 55
Зарегистрирован: 21.02.2012 (Вт) 16:57

Re: Странный баг отрисовки в Windows

Сообщение Kroos » 25.07.2015 (Сб) 23:27

мож железки умирать уже начинают, кондеры пухнут и проч... у меня похожая чушь была перед смертью видяхи (ладно хоть не мать). Заменил - все норм стало.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Странный баг отрисовки в Windows

Сообщение Хакер » 26.07.2015 (Вс) 0:17

Выдалась вчера возможности провести длинное тестированием Memtest'ом.

Итог: 18 циклов полного прогона всех тестов — ни одной ошибки.

Но не без странностей. Первые 4 прогона я наблюдал лично. Они заняли 1 час 24 минуты (или, другими словами — 84 минуты). Путём нехитрых подсчётов было получено, что на один прогон затрачивается 21 минута. Значит, планируемые мной 20 прогонов должны были занять 420 минут (или 7 часов). Я оставил тесты на 3 часа 20 минут, а когда вернулся, ожидал увидеть 9-ый прогон, но увидел 7-ой. Первая мысль — «почему-то тесты стали идти медленнее». Но на самом деле Memtest86+ показывал 100% завершённости прогона и 100% завершённости теста в рамках текущего прогона. И тем не менее, он не переходил к следующему прогону, а продолжал выплять тесты 7-го прогона.

Что это было: собственный баг Memtest'а, или как раз мы наткнулись на глюк памяти, но в этот момент в это области памяти лежал код или данные самого Memtest'а — сложно сказать.

Чтобы вывести Memtest из зацикленности достаточно было полазить по его менюшкам и попереключать там формат вывода сведеий об ошибках (не уверен, что из двух вывело его из бесконечного цикла). После этого следующий же момент завершения последнего теста начал 8-ой прогон.

Дальше я опять уехал. Вернулся через 11 с лишним часов (после запуска тестов): общее число выполненных прогонов равнялось 18, а ошибок — 0.

_____________

Вообще же я заметил, что описанный в начале глюк проявляется тем интенсивнее, чем больше в данный момент должно быть предположительно создано GDI-объектов. Появились глюки — закрываем чего-нибудь GDI-ресурсоёмкое — глюки отступают (но не обязательно надолго).

_____________

Kroos писал(а):мож железки умирать уже начинают, кондеры пухнут и проч...

Ну, во-первых, несколько рано.

Во-вторых, у меня несколько мониторов, и каждый получает свой сигнал от разных видеокарт. Один — от встроенное видео (встроенного даже не в материнку, а в процессор). Второй — от дискретной карточки nVidia GeForce 6200. Глюкам с непрорисовкой подверженны обе экранных плоскости в равной степени.

igxprd32, фигурирующий в BSOD-е, относится к первому источнику видео.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Странный баг отрисовки в Windows

Сообщение Хакер » 27.07.2015 (Пн) 17:09

Складывается впечатление, что по большей части баги провоцирует процесс Скайпа. И момент появления бага тогда удачно совпадает с моментом автообновления скайпа (а такое было — после чего количество рекламы в нём превысило все мыслимые пределы).
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Sam777e
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 157
Зарегистрирован: 16.09.2010 (Чт) 4:33

Re: Странный баг отрисовки в Windows

Сообщение Sam777e » 27.07.2015 (Пн) 18:18

А если, в качестве эксперимента, временно удалить Skype ?
Здоровья и удачи

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Странный баг отрисовки в Windows

Сообщение Хакер » 28.07.2015 (Вт) 2:17

Sam777e писал(а):А если, в качестве эксперимента, временно удалить Skype ?

Нельзя, он нужен в работе.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Странный баг отрисовки в Windows

Сообщение ger_kar » 28.07.2015 (Вт) 7:19

А если не удалять, а просто не запускать? Т.е. связан ли глюк с таким моментом: Запущен скайп или нет? По идее если приложение установлено, но не запущено, то оно никак не должно влиять на систему и остальные приложения, если конечно оно при установке не подменяет системные библиотеки и не инициирует скрытые процессы. А вообще конечно новый версии скайпа просто жуткая шняга. Я с того момента, как перестала работать версия 4.хх, просто перестал им пользоваться.
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Странный баг отрисовки в Windows

Сообщение Хакер » 28.07.2015 (Вт) 7:21

ger_kar писал(а):А если не удалять, а просто не запускать?

Хакер писал(а):Нельзя, он нужен в работе.


Тем не менее, за последние дни все эпизоды появления бага были при работающем Скайпе (в самом скайпе или совершенно посторонних процессах). В этот момент Скайп выключался и глюки проходили. Через некоторое время Скайп включался. Появления глюков при выключенном Скайпе замеченно не было.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Странный баг отрисовки в Windows

Сообщение ger_kar » 28.07.2015 (Вт) 9:56

Интересно, а если в процессе протекания глюка снять скрин всего экрана, то там их будет видно (на скрине) ?
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Странный баг отрисовки в Windows

Сообщение Хакер » 28.07.2015 (Вт) 10:06

В процессе протекания глюка скриншоты не снимаются же.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Странный баг отрисовки в Windows

Сообщение Debugger » 28.07.2015 (Вт) 13:05

KVMкой/сфотографировать экран?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Странный баг отрисовки в Windows

Сообщение Хакер » 28.07.2015 (Вт) 13:15

Debugger писал(а):KVMкой/сфотографировать экран?

А смысл?

Я так понял, что ger_kar интересуется, останутся ли графические искажения на скриншоте, снятом в момент искажении. В зависимости от того, останутся ли, или скриншот будет без изъянов, можно судить о механизме возникновения бага.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Странный баг отрисовки в Windows

Сообщение ger_kar » 28.07.2015 (Вт) 13:23

Хакер писал(а):Я так понял, что ger_kar интересуется, останутся ли графические искажения на скриншоте, снятом в момент искажении. В зависимости от того, останутся ли, или скриншот будет без изъянов, можно судить о механизме возникновения бага.
Именно это я и имел ввиду.
Бороться и искать, найти и перепрятать

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Странный баг отрисовки в Windows

Сообщение Debugger » 28.07.2015 (Вт) 13:56

ger_kar писал(а):
Хакер писал(а):Я так понял, что ger_kar интересуется, останутся ли графические искажения на скриншоте, снятом в момент искажении. В зависимости от того, останутся ли, или скриншот будет без изъянов, можно судить о механизме возникновения бага.
Именно это я и имел ввиду.

Тогда да, KVM не поможет.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Странный баг отрисовки в Windows

Сообщение Хакер » 28.07.2015 (Вт) 15:30

Если же интересно, как баги выглядят и как проявляются, то вот фотосессия.

Skype как раз был запущен.

Одно из характерных проявлений — штатный просмотрщик изображений не может показывать картинки вот с такой формулировкой:
Изображение

При ресайзе этого окна происходит пересоздание битмапа (под новые габариты), и процентах в 10 это пересоздание оказывается успешным и картинка проявляется. То есть изображение то появляется, то исчезает с изменением размера окна хотя бы на 1 px.

Привычно открываю SnagIt — чтобы снять то, что выше (пришлось сфотографировать). SnagIt, естественно, не может снять скриншот, зато его окно (открывшееся на другом мониторе) просвечивает то, что оказалось под ним:
Изображение

Словно WM_ERASEBKGND не сработал. Именно так: дело точно не в том, что у окна такой причудливый clip region или что оно слоёное. Весь этот графический мусор, оказавшийся внутри региона окна будет перемещаться вместе с окном при передвижении окна (как это штатно бывает — перетаскивание окна двигает растр).

Разворачиваю окно Скайпа: у него верхушка отрисовалась, а элемент со списком контактов — не отрисовался вообще, а поэтому просвечивает окно браузера и вьювера картинок.
Изображение

Если водить мышкой над списком контактов, то конечно соответствующие элементы начинают рисоваться. То есть само по себе приложение, реагируя на WM_MOUSEMOVE, какую-то свою оконную графику перерисовывать может. А вот самоотрисовка по WM_PAINT и WM_NCPAINT — хромает.

Например вот:
Изображение
При проведении над «Echo / Sound Test Service» мышкой этот айтем перерисовался. Белый фон и прочие айтемы, естественно, нет.

Окно SnagIt'а, тем временем, заполняется фрагментами собственной графики и мусором, оставшимся от отрисовки поверх него окна Скайпа:
Изображение

А окно Скайпа — фрагментами окна SnagIt'а, которые при прокрутке контакт-листа только оставляют за собой шлейф:
Изображение

Тут следует напомнить, как обычно реализуются скроллируемые контейнеры: при получении WM_MOUSEWHEEL код внутри WindowProc дёргает какую-то общую функцию, ответственную за скроллинг, ту же, которую дёргают обработчики сообщений от скроллбаров. Эта функция вызывает API-функцию ScrollWindow, которая просто сдвигает растр (копированием, вероятно, с помощью BitBlt), а затем — InvalidateRect (или InvalidateRgn), помечая участок, на месте которого должна появиться новая графика (ранее скрытая, но появляющаяся на новом месте в результате скроллинга). В результате вызова InvalidateRect в очередь сообщений прилетает сообщение WM_PAINT, которое заставляет WindowProc окна перерисовать фрагментик, на месте которого должна появиться новая графика.

В нашем случае всё так, но WM_PAINT не обрабатывается успешно. Так что картина вполне ожидаемая и объяснимая.


Баг с недообработкой WM_NCPAINT (когда у вновь появляющихся окон отсутствует синяя полоса заголовка) я поймать в этот раз не смог.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

След.

Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17

    TopList  
cron