Postscripter

Forum Replies Created

Viewing 20 posts - 21 through 40 (of 55 total)
  • Author
    Posts
  • in reply to: Neutral3.asz вызывает AccessViolation #47562
    Postscripter
    Participant

    Уря :blush:

    А что это было?

    in reply to: Neutral3.asz вызывает AccessViolation #47557
    Postscripter
    Participant

    [attachment=5463:Демка.zip]

    in reply to: Neutral3.asz вызывает AccessViolation #47556
    Postscripter
    Participant

    Есть демка (!)

    in reply to: Neutral3.asz вызывает AccessViolation #47555
    Postscripter
    Participant

    тов.Support, если я запущу тим вьювер, это поможет? У вас есть время сегодня вечером?

    in reply to: Neutral3.asz вызывает AccessViolation #47554
    Postscripter
    Participant

    Ой, точно) Та-ак.. пробую… Запустилось. Закрываю. Ну вот – вылетел на OnTimer. Обращение к уничтоженному компоненту… Отключаю скины – работает.

    Теперь пробую останавливать таймеры перед закрытием. Теперь Access violation в модуле AC, в деструкторе. А тут без Support-a не обойтись. Зато ошибка стала стабильней. И возникает сразу, уже при первом заходе в процедуру. Вместо объекта-кнопки деструктору передаётся левый адрес.

    Хм.. Классная штука 😉

    in reply to: Neutral3.asz вызывает AccessViolation #47552
    Postscripter
    Participant

    Подключил модуль SafeMMInstall первым в разделе uses, по инструкции. Запускаю – Assertion failure в первой же строчке этого модуля

    Code:
    Assert(GetHeapStatus.TotalAllocated=0);

    Что-то не так, да? 🙂

    in reply to: Neutral3.asz вызывает AccessViolation #47550
    Postscripter
    Participant

    Не слышал про SafeMM… Попробую.

    Quote:
    Я на эту строку смотрел наверное минут 10

    Сейчас на эту строку может глядеть только Support. Ибо 99$ 🙂

    in reply to: Neutral3.asz вызывает AccessViolation #47548
    Postscripter
    Participant

    ААААаааа!! И точно – begin/end в Delphi это тот же самый dllMain! Чёрт… Я, кажется, сейчас нашёл решение другой не менее важной проблемы 😀 Вот как бывает… На wasm-е не смогли помочь, а тут… Прям анекдот. Большое спасибо)))

    P.S. Но бага с АС пока не решилась.

    in reply to: Neutral3.asz вызывает AccessViolation #47547
    Postscripter
    Participant
    Quote:
    В таком случае тут вполне возможны проблемы с DllMain

    Интересный бложек… Вот только в Казахстане он заблокирован 🙂 Приходится читать через японский прокси 😀

    DllMain в этой dll вообще отсутствует… А то что между begin и end – оно считается??? Там у меня “тяжёлый” код, с вызовом DeviceIOControl и т.д.

    in reply to: Neutral3.asz вызывает AccessViolation #47544
    Postscripter
    Participant
    'Torbins' wrote:

    Помнится у вас там какая то дллка с формами подгружается. Вы не пробовали копать в эту сторону? Можно ли сделать, чтобы эта дллка не содержала ничего связаного с формами, а в случае необходимости вызывала внешнее приложение, способное отобразить нужную формочку?

    Я собираюсь её переписать, но это далеко потом… Вообще, она никак не взаимодействует с программой, и тем более с AC. То есть программа о ней даже НЕ ЗНАЕТ. Но – факт, без неё не падает! Ну или это совпадение 😀

    А подгружает её ОС, причём ко всем запускающимся программам, в момент запуска. То есть сразу после загрузки User32.dll. Библиотека просто делит одно адресное пространство с программой. Ааа.. Вот только что заметил! Почему-то к моей программе она подгружается только после возникновения ошибки, а не при старте!!! Что-то с ней точно не то… Надо разобраться…

    Извиняюсь, спутал. ОС подгружает эту библиотеку ко всем программам, в тот момент, когда они запускают другие программы. А в адресном пространстве моей программы библиотека появляется только в момент краха, потому что запускается Доктор Ватсон. Вот тут про неё рассказывается: http://www.wasm.ru/forum/viewtopic.php?pid=260991 в первом посте.

    in reply to: Neutral3.asz вызывает AccessViolation #47542
    Postscripter
    Participant

    Выводится AlphaControls v7.55

    За совет по поводу TsSpeedButton спасибо, если ничего не решится, так и сделаю. Но это временно! Или, лучше, поставлю старую, проверенную прошлогоднюю версию.

    А о причине возникновения этой ошибки есть какие-нибудь идеи, предположения?

    Этот деструктор вызывается 7 раз для семи разных кнопок нормально, и на 8-й падает, при этом вместо указателя на кнопку – мусор. Либо (в большинстве случаев) не падает и отрабатывает 9 раз. При том, что у меня на форме 15 кнопок. Он не проходит по шести кнопкам, и примечательно – все шесть расположены на одном TGroupBox. Может быть, этот GroupBox просто ни разу не получал команды wm_Paint, т.к. его не видно…

    Ну вот, ошибка опять спряталась… Ничего не менял! Перекомпилировал просто. Перезагрузился – появилась, довольно стабильно. Запустил под отладчиком – исчезла!!! Обычно так бывает, если где-нибудь в процедуре забыть инициализировать переменную, или выйти за границы массива. Один раз запускается – нормально, а второй – в этой области памяти появится случайное некорректное значение и всё развалится… В прошлый раз я писал – достаточно просто переименовать exe-шник и ошибки уже нет! Так что искать надо в этом направлении, думаю. А таймеры – это, вполне возможно, просто следствие. Процесс уничтожения формы обрывается с ошибкой, просто не дойдя до них. Вот они и работают дальше.

    in reply to: Neutral3.asz вызывает AccessViolation #47540
    Postscripter
    Participant

    Вот! В этом и проблема. Таймеры я отключаю. Но ошибка теперь возникает в модуле acSBUTILS (версия 7.55) на строчке номер 9811, процедура TacSpeedButtonHandler.Destroy!!!!!!!!!!!!!!!!!! Вторая строчка после begin (не учитывая комментарии). Exception EAccessViolation in module project.exe at 000D8049. Access violation at address 004D8049 in module 'project.exe'. Write of address 00BBF714. Блин! Просто мегаподстава! 😐

    in reply to: Neutral3.asz вызывает AccessViolation #47538
    Postscripter
    Participant

    Срочно нужна помощь! В программе обнаружили уязвимость, а я не могу выложить исправление из-за этого дурацкого бага!

    in reply to: Neutral3.asz вызывает AccessViolation #47534
    Postscripter
    Participant

    Кхм… Открываю тему. Оно опять упало, причём дважды. И опять в момент закрытия (закрывал через меню значка в трее).

    Специально вызвать ошибку не получается…. Что делать? Версия компонент осталась та же 7.55, ничего в ней не менял.

    in reply to: Neutral3.asz вызывает AccessViolation #47195
    Postscripter
    Participant

    Может просто на момент загрузки (и создания темы) это был последний релиз? Не помню..

    Поставил 7.55 – пока работает. Но это ничего не значит – предыдущий тоже не сразу начал падать. Пока тему можно считать замороженной))) Спасибо.

    in reply to: Neutral3.asz вызывает AccessViolation #47153
    Postscripter
    Participant

    АААаа!!))) Какой я молодец. Чего-то нажал и адреса превратились в названия процедур. Итак, падает TacSpeedButtonHandler.Destroy. А вызывает её косвенно TacCtrlAdapter.RemoveAllItems из модуля SSkinProvider.

    in reply to: Neutral3.asz вызывает AccessViolation #47151
    Postscripter
    Participant

    При выполнении этой загадочной процедуры по адресу esi+$44, лежит объект типа TSpeedButton (при каждом заходе новый), она с ним что-то делает. Процедура успешно отрабатывает семь раз (хотя кнопок на форме у меня больше). На восьмой раз – по этому смещению – просто мусор, который и вызывает access violation.

    Может это как-то связано с тем, что некоторые из кнопок лежат за границами родительской панели и скрыты.

    in reply to: Neutral3.asz вызывает AccessViolation #47142
    Postscripter
    Participant
    Quote:
    Вроде ничего предосудительного, вот код для acSBUtils.pas версии 7.54 :

    Не, это не тот код. Видимо, у меня немного другая скомпилированная версия, в ней что-то чуть-чуть сдвинуто. В свойствах TSkinManager написано – 7.51, хотя я скачивал свежий архив вот совсем недавно, когда начал тему.

    Там должен быть участок кода, где сначала идут две исполняемые строки (делфи подсвечивает их зелёными точками сбоку), затем шесть неисполняемых, затем – три исполняемых. Посмотрите расположение точек на скриншоте. Предположительно, это одна процедура, скорее всего чей-то деструктор. Процедура вызывается семь раз и только при уничтожении формы. На восьмой – падает и процесс уничтожения формы прерывается. А так как до таймеров “уничтожалка” ещё не добралась, и теперь уже не доберётся, они спокойно себе работают. Думаю, так.

    Читабельный стек получить не могу — или не умею, или в объектный файл имена процедур не включаются. Да это и не важно, если это деструктор. Но есть ассемблерный код этой процедуры + состояние регистров в момент краша. Вот:

    [attachment=5280:1.png]

    [attachment=5281:2.png]

    [attachment=5282:3.png]

    [attachment=5283:4.png]

    [attachment=5284:5.png]

    Postscripter
    Participant

    1) “Непонятный” означает “непонятно зачем оно нужно”

    2) тоже что и (1). но программа ваша – тут я вам не советчик

    in reply to: Neutral3.asz вызывает AccessViolation #47125
    Postscripter
    Participant

    Хотя по-хорошему, конечно, при поступлении WM_QUERYENDSESSION, “each application should return TRUE or FALSE immediately“. Но это вряд ли причина.

    P.S. Я один раз так попал с WMDeviceChange – в новых виндах, если не вернуть управление немедленно, новое устройство работать не будет.

Viewing 20 posts - 21 through 40 (of 55 total)