Fast Search Engine (wfx-плагин)

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

OK

>>перед тем как выпускать, вышлю тебе для проверки.

OK
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

---Добавлено. Нет, вру. Есть одна идея для тебя. Общего плана. Я не знаю как в дельфях, но в С++ есть конструкция try/catch. Позволяет перехватывать любую ошибку в определенном куске кода. Если аналогичная конструкция есть в Дельфи, то стOит все вызовы плагинов (включая LoadLibary!) поставить внутрь такой конструкции.
Знаю. В Дельфи это есть. Применяется, Но не помогает.

Да, кстати плаг работает. Сам по себе. Так что при чем тут отличия билдов

OK, присылай новую версию
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

Да, кстати плаг работает. Сам по себе. Так что при чем тут отличия билдов
Конечно, работает. В ТС. Там где есть окно "TTOTAL_CMD". А вот если его нет... Грубо говоря в DllMain есть такой код:

Код: Выделить всё

if (TTOTAL_CMD_NotFound)
{
   AbortPluginLoading();
}
Вот в этой функции AbortPluginLoading и сидит тот код, который исполняется при загрузке плагина через Plugman и в разных билдах ведет себя по разному.

Но это все беллетристика. Я завтра посмотрю, где там собака порылась. Куда слать-то?
В Дельфи это есть. Применяется, Но не помогает.
А вот это уже очень странно. Специально сейчас проверил - если плагин не желает загружаться в ТС, то ТС просто сообщает "Error loading plugin". И не валится.
Аватара пользователя
funduk
Сообщения: 1515
Зарегистрирован: Вт авг 16, 2005 16:00
Откуда: Санкт-Петербург

Сообщение funduk »

Alextp писал(а):Применяется, Но не помогает.
Быть не может =) Или в дельфи нет конструкции, ловящей любое исключение вне зависимости от его типа?
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

funduk
Оно не то что **вообще не помогает. ;)
Оно не помогает в данном случае.

Там скорее всего, креш такой, что объект исключения (в Дельфи исключения есть объекты!) даже создасться не может. Такое бывает, если креш "слишком сильный".
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

Там скорее всего, креш такой,
Я присмотрелся - тут, вообще, что-то странное происходит. Plugman-то валится гораздо позже! Он благополучно сообщает, что плагин установлен, я нажимаю ОК, Plagman возвращается в основное окно (в нем видно, что плагин FSE появился в списке) и только после этого валится. Так что может все начинается с моего плагина, но падеж с этим связан весьиа косвенно.

Alextp, ты не смотрел, в тот момент когда дебаггер ловит крэш, что находится в стеке вызова?
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

Plagman возвращается в основное окно (в нем видно, что плагин FSE появился в списке) и только после этого валится. Так что может все начинается с моего плагина, но падеж с этим связан весьиа косвенно.

Именно. Косвенно!

И не факт что твой плаг виноват: может, я зря сюда пишу
Alextp, ты не смотрел, в тот момент когда дебаггер ловит крэш, что находится в стеке вызова?
Нет: я в этом не очень
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

И не факт что твой плаг виноват: может, я зря сюда пишу
Ну это философский вопрос. В данном случае мне неважно "кто виноват", важно "что делать". :)
Я, со своей стороны, могу завтра довести свой плаг до состояния, когда падежа не будет. Вопрос - хочешь ли ты все-таки выяснить из-за чего все валится и предотвратить это на будущее. Если да - я готов помочь, чем требуется.

А если try/catch не ловит эксепшн, то с моей точки зрения, это говорит только об одном - это происходит в коде, который не находится внутри try. Ведь ТС не валится. Искать это место можно двумя способами. Первый - через стек вызовов, второй - трассировкой, отладочной печатью. В таких случаях я обычно использую вывод через OutputDebugString и утилиту DebugView.
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

Посмотрю стек вызовов. Завтра поставлю плаг, еще раз посмотрю.
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

Стек вызовов ничего не дает:
тестируем:
1. Креш при установке Mobile.wfx, при вызове FsGetDefRootName.
При одиночной уст. этого плага все OK

Удаляем fse, пробуем снова: все OK

2. Креш неизвестно где: стек вызовов пустой.
В коде вот что:

xor eax, eax
mov [eax], ecx
push eax

То есть *полная* фигня. Запись по нулевому адресу. Откуда это.
Это уже не установка mobile.wfx, а какой-то другой плаг.

Удаляем fse, пробуем снова: все OK
Давай попробую новый build.
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

По просьбам трудящихся тема переименована.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

Новый билд fse:
прогнал два раза: вроде все OK. Не вылетает...
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

Выпущена версия 1.15.
Основных изменений два. Во-первых, наконец сделал диалог настроек. Во-вторых - добавлена возможность сохранять результат поиска в файл и загружать обратно.

Лежит все там же
Ник
Сообщения: 1256
Зарегистрирован: Ср дек 15, 2004 09:33
Откуда: Москва

Сообщение Ник »

Вопросы:
1) В диалоге настроек у меня нельзя выбрать базу + не сохраняется галка "Отдельный тред" - так и должно быть?
2) После поиска получается, что некоторых файлов в результирующем списке в реале нет - у них стоит красный крестик и размер нулевой - но в самой Locate32 при том же поиске в той же базе эти же файлы видны - да и на диске их можно найти и посмотреть.
Базу только что обновил.
Версия плагина отсюда - 1.0.0.15.
Версия программы - 3.0.7.7010.
Windows 2000 SP4, NTFS.
Xubuntu
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

1. В каком смысле "нельзя выбрать базу"? тоже не сохраняется? Или физически невозможно выбрать?

2. Можно как-то получить эту базу? Разумеется, вместе с примерами таких "неправильных" файлов.

Кстати, недавно вышла очередная версия Locate32. http://fileforum.betanews.com/detail/Lo ... 44509669/1
В частности пофиксен очень противный баг связанный с использованием нескольких баз.
Ответить