MPC-BE forum

MPC-BE => Баг Репорт / The bug report => Архив / Archive => Тема начата: Evgeniy1990 от 07 октября 2020, 20:54:13

Название: Ошибка "Encountered an improper" и утечка GDI Objects [исправлено]
Отправлено: Evgeniy1990 от 07 октября 2020, 20:54:13
Во время воспроизведения видео файла, сама по себе выскочила странная и неизвестная ошибка "Encountered an improper". Перед ее появлением, воспроизведение немного притормаживало и плеер вообще никак не реагировал на действия пользователя. Если нажать "ОК", то плеер просто зависнет намертво и упадет.

Прилагаю все необходимые файлы и скриншот с местом падения (https://yadi.sk/d/fRQubfrS7XHgcA).

P.S. Очень странная ошибка, впервые вижу нечто подобное.
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: V0lt от 07 октября 2020, 21:20:09
Evgeniy1990
Ошибка повторяема? Попробуй отключить опцию "Использовать темное меню" в панели настроек "Интерфейс".
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: MPCfan от 07 октября 2020, 21:41:18
Evgeniy1990,
С такой ошибкой как у вас на скриншоте(encountered an improper) я нередко сталкиваюсь на Win8, но не при воспроизведении, а при определённых действиях с плейлистом.
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: Evgeniy1990 от 07 октября 2020, 22:15:02
V0lt,
ЦитироватьОшибка повторяема? Попробуй отключить опцию "Использовать темное меню" в панели настроек "Интерфейс".
Ошибка повторяется, но сам я повторно ее воспроизвести не смогу. В момент ее появления, в диспетчере задач можно увидеть еще один процесс "MPC-BE.exe", который выглядит как приложение для MS-DOS.
MPCfan,
ЦитироватьС такой ошибкой как у вас на скриншоте(encountered an improper) я нередко сталкиваюсь на Win8, но не при воспроизведении, а при определённых действиях с плейлистом.
Действительно, в момент воспроизведения видео файла у меня был открыт плейлист. Но никаких действий я с ним не выполнял в момент воспроизведения. Если завершить лишний процесс "MPC-BE.exe" в диспетчере задач, то плеер начинает отвечать на действия пользователя, но при этом сам плейлист заливается белым фоном.

Однозначно, имеются какие-то проблемы с темным интерфейсом и плейлистом, точнее что-то не так с темным интерфейсом для плейлиста. Сам баг довольно неприятный, поскольку выглядит это так, как будто бы плеер, или же его темный плейлист выжрал всю память компьютера.
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: MPCfan от 07 октября 2020, 22:33:35
Evgeniy1990,
Вот именно, c интерфейсом плеера происходят причудливые метаморфозы, в частности плейлист заливается белым цветом и у меня, либо какая-то часть его, например прокрутка становится белой и плеер виснет, закрываешь его, а под ним это окно с ошибкой. А бывает, что плейлист оказывается в области видеокадра в противоположной стороне от места закрепления, да и всякое ещё. Но у меня это только происходит, если продолжительное время что-то делать с плейлистом, например перемещать пункты вверх/вниз по плейлисту, удалять, переименовывать. В классической теме такого не наблюдал, но плеер всё-равно может закрыться после таких действий.
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: Evgeniy1990 от 07 октября 2020, 23:00:38
MPCfan,
ЦитироватьВот именно, c интерфейсом плеера происходят причудливые метаморфозы, в частности плейлист заливается белым цветом и у меня, либо какая-то часть его, например прокрутка становится белой и плеер виснет, закрываешь его, а под ним это окно с ошибкой. А бывает, что плейлист оказывается в области видеокадра в противоположной стороне от места закрепления, да и всякое ещё. Но у меня это только происходит, если продолжительное время что-то делать с плейлистом, например перемещать пункты вверх/вниз по плейлисту, удалять, переименовывать. В классической теме такого не наблюдал, но плеер всё-равно может закрыться после таких действий.
Полностью с вами согласен. Ошибка проявляется спустя достаточно длительное время. Вот почему быстро ее повторить нельзя.
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: MPCfan от 07 октября 2020, 23:53:06
Evgeniy1990,
Если интересно, у себя без особого труда смог добиться зависания плеера при перемещении пункта воспроизведения по плейлисту. Причём, окно с ошибкой " encountered an improper" выскочило при проигрывании. > https://yadi.sk/d/NghOudn75OJssg
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: Evgeniy1990 от 08 октября 2020, 00:56:46
MPCfan,
ЦитироватьЕсли интересно, у себя без особого труда смог добиться зависания плеера при перемещении пункта воспроизведения по плейлисту. Причём, окно с ошибкой " encountered an improper" выскочило при проигрывании. > https://yadi.sk/d/NghOudn75OJssg
Конечно интересно. Спасибо вам за ваш способ воспроизведения бага. Благодаря данному способу, я смог воспроизвести данную проблему у себя. Но сделать это было не так-то уж и легко.

Вот что у меня получилось (https://yadi.sk/d/MtkmyoYJ5JpVXw?w=1).

Прикол в том, что у меня почему-то так и не выскочила сама эта ошибка "Encountered an improper".
В моем случае, плейлист ушел в левую сторону окна плеера в бесконечное зацикливание и перестал отвечать на действия пользователя. А когда этот бесконечный цикл все же сам каким-то чудом остановилился, плеер просто завис намертво без сообщения о данной ошибке.
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: V0lt от 08 октября 2020, 05:26:23
Повторюсь.
Проблема будет наблюдаться, если отключить опцию "Использовать темное меню"?
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: MPCfan от 08 октября 2020, 06:31:13
V0lt,
Смог повторить и без тёмного меню, также выскочило окно с ошибкой при закрытии плеера через диспетчер задач > https://yadi.sk/i/hCuhgZ0IDnUscA
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: Evgeniy1990 от 08 октября 2020, 07:33:26
V0lt,
ЦитироватьПовторюсь.
Проблема будет наблюдаться, если отключить опцию "Использовать темное меню"?
Конечно будет наблюдаться, потому что данная опция не имеет никакого отношения к плейлисту. От того, что я ее выключил, плейлист светлым не стал.

Вот скриншот (https://yadi.sk/i/z2PVkgzk-cTZpA) без опции использования темного меню.

А вот так выглядит бесконечное зацикливание (https://yadi.sk/i/XAHT1n6RCJ1UQg) самого плейлиста.
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: Aleksoid1978 от 08 октября 2020, 13:01:46
Ну могу сказать одно - выяснить и решить проблему будет ой как не просто. Поэтому пусть тема на форуме висит.
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: V0lt от 09 октября 2020, 05:44:50
MPCfan, Evgeniy1990
А на светлой теме подобное наблюдается?
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: Evgeniy1990 от 09 октября 2020, 07:23:25
V0lt,
ЦитироватьА на светлой теме подобное наблюдается?
Наблюдается (https://yadi.sk/d/rU-8xuqFj29ctw?w=1).
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: Aleksoid1978 от 09 октября 2020, 10:04:35
Если честно - мое мнение такое что ну "пофиг" :) Отловить что это и почему так себя ведет - практически не реально.
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: Evgeniy1990 от 09 октября 2020, 11:08:34
Aleksoid1978,
Цитата: Aleksoid1978 от 09 октября 2020, 10:04:35
Если честно - мое мнение такое что ну "пофиг" :) Отловить что это и почему так себя ведет - практически не реально.
Проблема проявляется при взаимодействии с плейлистом. Попробуйте добавить сериал (серий 30 и больше) в плейлист, а затем выберите любую серию, зажмите ЛКМ и не отпуская ее, перетаскивайте ее вверх, или же вниз. В момент автоматической прокрутки плейлиста и проявится данная проблема.

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

И тут сразу станет понятно, что одним из предполагаемых изменений, является фикс видимости выбранного файла при его выделении и перетаскивании. Вот с этого и надо начинать поиск и проверку.
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: Evgeniy1990 от 09 октября 2020, 12:32:47
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.
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: Aleksoid1978 от 09 октября 2020, 12:42:41
Там был перенос кода из ветки, изменений 100500 просто :)
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: Evgeniy1990 от 09 октября 2020, 13:01:16
Aleksoid1978,
Цитата: Aleksoid1978 от 09 октября 2020, 12:42:41
Там был перенос кода из ветки, изменений 100500 просто :)
У нас в хранилище есть ветка branches под ревизией 4372. Ее перенесли в ветку trunk, под ревизией 4374. Тогда имеет смысл собрать именно ее и более ранние ревизии из нее же. Да, изменений немало, вот только я вижу очень сомнительное изменение под ревизией 4220.
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: V0lt от 09 октября 2020, 18:36:30
Evgeniy1990
Я спрашивал про ошибку "Encountered an improper".
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: MPCfan от 09 октября 2020, 19:24:32
V0lt,
Цитата: V0lt от 09 октября 2020, 05:44:50
MPCfan, Evgeniy1990
А на светлой теме подобное наблюдается?
При воспроизведении в светлой теме тоже выскочило "encountered an improper" > https://yadi.sk/i/rXWLpxRwFgMG6g
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: Evgeniy1990 от 09 октября 2020, 19:30:58
V0lt,
Цитировать
Я спрашивал про ошибку "Encountered an improper".
Так я же вам ответил, что она наблюдается даже на светлой теме. Тут не в темах дело, а в самом плейлисте. В него влепили просто кучу сомнительных изменений/исправлений. Потом выполнили слияние (перенос из одной ветки в другую).

Но проблему можно исправить. А для этого надо найти конкретное проблемное изменение среди этой кучи сомнительных.
Нужно разбираться с веткой branches, так как именно из нее и был сделан перенос кода плейлиста.
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: MPCfan от 10 октября 2020, 00:04:00
Evgeniy1990,
Возможно, нужен стабильный и недолгий способ воспроизведения данного нюанса с плейлистом. У себя провёл несколько тестов следующим образом: добавил в  пустой плейлист всего один пункт и начал его перемещать вниз по пустому полю плейлиста вниз. После десяток попыток оказалось, требуется около 2 минут=примерно 45-50 опусков вниз и плеер зависает. Такое впечатление, что что-то накапливается в плеере, скажем так, что приводит к такому эффекту. Вот пример > https://yadi.sk/i/NB5FYSDb3_Uv8A
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: Aleksoid1978 от 10 октября 2020, 07:29:38
Скажу так - у меня нет особого желания ковыряться, я плейлистом можно сказать не пользуюсь.
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: V0lt от 10 октября 2020, 13:21:46
Цитата: MPCfan от 10 октября 2020, 00:04:00Возможно, нужен стабильный и недолгий способ воспроизведения данного нюанса с плейлистом. У себя провёл несколько тестов следующим образом: добавил в  пустой плейлист всего один пункт и начал его перемещать вниз по пустому полю плейлиста вниз. После десяток попыток оказалось, требуется около 2 минут=примерно 45-50 опусков вниз и плеер зависает. Такое впечатление, что что-то накапливается в плеере, скажем так, что приводит к такому эффекту.
Хорошее предположение!
В общем положить плеер можно гораздо проще. Хватаем единственный пункт в плейлисте и долго его таскаем куда угодно. Можно прерываться. В конечном итоге вылезет какая-нибудь бяка.
Проблема появляется когда число GDI Objects достигает 10000. Это можно увидеть в Process Explorer добавив колонку из вкладки "Process Memory".

(https://jpegshare.net/thumbs/80/c6/80c6720b896d00eda42327dbf729898a.jpg) (https://jpegshare.net/80/c6/80c6720b896d00eda42327dbf729898a.png.html)

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

Добавлено:
Согласно данным, которые дает утилита GDIView (http://www.nirsoft.net/utils/gdi_handles.html), у нас создается много объектов "Region" и не удаляются.
Название: Re: Странная и неизвестная ошибка "Encountered an improper"
Отправлено: Aleksoid1978 от 10 октября 2020, 14:45:55
Если прикол именно с тасканием и при этом текет GDI - тогда проще.
Название: Re: Ошибка "Encountered an improper" и утечка GDI Objects
Отправлено: V0lt от 10 октября 2020, 22:08:47
Устранил утечку GDI Objects в r5572.
Пожалуйста, проверьте.
Название: Re: Ошибка "Encountered an improper" и утечка GDI Objects [исправлено]
Отправлено: Evgeniy1990 от 11 октября 2020, 09:02:52
V0lt,
Цитата: V0lt от 10 октября 2020, 22:08:47
Устранил утечку GDI Objects в r5572.
Пожалуйста, проверьте.
Собрал и проверил SVN r5572. Основная проблема (ошибка "Encountered an improper"/утечка GDI Objects") исправлена. :)

Только это еще не все. По прежнему выделенный элемент, при перетаскивании, гуляет в области плейлиста и за его пределами (https://yadi.sk/d/KWraHpFjajH1yQ).
Так быть не должно. Вообще, у нас с интерфейсом постоянно выскакивают подобные бяки, когда какой-либо из элементов, при его использовании, или же взаимодействии с ним, просто отламывается от своей основы.
Название: Re: Ошибка "Encountered an improper" и утечка GDI Objects [исправлено]
Отправлено: V0lt от 11 октября 2020, 12:00:37
Цитата: Evgeniy1990 от 11 октября 2020, 09:02:52Только это еще не все. По прежнему выделенный элемент, при перетаскивании, гуляет в области плейлиста и за его пределами (https://yadi.sk/d/KWraHpFjajH1yQ).
Это фича такая при перетаскивании. Встречается повсеместно.
Удобно, когда захотел передумать перенос. Просто перенесим туда, куда переносить нельзя, и перенос отменяется.