падение на boost
От: Socket Ниоткуда http://www.samborsky.com
Дата: 11.12.07 08:50
Оценка:
Использую буст в своих проектах,
когда происходит вылет скажем в boost::to_lower, или в других функциях буста,
вылетает MessageBox, как можно убрать его? т.е. если вылет произошел то прога падала а не давала MessageBox`ы
http://www.samborsky.com — мой блог
Re: падение на boost
От: ArtDenis Россия  
Дата: 11.12.07 09:07
Оценка:
Здравствуйте, Socket, Вы писали:

S>Использую буст в своих проектах,

S>когда происходит вылет скажем в boost::to_lower, или в других функциях буста,
S>вылетает MessageBox,

А что за ошибка хоть и написано в этом MessageBox-е?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[2]: падение на boost
От: Socket Ниоткуда http://www.samborsky.com
Дата: 11.12.07 09:19
Оценка:
Здравствуйте, ArtDenis, Вы писали:

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


S>>Использую буст в своих проектах,

S>>когда происходит вылет скажем в boost::to_lower, или в других функциях буста,
S>>вылетает MessageBox,

AD>А что за ошибка хоть и написано в этом MessageBox-е?


http://www.samborsky.com — мой блог
Re[3]: падение на boost
От: Socket Ниоткуда http://www.samborsky.com
Дата: 11.12.07 09:20
Оценка:
Здравствуйте, Socket, Вы писали:

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


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


S>>>Использую буст в своих проектах,

S>>>когда происходит вылет скажем в boost::to_lower, или в других функциях буста,
S>>>вылетает MessageBox,

AD>>А что за ошибка хоть и написано в этом MessageBox-е?


http://www.samborsky.com — мой блог
Re[4]: падение на boost
От: Socket Ниоткуда http://www.samborsky.com
Дата: 11.12.07 09:21
Оценка: :))) :))
Здравствуйте, Socket, Вы писали:

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


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


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


S>>>>Использую буст в своих проектах,

S>>>>когда происходит вылет скажем в boost::to_lower, или в других функциях буста,
S>>>>вылетает MessageBox,

AD>>>А что за ошибка хоть и написано в этом MessageBox-е?


тут скрин крупнее
http://img153.imageshack.us/my.php?image=42645518vn6.gif
http://www.samborsky.com — мой блог
Re[5]: падение на boost
От: ArtDenis Россия  
Дата: 11.12.07 09:33
Оценка:
Здравствуйте, Socket, Вы писали:

S>тут скрин крупнее

S>http://img153.imageshack.us/my.php?image=42645518vn6.gif

Тут всё ясно. Ищи баг в совей проге
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[5]: падение на boost
От: Ужас бухгалтера  
Дата: 11.12.07 10:20
Оценка:
S>тут скрин крупнее
S>http://img153.imageshack.us/my.php?image=42645518vn6.gif

Очень похоже, что вылетает исключение. Это исключение никак не обрабатывается, что приводит к вызову std::terminate. Соответственно, надо или исключить возможность сгенерировать исключение, или обрабатывать его.
Re[6]: падение на boost
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 11.12.07 10:21
Оценка:
Здравствуйте, ArtDenis, Вы писали:

S>>тут скрин крупнее

S>>http://img153.imageshack.us/my.php?image=42645518vn6.gif

AD>Тут всё ясно. Ищи баг в совей проге


А вообще такой дилетантский вопрос -- как запретить выскакивание этого окошка? Ну чтобы падала программа себе тихонечко и все.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: падение на boost
От: Sergey Россия  
Дата: 11.12.07 12:02
Оценка:
> S>>тут скрин крупнее
> S>>http://img153.imageshack.us/my.php?image=42645518vn6.gif
>
> AD>Тут всё ясно. Ищи баг в совей проге
>
> А вообще такой дилетантский вопрос -- как запретить выскакивание этого окошка? Ну чтобы падала программа себе тихонечко и все.

видимо могут помочь set_terminate и свой обработчик
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[7]: падение на boost
От: Peregrin  
Дата: 11.12.07 12:31
Оценка:
Здравствуйте, eao197, Вы писали:

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


S>>>тут скрин крупнее

S>>>http://img153.imageshack.us/my.php?image=42645518vn6.gif

AD>>Тут всё ясно. Ищи баг в совей проге


E>А вообще такой дилетантский вопрос -- как запретить выскакивание этого окошка? Ну чтобы падала программа себе тихонечко и все.


Я не уверен, но может SetErrorMode?
Re[6]: падение на boost
От: Кодт Россия  
Дата: 11.12.07 12:33
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Тут всё ясно. Ищи баг в совей проге


И что это? Результат вызова abort() / terminate() / непойманное исключение в отладочной версии CRT?
Или какой-то хитрый расстрел памяти?
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[7]: падение на boost
От: ArtDenis Россия  
Дата: 11.12.07 13:08
Оценка:
Здравствуйте, Кодт, Вы писали:

К>И что это? Результат вызова abort() / terminate() / непойманное исключение в отладочной версии CRT?

К>Или какой-то хитрый расстрел памяти?

Думаю, достаточно включить в настройках дебагера остановку на подобных вещах, чтобы увидеть место где происходит сбой. А растрел памяти надо искать соответствующими утилитами. Короче, дело поправимое
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[8]: падение на boost
От: Кодт Россия  
Дата: 11.12.07 14:08
Оценка:
Здравствуйте, ArtDenis, Вы писали:

К>>И что это? Результат вызова abort() / terminate() / непойманное исключение в отладочной версии CRT?

К>>Или какой-то хитрый расстрел памяти?

AD>Думаю, достаточно включить в настройках дебагера остановку на подобных вещах, чтобы увидеть место где происходит сбой. А растрел памяти надо искать соответствующими утилитами. Короче, дело поправимое


Я имею в виду: из какого обработчика вылезает это окошко. (Просто я его никогда не видел раньше).
Похоже, что terminate().

У terminate() есть следующие причины
— исключение, перелетевшее через границу nothrow
— — из main()
— — из функции потока
— — из колбэк-функции, вызванной из недр ОС
— — из функции со спецификацией исключений
— исключение, возникшее при раскрутке стека после броска другого исключения
— явный вызов abort() или terminate(), например, из assert()

Отладчиком такие вещи особо не поймаешь. Придётся поизгаляться.
Хотя безусловно, дело поправимое.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Как запретить MessageBox`ы с сообщениями об ошибках
От: Alex_Avr Россия  
Дата: 11.12.07 14:31
Оценка: 39 (2) +1
#Имя: FAQ.SetErrorMode
Здравствуйте, Вы писали:

S>Использую буст в своих проектах,

S>когда происходит вылет скажем в boost::to_lower, или в других функциях буста,
S>вылетает MessageBox, как можно убрать его?



S>т.е. если вылет произошел то прога падала а не давала MessageBox`ы


Хороший вопрос! Под Windows такого рода окошки могут возникать по разным причинам — срабатываение assert, необработанное исключение, access violations и др.
Соответственно, AFAIK не существует способа просто установить некий флаг, чтобы все такого рода сообщения подавлялись.

Советую посмотреть следующие функции:

Windows API:

SetErrorMode
SetUnhandledExceptionFilter

Возможно, полезными окажутся и другие Error Handling Functions, Structured Exception Handling Functions

CRT:

(С++)
set_unexpected
set_terminate

(Microsoft specific)
_CrtSetReportMode
_CrtDbgReport
и другие Debug Routines

Недавно я узнал, что начиная с MSVC 2005 (8.0) в связи с новой политикой безопасности возникающие сообщения об ошибках легальными методами нельзя будет запретить полностью.
С уважением, Александр Авраменко.
Re[9]: падение на boost
От: Left2 Украина  
Дата: 11.12.07 14:41
Оценка:
К>Я имею в виду: из какого обработчика вылезает это окошко. (Просто я его никогда не видел раньше).
Сдаётся мне что сообщение это из дремучих MS Windows 9x — в NT/2000/XP оно выглядит по-другому. Хотя — могу ошибаться...
... << RSDN@Home 1.2.0 alpha rev. 717>>
Re[10]: падение на boost
От: Sergey Россия  
Дата: 11.12.07 16:11
Оценка:
>К>Я имею в виду: из какого обработчика вылезает это окошко. (Просто я его никогда не видел раньше).
> Сдаётся мне что сообщение это из дремучих MS Windows 9x — в NT/2000/XP оно выглядит по-другому. Хотя — могу ошибаться...

Насколько я знаю, ошибаешься. Это сообщение CRT на abort и terminate.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[10]: падение на boost
От: Socket Ниоткуда http://www.samborsky.com
Дата: 11.12.07 16:30
Оценка:
Выяснилось откуда окошко то...

Было:

    boost::thread_group threads;

    for( int i = 0; i < 200; i++ )
        threads.create_thread(boost::bind(&checker_thread,this));
            
    threads.join_all();



Стало:
    boost::thread_group threads;

    for( int i = 0; i < 200; i++ ){
        threads.create_thread(boost::bind(&checker_thread,this));
        Sleep(10);
    }
            
    threads.join_all();


Насколько я понял падение происходило из 3х оброботок 1 раз.
после того как поставил Sleep(10), мессадж боксы больше не появляются.

Прошу прокоментировать знающих людей почему так происходит? в винде нельзя так быстро создавать треды?
http://www.samborsky.com — мой блог
Re[11]: падение на boost
От: TheBeard Россия  
Дата: 11.12.07 16:47
Оценка:
Здравствуйте, Socket, Вы писали:

S>Насколько я понял падение происходило из 3х оброботок 1 раз.

S>после того как поставил Sleep(10), мессадж боксы больше не появляются.

S>Прошу прокоментировать знающих людей почему так происходит? в винде нельзя так быстро создавать треды?


Похоже на вот эту
Автор: Sergey
Дата: 12.11.07
ошибку.
Re[12]: падение на boost
От: Socket Ниоткуда http://www.samborsky.com
Дата: 11.12.07 16:59
Оценка:
Здравствуйте, TheBeard, Вы писали:

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


S>>Насколько я понял падение происходило из 3х оброботок 1 раз.

S>>после того как поставил Sleep(10), мессадж боксы больше не появляются.

S>>Прошу прокоментировать знающих людей почему так происходит? в винде нельзя так быстро создавать треды?


TB>Похоже на вот эту
Автор: Sergey
Дата: 12.11.07
ошибку.


буст самый последний.

кстати для интереса сделал в цикле вызов 1000 раз CreateThread так же падает
http://www.samborsky.com — мой блог
Re[11]: падение на boost
От: Кодт Россия  
Дата: 11.12.07 17:16
Оценка:
Здравствуйте, Socket, Вы писали:

S>Насколько я понял падение происходило из 3х оброботок 1 раз.

S>после того как поставил Sleep(10), мессадж боксы больше не появляются.

Гонки какие-то.
Sleep() вытесняет текущий поток и даёт возможность стартовать потоку, запущенному по create_thread.
Без него — ты планируешь 200 потоков (один раз из трёх — система успевает вытеснить текущий поток на половине этого процесса).

Природу гонок можно выяснить, посмотрев на содержимое checker_thread().
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.