[wlx] HTMLView - обсуждение
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9, 10  Next  :| |:
Total Commander -> Плагины Total Commander

#31:  Author: CaptainFlintLocation: Москва PostPosted: Mon Oct 24, 2011 22:51
    —
В D2 тоже (во всяком случае, Гислер не раз говорил о собственных модификациях стандартных модулей), поэтому думаю именно на компилятор.

Короче, я не знаю, в чём проблема, решается ли она, если решается — то как именно, и почему Гислер это решение не может применить. Все вопросы и советы к нему, гадать на кофейной гуще тут бессмысленно. Пока что факты таковы, что в Тотале эта проблема имеется.

#32:  Author: Alextp PostPosted: Mon Oct 24, 2011 22:55
    —
Понятно, я знал что Г. про set8087cw знает. Smile
Про нее все знают. А какое отношение к этому имеет D3D..

#33:  Author: araxLocation: Новгород PostPosted: Mon Oct 24, 2011 23:26
    —
Похоже без бинарного патча здесь не обойтись, для примеру в архиве две версии тотала одна оригинальная, а в другой отключены все исключения сопроцессора и плагин который вызывает деление на ноль. В оригинальной версии выскакивает ошибка, а в модифицированном все работает. Для проверки достаточно нажать f3 на любом файле остальное уже настроено. Конечно патчить exe это не дело, лучше пропатчить delphi runtime и послать автору. В Lazarus все тоже самое, по крайней мере если смотреть последнюю бету то там исключения сопроцессора тоже включены, патчить не стал т.к у тотала есть контроль целостности exe, а для 8 версии x64 готового способа его отключить под рукой нет.


http://rghost.net/private/27013491/a1aef3c065551910d56b3b29ea73dbde

#34:  Author: CaptainFlintLocation: Москва PostPosted: Tue Oct 25, 2011 10:36
    —
Alextp wrote:
А какое отношение к этому имеет D3D..

Сам хотел бы знать. Судя по стеку, движок MSHTML через неё работает, но нафига — ума не приложу.

arax
Так проблема как раз в 64-битной версии и возникает, в 32-битной не проявляется. Smile

М-да, перечитал сейчас ветку, понял, что всё запутал. Тут речь шла одновременно о двух вещах: об исторической проблеме в Дельфях и о текущей проблеме в Лазарусе. Все мои слова о проблематичных отключениях относились к Дельфи. Гислер долго воевал с этой пакостью, и только в 7.50, кажется, поотключал нужные опции в основных местах, так что теперь подобных падений намного меньше. А с HTMLView падает уже 64-битка, сделанная в Лазарусе. Я предположил, что это схожая проблема. Хоть Гислер утверждает, что Лазарус ей не подвержен, но раз на практике наблюдаем иное…

Остаётся дождаться от Гислера тестовой версии, где вставлен вызов отрубания исключений перед нужным DispatchMessage, проверю — станет ясно, в нём причина или нет. Заодно тогда и спрошу у него, почему вообще так происходит, раз Лазарус не должен страдать этой проблемой.

#35:  Author: CaptainFlintLocation: Москва PostPosted: Wed Oct 26, 2011 16:27
    —
Гислер ответил мне, что он попробовал вставить вызовы ClearX87ControlWord перед каждым DispatchMessage, но это не помогло. Исключение всё-таки выскакивает, хотя отладчик Лазаруса делает невинные глазки и показывает, что этот класс исключений замаскирован (причём даже на момент возникновения самого исключения).

Собственно падение происходит при обработке нестандартного сообщения с кодом 0x8002; насколько удалось нагуглить, это какое-то сообщение, специфичное для контрола (все коды сообщений выше 8000 используются для личных целей приложений). Единственное предположение, что событие происходит в другом потоке, т.к. маска выставляется для каждого потока независимо, но это я ещё проверю на отладке. А пока ни у него, ни у меня идей больше нет. Sad

#36:  Author: araxLocation: Новгород PostPosted: Wed Oct 26, 2011 22:06
    —
CaptainFlint wrote:
А пока ни у него, ни у меня идей больше нет.

Заменить
\lazarus\fpc\2.4.4\units\x86_64-win64\rtl\system.o
содержимым архива
http://rghost.net/27283781
и пересобрать тотал

Это пропатченный runtime от fpc 2.4.4, если используется другая версия компилятора то нужно сказать мне ее.

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

В тестовом приложении у меня с этой версией никаких исключений не возникает.

#37:  Author: CaptainFlintLocation: Москва PostPosted: Thu Oct 27, 2011 14:26
    —
arax
Спасибо за наводку, дело оказалось в том, что это именно SSE-исключение, Гислер его просто не маскировал. И ведь хотел я сразу же посмотреть, к какой категории относится инструкция, но вылетело из головы. В общем, Гислер попробовал замаскировать SSE-исключения в самом начале программы, и всё заработало; патч не потребовался. Исправление войдёт в следующую бету.

Кстати, возникает вопрос, как лучше поступать с обычными исключениями плавающей точки. Сейчас Гислер их выключает перед каждым вызовом OLE-функций и включает после них. Можно их тоже выключить в самом начале раз и навсегда, но тогда Лазарус не сможет обнаруживать ошибки в работе с плавающими числами.

#38:  Author: araxLocation: Новгород PostPosted: Thu Oct 27, 2011 15:50
    —
CaptainFlint wrote:
но тогда Лазарус не сможет обнаруживать ошибки в работе с плавающими числами

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

Кстати неплохо было бы разобраться и с 32 битной версией, в ней все эти проблемы тоже присутствуют.

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

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


Вот пример
http://rghost.net/27359661
Открываем lister и при попытке изменить размер окна он вылетает по Invalid Floating Point Operation, исходники модулей на purebasic в комплекте.

#39:  Author: CaptainFlintLocation: Москва PostPosted: Thu Oct 27, 2011 16:38
    —
arax wrote:
А зачем это вообще нужно?

Например, ловить случайные баги в Тотале. Например, из-за неправильной обработки у тысячи пользователей просто выведется некорректное число, а у тысяча первого вылетит исключение. Он зарепортит — Гислер поправит, все выиграют.

arax wrote:
В плагине при загрузке этой dll мы отключаем исключения, однако потом delphi их снова включает и мы получаем ошибку.

Не уверен, что он захочет для исправления такого рода проблем использовать патченый компилятор и/или System… А другого способа я не вижу.

#40:  Author: araxLocation: Новгород PostPosted: Thu Oct 27, 2011 17:20
    —
CaptainFlint
Сильно сомнительно что тотал широко использует вычисления с плавающей точкой(а он их вообще использует?).

Quote:
у тысячи пользователей просто выведется некорректное число, а у тысяча первого вылетит исключение.


Тут скорее, у тысяч пользователей будут выскакивать исключения во внешних модулях при использовании плагинов, а Гислер
не
Quote:
захочет для исправления такого рода проблем использовать патченый компилятор и/или System…


Учитывая что для этого нужно только поправить одну константу (0x1332->0x133f), это крайне печально.

#41:  Author: dikinsonik PostPosted: Tue Dec 13, 2011 18:07
    —
Подскажите,реально сделать в TC, открывать браузер IE9,нажал кнопку - и браузер открылся на ширину двух панелей - для работы в нете...
Что бы было вот так вот


#42:  Author: МоторокерLocation: г. Пермь (читается Перьмь) PostPosted: Fri Dec 16, 2011 23:03
    —
В чём прикол? Почему нельзя на весь экран развернуть?

#43:  Author: FlasherLocation: Москва PostPosted: Fri Dec 16, 2011 23:10
    —
Читаем здесь. Прикол в допиливании плагина до уровня лёгкого браузера (с адресной строкой, тулбаром (не только в режиме оконного просмотра), строкой состояния).
И написано "нажал кнопку". А это как минимум можно сделать только с помощью внешней тулзы типа TCFS2 или скрипта.

#44:  Author: fa1con PostPosted: Mon Dec 19, 2011 14:17
    —
На сайте автора появилась версия 1.2.6:
http://sites.google.com/site/htmlview/

Теперь доступна 64-битная сборка. Также добавлена функция подсветки всех найденных строк при поиске (отключено по-умолчанию, включается ключом HighlightAllMatches).

Автоматическая установка перезаписывает ini-файл, будьте внимательны.

#45:  Author: Mellomann PostPosted: Thu Nov 08, 2012 02:07
    —
Багрепорт!

При попытке просмотреть листером данный файл
http://rghost.ru/41419381 (обычный mht, подобных можно насохранять ие или оперой)
вываливается вот такая ошибка


TC 8.01 x64 @ Win8 x64.

p.s.
При прочих равных на Win7 х64 всё работает нормально.



Total Commander -> Плагины Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9, 10  Next  :| |:
Page 3 of 10

Powered by phpBB © 2001, 2005 phpBB Group