Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.01.24;
Скачать: [xml.tar.bz2];

Вниз

Access violation at address   Найти похожие ветки 

 
Германн ©   (2009-11-20 01:33) [0]

Может ли кто что-то ещё подсказать по моему топику на Королевстве:
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=74207
?

Уже отправил запрос автору Эврики. Надеюсь он во-первых поймет мой английский, а во-вторых что-то ответит.


 
0x00FF00   (2009-11-20 09:26) [1]

Насколько мне кажется, это банальные "ножницы" в стэке (сиречь, подпрограмма берёт из него не столько, сколько туда положила).
Эксепшен выпрыгивает сразу после RET.
Т.е. RET функция отработала, но управление вернулось не туда, куда нужно.

Судя по тому, что сбоящий адрес принадлежит Thread.Synchronize, могу допустить, что потоковая процедура мусорит в чужом кадре стэка. Однако на более быстрых машинах это скрадывается из-за скорости выполнения.
А здесь поток, получив в распоряжение свой квант времени, вдруг решил поизговнякать кадр — ан его прежнего уже и нету, и на его месте расположены чьи-нибудь совсем другие локальные переменные. А то и задевает адреса возврата...


 
oxffff ©   (2009-11-20 09:33) [2]


> Германн ©   (20.11.09 01:33)  


Stack frames присутствуют?


 
oxffff ©   (2009-11-20 09:46) [3]

http://blog.eurekalog.com/how-to-read-bug-reports/

The next thing: you should be aware of the method used for building call stack.

There are two methods available: frame-based tracing and raw tracing methods. First one (frame-based) builds call stack by using sequence of frames, which are added to the stack on call of most routines. Usually this method gives acceptable results (if you don’t have too many very short routines). You can increase it’s effectiveness by enabling “Stack Frames” option. This method is quite precise and fast as it looks only for “registered” calls. It don’t scan the entire stack – just walks by sequence of frames, where every call frame points to another.

Raw tracing method works differently: it just scan the whole stack, trying to find return addresses. Really: the frames may be or may be not present in the stack. But return addresses are always here. The problem is that there is no 100% way to find them. So, raw method takes every integer in stack and tries to guess: does it look like return address? For this reason, the raw tracing methods can be used only with some heuristic algorithm. Created call stacks may differ significantly, depending on quality of the heuristic.

Why am I telling all this stuff? That’s because reading of a call stack may depend on the method, which was used to create the call stack.

P.S. Есть ли возможность брякнуть на LEA и посмотреть стек откуда туда попали?


 
0x00FF00   (2009-11-20 09:57) [4]


> P.S. Есть ли возможность брякнуть на LEA и посмотреть стек
> откуда туда попали?

Имхо, всё же выполнился предыдущий RET, и Эврика встала.
Подумал так, потому что LEA не имеет касательства к указанным в крэш-дампе адресам.
Здесь это всего лишь мусорная инструкция присвоения аккумуляторного регистра себе же.
Если предыдущая (т.е. вызвавшая эксепшен) инструкция была прыжком, то неоткуда браться эксепшену.
А если бы баг был в другом потоке, то встало бы на нём, а не здесь...

сугубо имхо.


 
Германн ©   (2009-11-20 16:50) [5]


> P.S. Есть ли возможность брякнуть на LEA и посмотреть стек
> откуда туда попали?

Никакой возможности для отладки нет.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2010.01.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
2-1260038741
Леонид Артюхов
2009-12-05 21:45
2010.01.24
Как Конвертировать Строку в Картинку?


1-1234360353
vinixp
2009-02-11 16:52
2010.01.24
Картинка из веб страницы


8-1202666850
WeReWoLf
2008-02-10 21:07
2010.01.24
Что сделать чтобы DELPHI нарисовала график?


2-1259921265
Alexxx
2009-12-04 13:07
2010.01.24
indy & 503


2-1259566616
V@silij Iv@novich
2009-11-30 10:36
2010.01.24
Использование QReport





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский