![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| cupper |
|
||||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: 1 Всего: 1 |
Столкнулся с таким весьма странным поведением.
В начале приложения создается сессия
Далее есть процедура в которой создается хедер
и проиходит отправка мессаги
Так вот. При запуске на x32 системе все работает корректно. При запуске на x64 система наблюдается следующее поведение. Первая мессага отправляется. Далее если отправлять мессаги следом то они отправляються так же корректно. Но если между отправкой мессаг есть интервал > 10 - 15 секунду, то строчка
вызывает эксцепшен ConnectionAbortedException с текстом "Software caused connection abort". Это определение эксцепшена из Poco.
Если же проглотить этот эксцепшен и опять сделать вызов
то в этот раз мессага отправиться нормально. Я в полном недоумении. |
||||||||||||
|
|||||||||||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Ну так глянь сорцы
|
|||
|
||||
| cupper |
|
||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: 1 Всего: 1 |
Совсем странные вещи творятся в сорцах Poco. Методом упорной правки сорцов поко, перебилда, перезапуска, локализовал место возникновения экцепшена.
в функции sendRequest(req_post) при задержке более keepAlive происходит закрытие сокеты и его повторное открытие. Так вот в момент закрытия сокета
блоки try catch добавлены уже мною в процессе локализации места возникновения ошибки. При вызове функции close() которая является просто врапером
которая опять таки тоже врапер на функцию
вызывается функция
где poco_closesocket() девайн на системную функцию
так вот. если все тело функции SocketImpl::close() обернуть в блок try catch то в ней исключение не возникает. НО в функции Socket::close() которая вызывает функцию SocketImpl::close() возникает исключение которое ловиться на самом верху. Вопрос: как это возможно ? Проверить в нормально дебаге нет возможность, поэтому я и вставляю везде блоки try catch, после чего пересобираю poco, после чего пересобираю свою програмулину, и переношу и запускаю на другой системе. Поэтому я допускаю возможность что я упустил чтото тривиальное, но балин, ЧТО, я по косточкам разобрал стек вызовов, нету там больше ничего, но исключение возникает, и хоть убейся я не понимаю где и почему. |
||||||||||
|
|||||||||||
| cupper |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: 1 Всего: 1 |
и конечно же в тестовом примере это не воспроизводится. Правда тестовый пример был просто на http.
Поэтому продебажить нормально возможности нет. Как можно узнать что и откуда бросило исключение ? И что бы в релизной сборке работало это ? |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
эссертами не пользуешься?
|
|||
|
||||
| cupper |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: 1 Всего: 1 |
пользуюсь. Правда не понял к чему вы. Переустановил систему на x64, пересобираю либы, буду пробовать снова. |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
К тому, что надо проверять, анализировать то, что вернула какая-либо функция Это сообщение отредактировал(а) Alca - 22.9.2011, 11:55 |
|||
|
||||
| cupper |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: 1 Всего: 1 |
либа возвращала эксцепшен из пустого места, я хз что тут модно асертом проверить. Я все что можно позатыкал try catch блоками, но оно мезду ними умудрялось возникать. В итогде была була установленна x64 система, пересобраны либы, и... эксцепшен перестал возникать. |
||||
|
|||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
веришь в чудеса? |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |