Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> boost::regex, ошибка 
V
    Опции темы
andrew_121
Дата 7.9.2009, 08:34 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Здравствуйте!

Вот код:
Код

#include "boost/regex.hpp"

int main(int argc, const char** argv) {
   boost::regex rx("");
   return 0;
}

Вот ошибка:
Код

Unhandled exception at 0x00da2f78 in test.exe: 0xC0000005: Access violation reading location 0xfffffffc.


MSVC2008, boost-1.39.0

Собирал так:
Код

bjam --build-type=complete --with-regex --toolset=msvc-9.0 stage


 smile 

Это сообщение отредактировал(а) andrew_121 - 7.9.2009, 08:37


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
azesmcar
Дата 7.9.2009, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



andrew_121

Цитата(andrew_121 @  7.9.2009,  08:34 Найти цитируемый пост)
Unhandled exception 

А не лучше ли exception поймать и посмотреть текст ошибки? smile 

PM   Вверх
andrew_121
Дата 7.9.2009, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Цитата(azesmcar @  7.9.2009,  08:42 Найти цитируемый пост)
А не лучше ли exception поймать и посмотреть текст ошибки?

Так не ловится smile 
Код

int main(int argc, const char** argv) {
    boost::regex rx; /** здесь все ок */
    try {
        rx.assign(""); /** здесь ошибка */
    } catch (boost::exception& e) {
        std::cout << diagnostic_information(e) << std::endl;
    } catch (std::exception& e) {
        std::cout << e.what() << std::endl;
    } catch (...) {
        std::cout << "Error!" << std::endl;
    }
   return 0;
}


Это сообщение отредактировал(а) andrew_121 - 7.9.2009, 09:07


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
azesmcar
Дата 7.9.2009, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



А что говорит отладчик?
PM   Вверх
Cheloveck
Дата 7.9.2009, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 3
Всего: 32



libboost_regex-vc90-mt-gd-1_39.lib подключи, с отладочной инфой

Это сообщение отредактировал(а) Cheloveck - 7.9.2009, 09:22


--------------------
user posted image
PM Jabber   Вверх
andrew_121
Дата 7.9.2009, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Дебагер показывает тут:
user posted image

Файл: C:\Program Files\Microsoft Visual Studio 9.0\VC\crt\src\xutility

Объект:
Код

    // CLASS _Iterator_base
class _Iterator_base : public _Iterator_base_universal { // store links to container, next iterator

Метод:
Код

void __CLR_OR_THIS_CALL _Orphan_me()
{    // cut ties with parent
    if (_Mycont != 0 && _Mycont->_Myfirstiter != _IGNORE_MYITERLIST)
    {    // adopted, remove self from list
        _Iterator_base **_Pnext =
            (_Iterator_base **)&_Mycont->_Myfirstiter;
        while (*_Pnext != 0 && *_Pnext != this)
            _Pnext = &(*_Pnext)->_Mynextiter;
            if (*_Pnext == 0)
            _DEBUG_ERROR("ITERATOR LIST CORRUPTED!");
        *_Pnext = _Mynextiter;
        _Mycont = 0;
    }
}



--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
andrew_121
Дата 7.9.2009, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Вот call stack, может поможет
Код

test.exe!std::_Iterator_base::_Orphan_me()  Line 181 + 0xd bytes    C++
test.exe!std::_Iterator_base::~_Iterator_base()  Line 162    C++
test.exe!std::_Ranit_base<char,int,char const *,char const &,std::_Iterator_base>::~_Ranit_base<char,int,char const *,char const &,std::_Iterator_base>()  + 0x11 bytes    C++
test.exe!std::_String_const_iterator<char,std::char_traits<char>,std::allocator<char> >::~_String_const_iterator<char,std::char_traits<char>,std::allocator<char> >()  + 0x11 bytes    C++
test.exe!std::_String_iterator<char,std::char_traits<char>,std::allocator<char> >::~_String_iterator<char,std::char_traits<char>,std::allocator<char> >()  + 0x11 bytes    C++
test.exe!boost::re_detail::w32_transform(unsigned long id=1049, const char * p1=0x0012f070, const char * p2=0x0012f071)  Line 377    C++
test.exe!boost::re_detail::w32_regex_traits_implementation<char>::transform(const char * p1=0x0012f070, const char * p2=0x0012f071)  Line 328 + 0x17 bytes    C++
test.exe!boost::re_detail::find_sort_syntax<boost::re_detail::w32_regex_traits_implementation<char>,char>(const boost::re_detail::w32_regex_traits_implementation<char> * pt=0x0158b968, char * delim=0x0158bdc4)  Line 77 + 0x14 bytes    C++
test.exe!boost::re_detail::w32_regex_traits_implementation<char>::w32_regex_traits_implementation<char>(unsigned long l=1049)  Line 506 + 0x19 bytes    C++
test.exe!boost::object_cache<unsigned long,boost::re_detail::w32_regex_traits_implementation<char> >::do_get(const unsigned long & k=1049, unsigned int max_cache_size=5)  Line 118 + 0x31 bytes    C++
test.exe!boost::object_cache<unsigned long,boost::re_detail::w32_regex_traits_implementation<char> >::get(const unsigned long & k=1049, unsigned int max_cache_size=5)  Line 69 + 0x11 bytes    C++
test.exe!boost::re_detail::create_w32_regex_traits<char>(unsigned long l=1049)  Line 554 + 0xf bytes    C++
test.exe!boost::w32_regex_traits<char>::w32_regex_traits<char>()  Line 573 + 0x16 bytes    C++
test.exe!boost::regex_traits<char,boost::w32_regex_traits<char> >::regex_traits<char,boost::w32_regex_traits<char> >()  Line 75 + 0xf bytes    C++
test.exe!boost::regex_traits_wrapper<boost::regex_traits<char,boost::w32_regex_traits<char> > >::regex_traits_wrapper<boost::regex_traits<char,boost::w32_regex_traits<char> > >()  Line 169 + 0xf bytes    C++
test.exe!boost::re_detail::regex_data<char,boost::regex_traits<char,boost::w32_regex_traits<char> > >::regex_data<char,boost::regex_traits<char,boost::w32_regex_traits<char> > >()  Line 61 + 0x4a bytes    C++
test.exe!boost::re_detail::basic_regex_implementation<char,boost::regex_traits<char,boost::w32_regex_traits<char> > >::basic_regex_implementation<char,boost::regex_traits<char,boost::w32_regex_traits<char> > >()  Line 96 + 0xf bytes    C++
test.exe!boost::basic_regex<char,boost::regex_traits<char,boost::w32_regex_traits<char> > >::do_assign(const char * p1=0x00f27126, const char * p2=0x00f27126, unsigned int f=0)  Line 542 + 0x22 bytes    C++
test.exe!boost::basic_regex<char,boost::regex_traits<char,boost::w32_regex_traits<char> > >::assign(const char * p1=0x00f27126, const char * p2=0x00f27126, unsigned int f=0)  Line 274    C++
test.exe!boost::basic_regex<char,boost::regex_traits<char,boost::w32_regex_traits<char> > >::assign(const char * p=0x00f27126, unsigned int f=0)  Line 259    C++
test.exe!main(int argc=1, const char * * argv=0x00384eb0)  Line 119 + 0xf bytes    C++
test.exe!__tmainCRTStartup()  Line 582 + 0x19 bytes    C
test.exe!mainCRTStartup()  Line 399    C
kernel32.dll!7c817077()    
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]    




--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Lazin
Дата 7.9.2009, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



может стоит попробовать сделать так:
Код

try
{
  boost::regex rx("");
}
catch(boost::bad_expression const& e)
{
  ...
?

Добавлено через 4 минуты и 31 секунду
по идее, boost::regex будет кидать exception при попытке создать рег.выр. из пустой строки
кидает он в этом случае bad_expression, что-бы оно обрабатывалось нужно подключить какой-то заголовочный файл, посмотри документацию
PM MAIL Skype GTalk   Вверх
andrew_121
Дата 7.9.2009, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Цитата(Lazin @  7.9.2009,  12:36 Найти цитируемый пост)
может стоит попробовать сделать так:

сделал. даже буст пересобрал. все то же.
Код

int main(int argc, const char** argv) {
    try {
        boost::regex rx("");
    } catch(boost::bad_expression const& e) {
        std::cout << e.what() << std::endl;
    } catch (boost::exception& e) {
        std::cout << diagnostic_information(e) << std::endl;
    } catch (std::exception& e) {
        std::cout << e.what() << std::endl;
    } catch (...) {
        std::cout << "Error!" << std::endl;
    }
   return 0;
}


Цитата(Lazin @  7.9.2009,  12:36 Найти цитируемый пост)
по идее, boost::regex будет кидать exception при попытке создать рег.выр. из пустой строки

это я для примера рег.выр. убрал.

что еще попробовать?

Это сообщение отредактировал(а) andrew_121 - 7.9.2009, 14:19


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Lazin
Дата 7.9.2009, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



возможно дело в том, что библиотека boost.regex и проект собирались с разными настройками, к примеру, приложение может использовать отладочную версию crt, а библиотека собиралась с обычной, или библиотека использует стат. версию CRT, а приложение - динамическую.

Цитата(andrew_121 @  7.9.2009,  14:01 Найти цитируемый пост)
это я для примера рег.выр. убрал.

ну тогда спасибо, что потратил мое время smile 
PM MAIL Skype GTalk   Вверх
andrew_121
Дата 7.9.2009, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Цитата(Lazin @  7.9.2009,  14:58 Найти цитируемый пост)
ну тогда спасибо, что потратил мое время

я не нарочно smile

Добавлено @ 15:29
Цитата(Lazin @  7.9.2009,  14:58 Найти цитируемый пост)
возможно дело в том, что библиотека boost.regex и проект собирались с разными настройками, к примеру, приложение может использовать отладочную версию crt, а библиотека собиралась с обычной, или библиотека использует стат. версию CRT, а приложение - динамическую.

Приложение написано с использованием boost. Все остальное работает. И все библиотеки boost собирались единажды, с одной командной строкой.
Когда мне по окончанию проекта понадобилось добавить boost.regex, всплыла эта ошибка. Я, для того чтоб ее локализовать, собрал этот пример в отдельном проекте. Проект - debugboost сам подцепил библиотеки, ему виднее, наверное тоже debug.
Не хотелось бы из-за двух регулярок, использовать что-то стороннее.

Это сообщение отредактировал(а) andrew_121 - 7.9.2009, 15:29


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
vinter
Дата 7.9.2009, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



в примере ошибки нет, исключений там быть никаких не должно. Ройся в настройках проекта.


--------------------
Мой блог
PM MAIL WWW   Вверх
andrew_121
Дата 7.9.2009, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Цитата(vinter @  7.9.2009,  15:32 Найти цитируемый пост)
Ройся в настройках проекта. 

А на что обратить внимание? просто я начинающий в плане работы с MSVC


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Cheloveck
Дата 7.9.2009, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 3
Всего: 32



Цитата(andrew_121 @  7.9.2009,  16:22 Найти цитируемый пост)
Приложение написано с использованием boost. Все остальное работает. И все библиотеки boost собирались единажды, с одной командной строкой.

не все библиотеки boost используют либы. Многие просто в хедерах, как то spirit, например.


--------------------
user posted image
PM Jabber   Вверх
andrew_121
Дата 7.9.2009, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Cheloveck, я про те что собраны как либы.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1133 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.