Ошибка "Encountered an improper" и утечка GDI Objects [исправлено]

Автор Evgeniy1990, 07 октября 2020, 20:54:13

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Evgeniy1990

Aleksoid1978,
Цитата: Aleksoid1978 от 09 октября 2020, 10:04:35
Если честно - мое мнение такое что ну "пофиг" :) Отловить что это и почему так себя ведет - практически не реально.
Проблема проявляется при взаимодействии с плейлистом. Попробуйте добавить сериал (серий 30 и больше) в плейлист, а затем выберите любую серию, зажмите ЛКМ и не отпуская ее, перетаскивайте ее вверх, или же вниз. В момент автоматической прокрутки плейлиста и проявится данная проблема.

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

И тут сразу станет понятно, что одним из предполагаемых изменений, является фикс видимости выбранного файла при его выделении и перетаскивании. Вот с этого и надо начинать поиск и проверку.
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

Evgeniy1990

Aleksoid1978, V0lt
Как я и подозревал, - это действительно поломка. Попробовал поискать проблемное изменение.

И нашел таки проблемный диапазон - это  [r4373 -> r4378].

Вот список изменений, входящих в данный диапазон:

[r4378] by aleksoid
Изменение : Плейлист - закрываем текущее воспроизведение только при необходимости.

[r4377] by aleksoid
Изменение : Плейлист - для "проводника" отключаем выделение/снятие с помощью Ctrl+A/I.

[r4376] by aleksoid
Изменение : Плейлист - используем "правильную" сортировку при построении списка содержимого папок/дисков.

[r4375] by aleksoid
Изменение : Плейлист - не всегда запоминалось содержимое при закрытии.

[r4374] by aleksoid
Изменение : Перенос кода из branches/Playlist в основную ветку.

[r4373] by aleksoid
Изменение : Во внешних ANSI субтитрах обрезался символ "..." в некоторых ситуациях. За патч спасибо MPC-HC.


Исходя из данного списка изменений, проблемным является одно из четырех изменений, связанных с плейлистом.
Это изменения 4375 -> 4378. Если конечно не все, что маловероятно.

Можно попробовать собрать четыре билда и проверить каждый, начиная с 4375 до 4378.
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

Aleksoid1978

Там был перенос кода из ветки, изменений 100500 просто :)
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Evgeniy1990

Aleksoid1978,
Цитата: Aleksoid1978 от 09 октября 2020, 12:42:41
Там был перенос кода из ветки, изменений 100500 просто :)
У нас в хранилище есть ветка branches под ревизией 4372. Ее перенесли в ветку trunk, под ревизией 4374. Тогда имеет смысл собрать именно ее и более ранние ревизии из нее же. Да, изменений немало, вот только я вижу очень сомнительное изменение под ревизией 4220.
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

V0lt

Evgeniy1990
Я спрашивал про ошибку "Encountered an improper".

MPCfan

V0lt,
Цитата: V0lt от 09 октября 2020, 05:44:50
MPCfan, Evgeniy1990
А на светлой теме подобное наблюдается?
При воспроизведении в светлой теме тоже выскочило "encountered an improper" > https://yadi.sk/i/rXWLpxRwFgMG6g

Evgeniy1990

V0lt,
Цитировать
Я спрашивал про ошибку "Encountered an improper".
Так я же вам ответил, что она наблюдается даже на светлой теме. Тут не в темах дело, а в самом плейлисте. В него влепили просто кучу сомнительных изменений/исправлений. Потом выполнили слияние (перенос из одной ветки в другую).

Но проблему можно исправить. А для этого надо найти конкретное проблемное изменение среди этой кучи сомнительных.
Нужно разбираться с веткой branches, так как именно из нее и был сделан перенос кода плейлиста.
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

MPCfan

Evgeniy1990,
Возможно, нужен стабильный и недолгий способ воспроизведения данного нюанса с плейлистом. У себя провёл несколько тестов следующим образом: добавил в  пустой плейлист всего один пункт и начал его перемещать вниз по пустому полю плейлиста вниз. После десяток попыток оказалось, требуется около 2 минут=примерно 45-50 опусков вниз и плеер зависает. Такое впечатление, что что-то накапливается в плеере, скажем так, что приводит к такому эффекту. Вот пример > https://yadi.sk/i/NB5FYSDb3_Uv8A

Aleksoid1978

Скажу так - у меня нет особого желания ковыряться, я плейлистом можно сказать не пользуюсь.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

#24
Цитата: MPCfan от 10 октября 2020, 00:04:00Возможно, нужен стабильный и недолгий способ воспроизведения данного нюанса с плейлистом. У себя провёл несколько тестов следующим образом: добавил в  пустой плейлист всего один пункт и начал его перемещать вниз по пустому полю плейлиста вниз. После десяток попыток оказалось, требуется около 2 минут=примерно 45-50 опусков вниз и плеер зависает. Такое впечатление, что что-то накапливается в плеере, скажем так, что приводит к такому эффекту.
Хорошее предположение!
В общем положить плеер можно гораздо проще. Хватаем единственный пункт в плейлисте и долго его таскаем куда угодно. Можно прерываться. В конечном итоге вылезет какая-нибудь бяка.
Проблема появляется когда число GDI Objects достигает 10000. Это можно увидеть в Process Explorer добавив колонку из вкладки "Process Memory".



Статья на тему - https://habr.com/ru/post/318948/

Добавлено:
Согласно данным, которые дает утилита GDIView, у нас создается много объектов "Region" и не удаляются.

Aleksoid1978

Если прикол именно с тасканием и при этом текет GDI - тогда проще.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

#26
Устранил утечку GDI Objects в r5572.
Пожалуйста, проверьте.

Evgeniy1990

V0lt,
Цитата: V0lt от 10 октября 2020, 22:08:47
Устранил утечку GDI Objects в r5572.
Пожалуйста, проверьте.
Собрал и проверил SVN r5572. Основная проблема (ошибка "Encountered an improper"/утечка GDI Objects") исправлена. :)

Только это еще не все. По прежнему выделенный элемент, при перетаскивании, гуляет в области плейлиста и за его пределами.
Так быть не должно. Вообще, у нас с интерфейсом постоянно выскакивают подобные бяки, когда какой-либо из элементов, при его использовании, или же взаимодействии с ним, просто отламывается от своей основы.
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

V0lt

Цитата: Evgeniy1990 от 11 октября 2020, 09:02:52Только это еще не все. По прежнему выделенный элемент, при перетаскивании, гуляет в области плейлиста и за его пределами.
Это фича такая при перетаскивании. Встречается повсеместно.
Удобно, когда захотел передумать перенос. Просто перенесим туда, куда переносить нельзя, и перенос отменяется.