Страница 5 из 20
Добавлено: Сб апр 14, 2007 17:59
Alextp
OK
>>перед тем как выпускать, вышлю тебе для проверки.
OK
Добавлено: Сб апр 14, 2007 18:04
Alextp
---Добавлено. Нет, вру. Есть одна идея для тебя. Общего плана. Я не знаю как в дельфях, но в С++ есть конструкция try/catch. Позволяет перехватывать любую ошибку в определенном куске кода. Если аналогичная конструкция есть в Дельфи, то стOит все вызовы плагинов (включая LoadLibary!) поставить внутрь такой конструкции.
Знаю. В Дельфи это есть. Применяется, Но не помогает.
Да, кстати плаг
работает. Сам по себе. Так что при чем тут отличия билдов
OK, присылай новую версию
Добавлено: Сб апр 14, 2007 18:51
VadiMGP
Да, кстати плаг работает. Сам по себе. Так что при чем тут отличия билдов
Конечно, работает. В ТС. Там где есть окно "TTOTAL_CMD". А вот если его нет... Грубо говоря в DllMain есть такой код:
Код: Выделить всё
if (TTOTAL_CMD_NotFound)
{
AbortPluginLoading();
}
Вот в этой функции AbortPluginLoading и сидит тот код, который исполняется при загрузке плагина через Plugman и в разных билдах ведет себя по разному.
Но это все беллетристика. Я завтра посмотрю, где там собака порылась. Куда слать-то?
В Дельфи это есть. Применяется, Но не помогает.
А вот это уже очень странно. Специально сейчас проверил - если плагин не желает загружаться в ТС, то ТС просто сообщает "Error loading plugin". И не валится.
Добавлено: Сб апр 14, 2007 19:22
funduk
Alextp писал(а):Применяется, Но не помогает.
Быть не может =) Или в дельфи нет конструкции, ловящей любое исключение вне зависимости от его типа?
Добавлено: Сб апр 14, 2007 19:42
Alextp
funduk
Оно не то что **вообще не помогает.

Оно не помогает в данном случае.
Там скорее всего, креш такой, что объект исключения (в Дельфи исключения есть объекты!) даже создасться не может. Такое бывает, если креш "слишком сильный".
Добавлено: Сб апр 14, 2007 20:29
VadiMGP
Там скорее всего, креш такой,
Я присмотрелся - тут, вообще, что-то странное происходит. Plugman-то валится гораздо позже! Он благополучно сообщает, что плагин установлен, я нажимаю ОК, Plagman возвращается в основное окно (в нем видно, что плагин FSE появился в списке) и только после этого валится. Так что может все начинается с моего плагина, но падеж с этим связан весьиа косвенно.
Alextp, ты не смотрел, в тот момент когда дебаггер ловит крэш, что находится в стеке вызова?
Добавлено: Сб апр 14, 2007 20:44
Alextp
Plagman возвращается в основное окно (в нем видно, что плагин FSE появился в списке) и только после этого валится. Так что может все начинается с моего плагина, но падеж с этим связан весьиа косвенно.
Именно. Косвенно!
И не факт что твой плаг виноват: может, я зря сюда пишу
Alextp, ты не смотрел, в тот момент когда дебаггер ловит крэш, что находится в стеке вызова?
Нет: я в этом не очень
Добавлено: Сб апр 14, 2007 22:38
VadiMGP
И не факт что твой плаг виноват: может, я зря сюда пишу
Ну это философский вопрос. В данном случае мне неважно "кто виноват", важно "что делать".
Я, со своей стороны, могу завтра довести свой плаг до состояния, когда падежа не будет. Вопрос - хочешь ли ты все-таки выяснить из-за чего все валится и предотвратить это на будущее. Если да - я готов помочь, чем требуется.
А если try/catch не ловит эксепшн, то с моей точки зрения, это говорит только об одном - это происходит в коде, который
не находится внутри try. Ведь ТС не валится. Искать это место можно двумя способами. Первый - через стек вызовов, второй - трассировкой, отладочной печатью. В таких случаях я обычно использую вывод через OutputDebugString и утилиту DebugView.
Добавлено: Сб апр 14, 2007 23:18
Alextp
Посмотрю стек вызовов. Завтра поставлю плаг, еще раз посмотрю.
Добавлено: Вс апр 15, 2007 00:34
Alextp
Стек вызовов ничего не дает:
тестируем:
1. Креш при установке Mobile.wfx, при вызове FsGetDefRootName.
При одиночной уст. этого плага все OK
Удаляем fse, пробуем снова: все OK
2. Креш неизвестно где: стек вызовов пустой.
В коде вот что:
xor eax, eax
mov [eax], ecx
push eax
То есть *полная* фигня. Запись по нулевому адресу. Откуда это.
Это уже не установка mobile.wfx, а какой-то другой плаг.
Удаляем fse, пробуем снова: все OK
Давай попробую новый build.
Добавлено: Вс апр 15, 2007 01:49
CaptainFlint
По просьбам трудящихся тема переименована.
Добавлено: Вс апр 15, 2007 11:43
Alextp
Новый билд fse:
прогнал два раза: вроде все OK. Не вылетает...
Добавлено: Чт май 03, 2007 01:40
VadiMGP
Выпущена версия 1.15.
Основных изменений два. Во-первых, наконец сделал диалог настроек. Во-вторых - добавлена возможность сохранять результат поиска в файл и загружать обратно.
Лежит все
там же
Добавлено: Сб авг 18, 2007 01:36
Ник
Вопросы:
1) В диалоге настроек у меня нельзя выбрать базу + не сохраняется галка "Отдельный тред" - так и должно быть?
2) После поиска получается, что некоторых файлов в результирующем списке в реале нет - у них стоит красный крестик и размер нулевой - но в самой Locate32 при том же поиске в той же базе эти же файлы видны - да и на диске их можно найти и посмотреть.
Базу только что обновил.
Версия плагина отсюда - 1.0.0.15.
Версия программы - 3.0.7.7010.
Windows 2000 SP4, NTFS.
Добавлено: Вт авг 21, 2007 20:54
VadiMGP
1. В каком смысле "нельзя выбрать базу"? тоже не сохраняется? Или физически невозможно выбрать?
2. Можно как-то получить эту базу? Разумеется, вместе с примерами таких "неправильных" файлов.
Кстати, недавно вышла очередная версия Locate32.
http://fileforum.betanews.com/detail/Lo ... 44509669/1
В частности пофиксен очень противный баг связанный с использованием нескольких баз.