Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Access Violation, странное 
:(
    Опции темы
Leana
Дата 30.3.2007, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 16.6.2006

Репутация: нет
Всего: нет



Ребята, помогите. Мне надо отловить bug...

Воспроизвести проблему не могу сама, но клиент это может время от времени... По call stack могу определить, что проблема возникает в определенной процедуре. Изучила процедуру. Нашла один объект, который создается и потом не уничтожается...

Вопрос в следующем: может ли это быть причиной AV? Я всегда думала, что AV - это когда мы обращаемся к объекту, которого уже не существует... В моем случае, мы создаем объект, который был создан раньше, но память не была освобождена... Я думала, что это будет служить причиной memory leak, но не AV... 

Вопрос второй: если это служит причиной AV, может ли это также вызывать странное поведение у программы. Например, в моем случае, каждый раз, когда возникает AV, программа повторяет без всякой причины несколько процедур, которые были уже выполнены до этого. Например, при транзакции мы создали 3 записи... Потом перешли к процедуре внутри которой возникает AV, и потом почему то выполняются опять процедуры, которые создали 3 записи, и потом мы идем в Exception, где оно обрабатывается. 

Please help!!!!
PM MAIL   Вверх
Snowy
Дата 30.3.2007, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Защищай код try..except/finally.
Без этого вообще серъёзный код не пишется.
PM MAIL   Вверх
Leana
Дата 30.3.2007, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 16.6.2006

Репутация: нет
Всего: нет



try... except/finally в коде используется... 
PM MAIL   Вверх
Snowy
Дата 30.3.2007, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Значит AV не там ;-)
PM MAIL   Вверх
Leana
Дата 30.3.2007, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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.


PM MAIL   Вверх
Snowy
Дата 30.3.2007, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Нет. Это никак не может быть причиной AV.
В чём причина - без кода сказать сложно.
Покажи код - посмотрим.
PM MAIL   Вверх
Leana
Дата 30.3.2007, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 16.6.2006

Репутация: нет
Всего: нет



к сожалению, код показать не могу.

во-первых, company privacy issues.
Во-вторых, там процедуры в 2500 строк - черт ногу сломит.

Ок, наверное, придется самой попытаться разобраться.

Во всяком случае, вы мне сказали, что не уничтожение объекта не может служить причиной AV.  Жаль... я думала, я была на верном пути :(



PM MAIL   Вверх
MetalFan
Дата 30.3.2007, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



ну тогда удачно поймать глюк)


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Snowy
Дата 30.3.2007, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Не стоит делать такие процедуры.
Такой объём кода всегда нужно дробить на отдельные части.
Иначе чревато вот такими сложностями с локализацией глюков.
Да и читать такой код проблемно, не говоря уже о том, чтобы с ним работать.
PM MAIL   Вверх
Sunvas
Дата 30.3.2007, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 2
Всего: 89



А пошаговым выполнением определить что, не удается?


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Leana
Дата 30.3.2007, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 16.6.2006

Репутация: нет
Всего: нет



да, ребята, понимаю. Такие процедуры писать нельзя... Их написал кто-то очень умный несколько лет назад. Конечно, он здесь уже не работает... А мы жучков отлавливаем. :(

Пошагово отловить не могу, потому что у меня AV не возникает. 
Скорей всего буду делать logging version. И потом по более детальной информации пытаться определить, в чем проблема.
PM MAIL   Вверх
dumb
Дата 31.3.2007, 02:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 3
Всего: 158



есть подозрение, что в print_starting_here (tktdrv.pas, line 2652) производится попытка закрыть уже уничтоженную форму.
PM MAIL   Вверх
dumb
Дата 31.3.2007, 02:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 3
Всего: 158



чуть конкретнее можно сказать, если хотя бы Galaxy.exe куда-нибудь выложишь.
PM MAIL   Вверх
Hidrag
Дата 15.5.2008, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: нет
Всего: 25



Ставил сегодня Delphi 2006, затем снес поставил Delphi 7 и снова эта ошибка! При открытие любого проекта и запуска его на выполнение вылазит эта ошибка!

Создаю свой проект, очень простой, форма и несколько кнопок, нажимаю run, запускается приложение и тут же падает эта ошибка :( ЧТо может быть?

У пользователя на компе права админские, хоть и не под админом сижу, может быть системе не дает делфи куда то в память лезти?


--------------------
user posted image
PM WWW ICQ   Вверх
THandle
Дата 15.5.2008, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Hidrag, такое?

http://forum.vingrad.ru/forum/topic-201047.html

Я с этим и по сей день мучаюсь, решения найти не могу...
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0640 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.