Страница 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
В частности пофиксен очень противный баг связанный с использованием нескольких баз.