Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

[wlx] HTMLView - обсуждение
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
CaptainFlint



Joined: 14 Dec 2004
Posts: 5898
Location: Москва

Post (Separately) Posted: Mon Oct 24, 2011 22:51    Post subject: Reply with quote

В D2 тоже (во всяком случае, Гислер не раз говорил о собственных модификациях стандартных модулей), поэтому думаю именно на компилятор.

Короче, я не знаю, в чём проблема, решается ли она, если решается — то как именно, и почему Гислер это решение не может применить. Все вопросы и советы к нему, гадать на кофейной гуще тут бессмысленно. Пока что факты таковы, что в Тотале эта проблема имеется.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4907

Post (Separately) Posted: Mon Oct 24, 2011 22:55    Post subject: Reply with quote

Понятно, я знал что Г. про set8087cw знает. Smile
Про нее все знают. А какое отношение к этому имеет D3D..
_________________
UniViewer - CudaText - LogViewer
Back to top
View user's profile Send private message
arax



Joined: 20 Jan 2011
Posts: 260
Location: Новгород

Post (Separately) Posted: Mon Oct 24, 2011 23:26    Post subject: Reply with quote

Похоже без бинарного патча здесь не обойтись, для примеру в архиве две версии тотала одна оригинальная, а в другой отключены все исключения сопроцессора и плагин который вызывает деление на ноль. В оригинальной версии выскакивает ошибка, а в модифицированном все работает. Для проверки достаточно нажать f3 на любом файле остальное уже настроено. Конечно патчить exe это не дело, лучше пропатчить delphi runtime и послать автору. В Lazarus все тоже самое, по крайней мере если смотреть последнюю бету то там исключения сопроцессора тоже включены, патчить не стал т.к у тотала есть контроль целостности exe, а для 8 версии x64 готового способа его отключить под рукой нет.


http://rghost.net/private/27013491/a1aef3c065551910d56b3b29ea73dbde
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 5898
Location: Москва

Post (Separately) Posted: Tue Oct 25, 2011 10:36    Post subject: Reply with quote

Alextp wrote:
А какое отношение к этому имеет D3D..

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

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

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

Остаётся дождаться от Гислера тестовой версии, где вставлен вызов отрубания исключений перед нужным DispatchMessage, проверю — станет ясно, в нём причина или нет. Заодно тогда и спрошу у него, почему вообще так происходит, раз Лазарус не должен страдать этой проблемой.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 5898
Location: Москва

Post (Separately) Posted: Wed Oct 26, 2011 16:27    Post subject: Reply with quote

Гислер ответил мне, что он попробовал вставить вызовы ClearX87ControlWord перед каждым DispatchMessage, но это не помогло. Исключение всё-таки выскакивает, хотя отладчик Лазаруса делает невинные глазки и показывает, что этот класс исключений замаскирован (причём даже на момент возникновения самого исключения).

Собственно падение происходит при обработке нестандартного сообщения с кодом 0x8002; насколько удалось нагуглить, это какое-то сообщение, специфичное для контрола (все коды сообщений выше 8000 используются для личных целей приложений). Единственное предположение, что событие происходит в другом потоке, т.к. маска выставляется для каждого потока независимо, но это я ещё проверю на отладке. А пока ни у него, ни у меня идей больше нет. Sad
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
arax



Joined: 20 Jan 2011
Posts: 260
Location: Новгород

Post (Separately) Posted: Wed Oct 26, 2011 22:06    Post subject: Reply with quote

CaptainFlint wrote:
А пока ни у него, ни у меня идей больше нет.

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

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

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

В тестовом приложении у меня с этой версией никаких исключений не возникает.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 5898
Location: Москва

Post (Separately) Posted: Thu Oct 27, 2011 14:26    Post subject: Reply with quote

arax
Спасибо за наводку, дело оказалось в том, что это именно SSE-исключение, Гислер его просто не маскировал. И ведь хотел я сразу же посмотреть, к какой категории относится инструкция, но вылетело из головы. В общем, Гислер попробовал замаскировать SSE-исключения в самом начале программы, и всё заработало; патч не потребовался. Исправление войдёт в следующую бету.

Кстати, возникает вопрос, как лучше поступать с обычными исключениями плавающей точки. Сейчас Гислер их выключает перед каждым вызовом OLE-функций и включает после них. Можно их тоже выключить в самом начале раз и навсегда, но тогда Лазарус не сможет обнаруживать ошибки в работе с плавающими числами.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
arax



Joined: 20 Jan 2011
Posts: 260
Location: Новгород

Post (Separately) Posted: Thu Oct 27, 2011 15:50    Post subject: Reply with quote

CaptainFlint wrote:
но тогда Лазарус не сможет обнаруживать ошибки в работе с плавающими числами

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

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

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

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


Вот пример
http://rghost.net/27359661
Открываем lister и при попытке изменить размер окна он вылетает по Invalid Floating Point Operation, исходники модулей на purebasic в комплекте.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 5898
Location: Москва

Post (Separately) Posted: Thu Oct 27, 2011 16:38    Post subject: Reply with quote

arax wrote:
А зачем это вообще нужно?

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

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

Не уверен, что он захочет для исправления такого рода проблем использовать патченый компилятор и/или System… А другого способа я не вижу.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
arax



Joined: 20 Jan 2011
Posts: 260
Location: Новгород

Post (Separately) Posted: Thu Oct 27, 2011 17:20    Post subject: Reply with quote

CaptainFlint
Сильно сомнительно что тотал широко использует вычисления с плавающей точкой(а он их вообще использует?).

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


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


Учитывая что для этого нужно только поправить одну константу (0x1332->0x133f), это крайне печально.
Back to top
View user's profile Send private message
dikinsonik



Joined: 22 Aug 2006
Posts: 13

Post (Separately) Posted: Tue Dec 13, 2011 18:07    Post subject: Reply with quote

Подскажите,реально сделать в TC, открывать браузер IE9,нажал кнопку - и браузер открылся на ширину двух панелей - для работы в нете...
Что бы было вот так вот

Back to top
View user's profile Send private message
Моторокер



Joined: 06 May 2005
Posts: 1482
Location: г. Пермь (читается Перьмь)

Post (Separately) Posted: Fri Dec 16, 2011 23:03    Post subject: Reply with quote

В чём прикол? Почему нельзя на весь экран развернуть?
_________________
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12941
Location: Москва

Post (Separately) Posted: Fri Dec 16, 2011 23:10    Post subject: Reply with quote

Читаем здесь. Прикол в допиливании плагина до уровня лёгкого браузера (с адресной строкой, тулбаром (не только в режиме оконного просмотра), строкой состояния).
И написано "нажал кнопку". А это как минимум можно сделать только с помощью внешней тулзы типа TCFS2 или скрипта.
Back to top
View user's profile Send private message
fa1con



Joined: 19 Aug 2006
Posts: 162

Post (Separately) Posted: Mon Dec 19, 2011 14:17    Post subject: Reply with quote

На сайте автора появилась версия 1.2.6:
http://sites.google.com/site/htmlview/

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

Автоматическая установка перезаписывает ini-файл, будьте внимательны.
Back to top
View user's profile Send private message
Mellomann



Joined: 07 Sep 2009
Posts: 683

Post (Separately) Posted: Thu Nov 08, 2012 02:07    Post subject: Reply with quote

Багрепорт!

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


TC 8.01 x64 @ Win8 x64.

p.s.
При прочих равных на Win7 х64 всё работает нормально.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next
Page 3 of 9

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group