![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| Leana |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
Ребята, помогите. Мне надо отловить bug...
Воспроизвести проблему не могу сама, но клиент это может время от времени... По call stack могу определить, что проблема возникает в определенной процедуре. Изучила процедуру. Нашла один объект, который создается и потом не уничтожается... Вопрос в следующем: может ли это быть причиной AV? Я всегда думала, что AV - это когда мы обращаемся к объекту, которого уже не существует... В моем случае, мы создаем объект, который был создан раньше, но память не была освобождена... Я думала, что это будет служить причиной memory leak, но не AV... Вопрос второй: если это служит причиной AV, может ли это также вызывать странное поведение у программы. Например, в моем случае, каждый раз, когда возникает AV, программа повторяет без всякой причины несколько процедур, которые были уже выполнены до этого. Например, при транзакции мы создали 3 записи... Потом перешли к процедуре внутри которой возникает AV, и потом почему то выполняются опять процедуры, которые создали 3 записи, и потом мы идем в Exception, где оно обрабатывается. Please help!!!! |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 31 Всего: 484 |
Защищай код try..except/finally.
Без этого вообще серъёзный код не пишется. |
|||
|
||||
| Leana |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
try... except/finally в коде используется...
|
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 31 Всего: 484 |
Значит AV не там ;-)
|
|||
|
||||
| Leana |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
AV там... и она обрабатывается в except блоке.
В except блоке мы даем команду записать call stack в лог-файл. И из call стэка я могу понять, что произошла AV. ---------------------------17/03/07 09:48:18--------------------------- Exception 'EAccessViolation' in module Galaxy.exe at 000C3631 Access violation at address 004C4631 in module 'Galaxy.exe'. Read of address 000002F4 Module: Forms, Source: UNKNOWN, Line UNKNOWN Procedure: Forms.TCustomForm.Close Call stack: :004C4631 [Galaxy.exe] Forms.TCustomForm.Close :00EFB754 [Galaxy.exe] print_starting_here (tktdrv.pas, line 2652) :00405A40 [Galaxy.exe] System.__linkproc__ HandleFinally :7C9037BF [ntdll.dll] :7C90378B [ntdll.dll] :00EFB75F [Galaxy.exe] print_starting_here (tktdrv.pas, line 2653) :7C937B48 [ntdll.dll] :00EFB75F [Galaxy.exe] print_starting_here (tktdrv.pas, line 2653) :7C9105C8 [ntdll.dll] :7C910551 [ntdll.dll] :7C91056D [ntdll.dll] :7C9131DC [ntdll.dll] :7C913212 [ntdll.dll] и так далее print_starting_here - это именно та процедура, в которой создается объект, но потом не уничтожается. Опять же вопрос: может ли это служить причиной AV? Так как я не могу воспроизвести проблему, мне трудно сказать, что добавление FreeAndNil(MyObject) в блоке finally, устранит AV. |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 31 Всего: 484 |
Нет. Это никак не может быть причиной AV.
В чём причина - без кода сказать сложно. Покажи код - посмотрим. |
|||
|
||||
| Leana |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
к сожалению, код показать не могу.
во-первых, company privacy issues. Во-вторых, там процедуры в 2500 строк - черт ногу сломит. Ок, наверное, придется самой попытаться разобраться. Во всяком случае, вы мне сказали, что не уничтожение объекта не может служить причиной AV. Жаль... я думала, я была на верном пути :( |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
ну тогда удачно поймать глюк)
-------------------- There are always someone smarter than you... |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 31 Всего: 484 |
Не стоит делать такие процедуры.
Такой объём кода всегда нужно дробить на отдельные части. Иначе чревато вот такими сложностями с локализацией глюков. Да и читать такой код проблемно, не говоря уже о том, чтобы с ним работать. |
|||
|
||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 2 Всего: 89 |
А пошаговым выполнением определить что, не удается?
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| Leana |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
да, ребята, понимаю. Такие процедуры писать нельзя... Их написал кто-то очень умный несколько лет назад. Конечно, он здесь уже не работает... А мы жучков отлавливаем. :(
Пошагово отловить не могу, потому что у меня AV не возникает. Скорей всего буду делать logging version. И потом по более детальной информации пытаться определить, в чем проблема. |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 3 Всего: 158 |
есть подозрение, что в print_starting_here (tktdrv.pas, line 2652) производится попытка закрыть уже уничтоженную форму.
|
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 3 Всего: 158 |
чуть конкретнее можно сказать, если хотя бы Galaxy.exe куда-нибудь выложишь.
|
|||
|
||||
| Hidrag |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 877 Регистрация: 9.4.2005 Где: JDK Репутация: нет Всего: 25 |
Ставил сегодня Delphi 2006, затем снес поставил Delphi 7 и снова эта ошибка! При открытие любого проекта и запуска его на выполнение вылазит эта ошибка!
Создаю свой проект, очень простой, форма и несколько кнопок, нажимаю run, запускается приложение и тут же падает эта ошибка :( ЧТо может быть? У пользователя на компе права админские, хоть и не под админом сижу, может быть системе не дает делфи куда то в память лезти? -------------------- |
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 50 Всего: 372 |
Hidrag, такое?
http://forum.vingrad.ru/forum/topic-201047.html Я с этим и по сей день мучаюсь, решения найти не могу... |
|||
|
||||
| Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 22 Всего: 50 |
Создайте пустое приложение. Если будет грузить библиотеку wininet.dll (например, "при попадании" курсора на форму), значит - троян. Помню, что один из симптомов: скрытая dll`ка в папке с программой (приблизительно: wsock.dll). Естественно удаляем, и не забываем включить антивирус.
|
|||
|
||||
| Hidrag |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 877 Регистрация: 9.4.2005 Где: JDK Репутация: нет Всего: 25 |
THandle, да да, оно самое!
И не только делфи, визуал с++ 2005 тоже самое мне выдает, после чего открывается какое окно типа дебагера низкоуровневого... жуть... получается: пишу код, делаю ему буилт, после чего запускаю экзешник уже в папке проекта, а через ИДЕ этот глюх... Это сообщение отредактировал(а) Hidrag - 15.5.2008, 21:19 -------------------- |
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 50 Всего: 372 |
Именно оно. Есть такое. Сейчас будем чистить. +1 |
|||
|
||||
| Hidrag |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 877 Регистрация: 9.4.2005 Где: JDK Репутация: нет Всего: 25 |
А что значит пустое приложение?
Я создал новый проект, просто форма, компилирую, запускаю - навожу на форму мышку - ошибка!!! Сделал показывать скрытые и даже системные файлы, в каталоге с проектом ничего лишнего нет :( -------------------- |
|||
|
||||
| Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 22 Всего: 50 |
Это именно эта дрянь, просто другая разновидность.
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |