![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
vinc2000 |
|
|||
![]() FlashEx [project] Профиль Группа: Участник Сообщений: 21 Регистрация: 15.11.2012 Где: Moscow Репутация: нет Всего: нет |
Здравствуйте. С недавних пор при проверенном выходе (закрытии формы 1) стала вываливаться эта ошибка. Полный текст:
Application Error Exception EAccessViolation in module **** at 001D2AE6 Access violation at adress 005D2AE6 in module ***. Read of address 037DC4C0. Ошибка то появляется то пропадает, т.е. рандомит. Дело возможно в GLScene/\ Переустановка D7 + всех компонентов проблему не решила. Отключение всех dll не помогло. Также как ковыряние в гугломании. Вся надежда на вас ![]() |
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
||||
|
||||
vinc2000 |
|
|||
![]() FlashEx [project] Профиль Группа: Участник Сообщений: 21 Регистрация: 15.11.2012 Где: Moscow Репутация: нет Всего: нет |
понятно...значит утечки. Спс. за оперативность!
|
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Да нет, не совсем утечки. Просто FastMM скажет "попытка обращения к уже удаленному объекту". Объект был создан тогда-то так-то, удален тогда-то и так-то. А сейчас ты лезешь к нему, уже удаленному вот так. Гораздо проще найти ошибку повторного обращения, имея полный стек действий, приведших к ошибке. |
|||
|
||||
vinc2000 |
|
|||
![]() FlashEx [project] Профиль Группа: Участник Сообщений: 21 Регистрация: 15.11.2012 Где: Moscow Репутация: нет Всего: нет |
Ок. Буду разбираться.
|
|||
|
||||
Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 3 Всего: 7 |
Я недавно столкнулся с похожей ошибкой. Шаманил часов 6, проблема оказалась в неправильной низкоуровневой функции переставлявшей байтики и в какой-то момент разрушавшей память. Если в коде есть что-то подобное, то проинспектировать тщательно и попробовать потключать вызовы.
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. ![]() Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
vinc2000 |
|
|||
![]() FlashEx [project] Профиль Группа: Участник Сообщений: 21 Регистрация: 15.11.2012 Где: Moscow Репутация: нет Всего: нет |
Потестил с использованием FASTMM. Результаты для меня как азбука морзе
![]() ![]() Включил по совету FullDebugMode и LogMemoryLeakDetailToFile. Файл в приложении. Так на кого мне все-таки кивать - на удаленный объект или утечку? Это сообщение отредактировал(а) vinc2000 - 2.4.2013, 15:12 Присоединённый файл ( Кол-во скачиваний: 3 ) ![]() |
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Рекомендую попробовать Эврику. Триальная версия полнофункциональна в течение 30 дней. Ну и вот ещё хорошая статья Access Violation в деталях. Это сообщение отредактировал(а) northener - 2.4.2013, 15:44 -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 3 Всего: 7 |
К теме
http://www.gunsmoker.ru/2010/02/redux.html Проблема в том, что если память где-то раздолбана, то тестом на утечки это сложновато выловить. Мне вот здесь http://forum.vingrad.ru/forum/topic-365498.html от FastMM тоже толку не много, и без него видно, что объект nil, но почему я не знаю. Если у тебя GL-Scene, то наверняка есть какие-то буферы вершин и т. п. (3D-графикой интересовался поверхностно), довольно хорошее место чтобы ошибиться с указателями, размером данных, не прописать packed и т. п. Это сообщение отредактировал(а) Beltar - 2.4.2013, 15:58 -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. ![]() Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 4 Всего: 15 |
Ну можешь включить вывод в текстовый лог - там будет больше инфы. Но и так видно, что два объекта утекает. Посмотри где ты такие создаешь и почему не уничтожаешь. А так - почитай гансмокера - ссылки тебе дали. Добавлено @ 16:54 Один раз еле отловил ошибку при выходе. В финалайзе одного модуля, просто уничтожал объект - так и не понял, почему была ошибка, просто перенес в другое место уничтожение кажется. Это сообщение отредактировал(а) superVad - 2.4.2013, 16:54 |
|||
|
||||
vinc2000 |
|
|||
![]() FlashEx [project] Профиль Группа: Участник Сообщений: 21 Регистрация: 15.11.2012 Где: Moscow Репутация: нет Всего: нет |
Ок. Буду разбираться. Спс. за наводки.
Это сообщение отредактировал(а) vinc2000 - 2.4.2013, 17:14 |
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Обрати внимание на сторонние компоненты, которые ты может быть используешь, которые могут создавать доппотоки. Ну и ещё на таймеры. Их желательно первым делом выключать ручками при закрытии приложения. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
vinc2000 |
|
|||
![]() FlashEx [project] Профиль Группа: Участник Сообщений: 21 Регистрация: 15.11.2012 Где: Moscow Репутация: нет Всего: нет |
Отписываюсь о результатах:
1. Скачал и установил Эврику, но в видео-туториале XE2, а у меня семерка в XPSP3 - пунктика нету так и не понял где его искать надо... 2. Провел санацию кода: таймеров оказывается меня нет, освободил все TBitmap'ы, вычистил все что связано с GLScene, убрал подозрительный код и... ошибка осталась, но только когда компилится, т.е. в самой IDE, при внешнем запуске - все работает просто идеально! Странно ![]() ![]() (Подозреваю что дело тут возможно в кривых компонентах или IDE). Поэтому... 3. Соглашусь с GunSmoker'ом, что это частично "Глюки Delphi", т.е. ЛЖЕ-УТЕЧКИ... Это сообщение отредактировал(а) vinc2000 - 3.4.2013, 19:35 |
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Какого пунктика? -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
vinc2000 |
|
|||
![]() FlashEx [project] Профиль Группа: Участник Сообщений: 21 Регистрация: 15.11.2012 Где: Moscow Репутация: нет Всего: нет |
EurekaLog Options, т.е. не могу Activate EurekaLog.
![]() Это сообщение отредактировал(а) vinc2000 - 3.4.2013, 19:28 |
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
-------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
vinc2000 |
|
|||
![]() FlashEx [project] Профиль Группа: Участник Сообщений: 21 Регистрация: 15.11.2012 Где: Moscow Репутация: нет Всего: нет |
Ок. Потестил Eurek'ой -> ссылается на компонент регулятор громкости jantracker (начало модуля).
Eureka Results Удалил его - ошибка исчезла! Поставил заново - все тоже. Но компонент для меня незаменимый, поэтому прошерстил jantracker.pas, проблема я думаю в неособожденном
Кто что думает по этому поводу? P.S. Улетная вещь - эта ваша Эврика! Это сообщение отредактировал(а) vinc2000 - 3.4.2013, 22:33 Присоединённый файл ( Кол-во скачиваний: 4 ) ![]() |
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Ты не Leaks показывай, а Call Stack. И посмотри на какой строке исходника произошла ошибка. Это сообщение отредактировал(а) northener - 3.4.2013, 22:38 -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
vinc2000 |
|
||||
![]() FlashEx [project] Профиль Группа: Участник Сообщений: 21 Регистрация: 15.11.2012 Где: Moscow Репутация: нет Всего: нет |
А call stack у меня нет:( Только General и Leaks:
Строка 124, т.е.:
P.S. Начал копать глубже без jantracker - та же ошибка, только теперь ссылается на Controls.pas и на Classes.pas.
Мда, как говорится - Это только начало пути... ![]() Это сообщение отредактировал(а) vinc2000 - 3.4.2013, 23:03 Присоединённый файл ( Кол-во скачиваний: 4 ) ![]() |
||||
|
|||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Можешь выложить сюда эльфа? (Файл "Имяприложения.elf") -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Ага понял. Это было всего лишь сообщение об утечках памяти. Но топик-то вроде изначально был об AV. Ты вот получи AccessViolation при включенной Эврике. Тогда посмотрим на отчёт Эврики и поговорим. А на утечки памяти потом обратишь внимание. Они конечно зло. Но AccessViolation гораздо хуже. И гораздо труднее находить его причину. И уж утечки памяти (Memory Leaks) никак не могут быть причиной AccessViolation! Тут совсем обратная ситуация. Утечки памяти это когда программа просит у ОС выделить для себя память, получает её, как-то использует (чаще всего однократно) и забывает её возвращать ОС. И таким образом память будет потеряна. Программа её не использует, а другим программам эта память не может быть передана. AccessViolation же возникает в том случае, когда программа обращается к области памяти, которая ей не принадлежит. Либо не была выделена ОС, либо ранее была выделена ей, но уже возвращена ОС. P.S. ОС - Операционная система. В данном случае Windows. P.P.S. Термин программа стоит читать как процесс. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 3 Всего: 7 |
Вполне возможно, что удалив компонент ты только уменьшил размер программы, так что разрушение памяти стало происходить где-то в "безопасной" зоне (ну может данные какие-то, которые можно безнаказанно затереть\испортить), добавил процедурку в обработчик и все, размер снова вырос, и ломается какая-то нужная таблица.
У меня в соседней теме ошибка вообще оказалась в непрописанном inherited Create. Причем сколько помню это inherited всегда вставлялсь автоматически при создании конструктора по Ctrl-Shift-C, можешь свои классы, если есть на подобное проверить, но подобное все-таки локализует проблему ошибочным классом. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. ![]() Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
||||
|
||||
vinc2000 |
|
|||
![]() FlashEx [project] Профиль Группа: Участник Сообщений: 21 Регистрация: 15.11.2012 Где: Moscow Репутация: нет Всего: нет |
Я пока что ничего не путаю ![]() Если ты смотрел туториал - там тестится на XE2 в 7, а у меня D7 в XPSP3. (проблема с установкой EurekaLog уже решена) Ок. Я так понимаю что это дело может затянуться надолго ![]() Ковырять надо jantracker.pas, и файла elf у меня кстати нет:(. А где его искать то надо? У этой медали 2 стороны: нельзя не рассматривать такой вариант, когда все же никто не застрахован от подобного рода разрушений памяти. Я конечно не даю 100% гарантии, что логика верна (результаты FASTMM тому в доказательство), но все же стараюсь придерживаться "простоты и прозрачности кода", а также его периодической санации, т.е. удаляю/заменяю деструктивные участки. В целом благодаря модульности (видео-1 модуль, текст+аудио-2 модуль и т.д.) код не превращается в неперевариваемую кашу и может поэтому удается избегать тучи критических AV и AError'ов. Кто знает ![]() Это сообщение отредактировал(а) vinc2000 - 4.4.2013, 21:58 |
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Да забудь ты про утечки! Они тут не при чем. Когда появится ошибка, тогда появится и файл. В той же папке, что и программа. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
vinc2000 |
|
|||
![]() FlashEx [project] Профиль Группа: Участник Сообщений: 21 Регистрация: 15.11.2012 Где: Moscow Репутация: нет Всего: нет |
Специально сейчас нашел AV во внешке exe - Call Stack теперь есть! И нашел el-файл (он был аж в Application Data\EurekaLab s.a.s\EurekaLog\Bug Reports)
Прикрепляю. AV-ошибка мне известна, т.е. она возникает не при закрытии программы, а при клике. Это сообщение отредактировал(а) vinc2000 - 4.4.2013, 22:42 Присоединённый файл ( Кол-во скачиваний: 8 ) ![]() |
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Очень хорошо, что нашел. (Я являюсь честным обладателем лицензии на Эврику, но версии 6. А в версии 6 эти файлы Эврика помещала в папку программы). Вот теперь открой этот файл при запущенной Дельфи и щёлкни по строке |7FFFFFFE|04 |00000000|006BA7E6|FlashEx.exe |002BA7E6|Unit3 |TForm3 |Next_btnClick |126[3] | Или открой модуль, в котором описан тип TForm3, найди в нем метод Next_btnClick и посмотри, что там находится на третьей строке полсле начального begin. И покажи эту строку тут. P.S. На худой конец кинь мне в личку сам EXE-файл и DLL файлы, которые ему нужны. Попробую найти проблему. Это сообщение отредактировал(а) northener - 5.4.2013, 01:58 -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
vinc2000 |
|
|||
![]() FlashEx [project] Профиль Группа: Участник Сообщений: 21 Регистрация: 15.11.2012 Где: Moscow Репутация: нет Всего: нет |
А в чем проблема-то northener? Эта ошибка связана с листанием листов pdf-файла и возникает она потому-что книга не загружена, а кнопки листания активны ![]() Я уже понял, что самое главное - когда при внешнем закрытии все ок!, а то что там при выходе в режиме компиляции вываливаются какие-то ErrorDialogs или AV - это все пурга ![]() См. вложение (Next_btn & Previous_btn обведены - а в коде условие с циклом) Это сообщение отредактировал(а) vinc2000 - 5.4.2013, 14:41 Присоединённый файл ( Кол-во скачиваний: 5 ) ![]() |
|||
|
||||
Чучмек |
|
|||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 14 Всего: 41 |
Уверен? Есть обращение в никуда. Просто под отладчиком память распределяется по-другому -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 3 Всего: 7 |
Мне вот пока известен только один случай явной пурги, это неизвестное исключение при работе с базой, когда таблица не может лукапнуть что-то, т. к. KeyValue=NULL, в остальных случаях вряд ли стоит надеяться, что все прокатит.
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. ![]() Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
vinc2000 |
|
|||
![]() FlashEx [project] Профиль Группа: Участник Сообщений: 21 Регистрация: 15.11.2012 Где: Moscow Репутация: нет Всего: нет |
||||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Очень необдуманное решение! Очень глупо перестать искать ошибку в программе. А она там точно есть! -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |