OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 06 Август, 2020 04:27

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Ошибка при переполнении стека
СообщениеДобавлено: Вторник, 07 Июль, 2009 23:35 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9271
Откуда: Россия, Орёл
QWERTYProgrammer писал(а):
Вроде уже когда-то обсуждалось, но внятного объяснения так и не было, почему простейшая программа с аллокацией большого массива на стеке на 2-3 запуске может убить среду ББ?

Код:
MODULE TestCrash1;
IMPORT Log := StdLog;
CONST n=8000;
PROCEDURE Do*;
VAR a: ARRAY n,n OF REAL;
BEGIN
Log.Int(LEN(a,0)); Log.Ln;
END Do;
END TestCrash1.


Да, тут такая фигня получается. На переполнение стека ББ выдаёт стандартный системный WinApi.MessageBox. Штука в том, что всю жизнь, сколько помню, эта процедура была блокирующей, т.е. не возвращала управление до нажатия пользователем кнопки ok. Но не знаю почему (то ли начиная с XP? Я недавно перешёл, сидел на 2000-м), теперь она отдаёт управление среде. И если я не нажму кнопку OK в показанном диалоге, а продолжу работу в среде при открытом сообщении, то начинается полная фигня. В частности, фатальное падение.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка при переполнении стека
СообщениеДобавлено: Среда, 08 Июль, 2009 00:18 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Цитата:
Вроде уже когда-то обсуждалось, но внятного объяснения так и не было, почему простейшая программа с аллокацией большого массива на стеке на 2-3 запуске может убить среду ББ?


Переполнение стэка - очень специфичная ошибка и требует очень специфичной обработки (в отлчие от банального AV). Во всяком случае на винде. BB, видимо, не совсем правильно обрабатывает такую ошибку (или вообще обрабатывает по общей схеме).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка при переполнении стека
СообщениеДобавлено: Среда, 08 Июль, 2009 00:58 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9271
Откуда: Россия, Орёл
Да, возможно, MessageBox не может правильно отработать в условиях переполненного стэка ББ. Надо смотреть, сейчас времени нет...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка при переполнении стека
СообщениеДобавлено: Среда, 08 Июль, 2009 21:41 

Зарегистрирован: Среда, 04 Июль, 2007 16:43
Сообщения: 241
На моей машине (XP) происходит следующее: при первом запуске появляется окошко с сообщением "stack overflow". После нажатия ОК ББ остается наплаву, можно продолжать работать дальше. Но вот если запустить программу второй раз, то тут уже без появления каких-нибудь сообщений рушится сама среда.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка при переполнении стека
СообщениеДобавлено: Среда, 08 Июль, 2009 21:47 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9271
Откуда: Россия, Орёл
Там ещё такая штука, что в Винде с какой-то версии даже при заблокированном потоке приложения (если он заблокирован АПИ-вызовом) могут проходить сообщения, что и наблюдалось с этим диалогом. Вроде так. Это вообще крах, конечно, такие фортели ОС.

Ну и ББ не согласован с этими обновлениями, видимо, при обработке переполнения. А в 1.6 ошибка возникает, у кого время проверить есть? И накатать бы баг-репорт в Цюрих.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка при переполнении стека
СообщениеДобавлено: Среда, 08 Июль, 2009 22:10 

Зарегистрирован: Среда, 04 Июль, 2007 16:43
Сообщения: 241
У меня как раз 1.6


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка при переполнении стека
СообщениеДобавлено: Вторник, 28 Май, 2013 17:33 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Tel-Aviv
Есть ли у кого-то исправление этой ошибки сегодня? Если это кому-то было нужно, конечно.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2020, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB