access violation между TForm::Close и TForm::FormDestroy
От: Дарней Россия  
Дата: 01.03.04 14:10
Оценка:
То есть access violation вылетает после вызова TForm::Close (главной формы), но до вызова TForm::FormDestroy. Кто виноват?
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re: access violation между TForm::Close и TForm::FormDestroy
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 01.03.04 15:06
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>То есть access violation вылетает после вызова TForm::Close (главной формы), но до вызова TForm::FormDestroy. Кто виноват?


Ручками написанный код, имхо. Обработчика OnClose формы нет, случаем? И если есть, Action случайно в caFree не устанавливается?
Re: access violation между TForm::Close и TForm::FormDestroy
От: Аноним  
Дата: 01.03.04 15:09
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>То есть access violation вылетает после вызова TForm::Close (главной формы), но до вызова TForm::FormDestroy. Кто виноват?


А часики в квадратике в это время не живут ?
Re[2]: access violation между TForm::Close и TForm::FormDest
От: Дарней Россия  
Дата: 01.03.04 15:11
Оценка:
Здравствуйте, Flamer, Вы писали:

F>Здравствуйте, Дарней, Вы писали:


F>Ручками написанный код, имхо. Обработчика OnClose формы нет, случаем? И если есть, Action случайно в caFree не устанавливается?


случаем есть. Но там нет ничего, окромя вывода в трассировку замечательного факта вызова этой функции
Точнее — обработчик теперь есть. Раньше его не было, но прога все равно падала при выходе
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[2]: access violation между TForm::Close и TForm::FormDest
От: Дарней Россия  
Дата: 01.03.04 15:12
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Дарней, Вы писали:


Д>>То есть access violation вылетает после вызова TForm::Close (главной формы), но до вызова TForm::FormDestroy. Кто виноват?


А>А часики в квадратике в это время не живут ?


нэ живут. Мамой клянусь!
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[3]: access violation между TForm::Close и TForm::FormDest
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 01.03.04 15:18
Оценка:
Здравствуйте, Дарней, Вы писали:

[]

Д>случаем есть. Но там нет ничего, окромя вывода в трассировку замечательного факта вызова этой функции

Д>Точнее — обработчик теперь есть. Раньше его не было, но прога все равно падала при выходе

В свете вышесказанного могу предложить только одно: комментируйте куски кода до тех пор, пока программа не прекратит падать. Потом раскомментируйте по одному, сужая область поиска.
Включите CоdeGuard, если отключен.
Re[3]: access violation между TForm::Close и TForm::FormDest
От: Аноним  
Дата: 01.03.04 15:22
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Здравствуйте, Аноним, Вы писали:


А>>Здравствуйте, Дарней, Вы писали:


Д>>>То есть access violation вылетает после вызова TForm::Close (главной формы), но до вызова TForm::FormDestroy. Кто виноват?


А>>А часики в квадратике в это время не живут ?


Д>нэ живут. Мамой клянусь!



Ну ебтить...
а по адресу ошибки слабо найти место
Find Error поиши в меню.
Re[3]: access violation между TForm::Close и TForm::FormDest
От: Dimonka Верблюд  
Дата: 01.03.04 15:39
Оценка: +1 -1
Здравствуйте, Дарней, Вы писали:

Д>случаем есть. Но там нет ничего, окромя вывода в трассировку замечательного факта вызова этой функции

Д>Точнее — обработчик теперь есть. Раньше его не было, но прога все равно падала при выходе

Зачем тогда было писать обработчик, если прога до него падала при выходе?
Обычно исправляются старые ошибки, прежде чем делаются новые.
Постарайся припомнить, после каких изменений появилась ошибка. Вряд ли есть какие-то стандартные рекомендации в таких случаях..
Поддерживаю метод Flamer`а.
Re[4]: access violation между TForm::Close и TForm::FormDest
От: ArtDenis Россия  
Дата: 01.03.04 17:18
Оценка: :)
Здравствуйте, Flamer, Вы писали:

F>В свете вышесказанного могу предложить только одно: комментируйте куски кода до тех пор, пока программа не прекратит падать.


Сразу подумалось: программа перестала падать после того, как была закоментирована последняя строчка
... << RSDN@Home 1.1.2 stable >>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[5]: access violation между TForm::Close и TForm::FormDest
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 01.03.04 18:09
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Здравствуйте, Flamer, Вы писали:


F>>В свете вышесказанного могу предложить только одно: комментируйте куски кода до тех пор, пока программа не прекратит падать.


AD>Сразу подумалось: программа перестала падать после того, как была закоментирована последняя строчка


Дополню: с комментированием последней строчки она вдобавок перестала компилиться
Re[4]: access violation между TForm::Close и TForm::FormDest
От: Дарней Россия  
Дата: 02.03.04 12:41
Оценка:
Здравствуйте, Flamer, Вы писали:

F>В свете вышесказанного могу предложить только одно: комментируйте куски кода до тех пор, пока программа не прекратит падать. Потом раскомментируйте по одному, сужая область поиска.

F>Включите CоdeGuard, если отключен.


если я закомментирую хоть одну строку, то все остальные без нее просто не будут работать.
А CоdeGuard ничего в свой лог не написал. Это так и должно быть?
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[4]: access violation между TForm::Close и TForm::FormDest
От: Дарней Россия  
Дата: 02.03.04 12:46
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Ну ебтить...

А>а по адресу ошибки слабо найти место
А> Find Error поиши в меню.

ну ептить. Я не такой умный, чтобы по адресу где-то в недрах ntdll сказать, что такое стряслось. А в стеке вызовов только куча адресов где-то в ntdll
Может быть, ты подскажешь?
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[5]: access violation между TForm::Close и TForm::FormDest
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 02.03.04 12:48
Оценка:
Здравствуйте, Дарней, Вы писали:

[]

Д>если я закомментирую хоть одну строку, то все остальные без нее просто не будут работать.

Д>А CоdeGuard ничего в свой лог не написал. Это так и должно быть?

Ну что я могу вам посоветовать? Надо бы тогда делать юнит-тесты. assert и OutputDebugString помогут. Проверяйте все критичные данные + выводите диагностические сообщения.
Re[4]: access violation между TForm::Close и TForm::FormDest
От: Дарней Россия  
Дата: 02.03.04 12:49
Оценка:
Здравствуйте, Dimonka, Вы писали:

D>Зачем тогда было писать обработчик, если прога до него падала при выходе?

D>Обычно исправляются старые ошибки, прежде чем делаются новые.
D>Постарайся припомнить, после каких изменений появилась ошибка. Вряд ли есть какие-то стандартные рекомендации в таких случаях..
D>Поддерживаю метод Flamer`а.

я вполне определенно написал, что обработчик пишет сообщение в трассировку. Мне ведь нужно сокращать область поиска, nicht war?

меня в общем только одно интересовало — что у VCL происходит в промежутке между этими двумя моментами, ибо я сам по VCL не специалист. Никакие "стандартные рекомендации" меня не интересуют. а вот любая конкретная информация по этому вопросу крайне приветствуется.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re: access violation между TForm::Close и TForm::FormDestroy
От: Leonid Troyanovsky  
Дата: 02.03.04 14:13
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>То есть access violation вылетает после вызова TForm::Close (главной формы), но до вызова TForm::FormDestroy. Кто виноват?


Вторичный поток?
--
С уважением, LVT
Re[6]: access violation между TForm::Close и TForm::FormDest
От: Дарней Россия  
Дата: 02.03.04 14:31
Оценка:
Здравствуйте, Flamer, Вы писали:

F>Ну что я могу вам посоветовать? Надо бы тогда делать юнит-тесты. assert и OutputDebugString помогут. Проверяйте все критичные данные + выводите диагностические сообщения.


эх....
в том и проблема, что ни один из моих методов в это время не вызывается — я специально трассировку везде понапихал. Единственный вторичный тред завершается задолго до этого момента. То же самое касается единственного в проге таймера. У меня все время такое подозрение, что в это время в VCL какая-то скрытая деятельность идет
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[5]: access violation между TForm::Close и TForm::FormDest
От: Аноним  
Дата: 02.03.04 14:47
Оценка: :)
Здравствуйте, Дарней, Вы писали:

Д>Здравствуйте, Аноним, Вы писали:


А>>Ну ебтить...

А>>а по адресу ошибки слабо найти место
А>> Find Error поиши в меню.

Д>ну ептить. Я не такой умный, чтобы по адресу где-то в недрах ntdll сказать, что такое стряслось. А в стеке вызовов только куча адресов где-то в ntdll

Д>Может быть, ты подскажешь?

МИИИИНТООООООН !

Память..мять..мать..мать..мать...
привычно отозвалось эхо..
Re[7]: access violation между TForm::Close и TForm::FormDest
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 02.03.04 15:16
Оценка:
Здравствуйте, Дарней, Вы писали:

[]

Д>эх....

Д>в том и проблема, что ни один из моих методов в это время не вызывается — я специально трассировку везде понапихал. Единственный вторичный тред завершается задолго до этого момента. То же самое касается единственного в проге таймера. У меня все время такое подозрение, что в это время в VCL какая-то скрытая деятельность идет

Отстрел тупо в лоб:

1. Удаляем из директории проекта все *.il?, *.obj, *.tds.
2. Перекомпилируем весь проект (Build all)
3. Если не помогает, то ставим в настройках проекта "Full debug" и в опциях линкера "Use debug libraries". Перекомпилируем, запускаем, трассируемся по коду.
4. Если не помогает, то ставим Bounds Checker и запускаем дебажную версию под ним. Он должен показать, где порылся клоп.

Вот, пока все.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.