![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
что-то типо этого : http://liveworkspace.org/code/fd52a7513dec...3dcde4a17770fb2 с подправлениями : http://liveworkspace.org/code/ef6af8435e3c...b47dcebe05e8fbe Это сообщение отредактировал(а) mes - 22.3.2011, 12:15 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
теперь надо попробовать отделить карту от объекта реализации...
|
|||
|
||||
boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
![]() mes, а я уже два дня бьюсь над багом. только что понял в чем проблема. наверное баг в asio, или в TCP стеке. в общем, в один прекрасный момент, контекст пользователя на сервере, читает из сети такое:
а отправляется именно такое:
т.е. видно, что на часть архива накладывается другой архив. и не понятно откуда берется X в моем коде ошибок нет. проверил все множеством способов. осталось только снифером посмотреть что уходит, и что приходит. кстати, если между отправками с клиента вставить sleep на 1 мс - то ошибка пропадает. Добавлено через 5 минут и 12 секунд еще странно то, что это происходит в 95% случаев на 347 итерации ![]() Это сообщение отредактировал(а) boostcoder - 22.3.2011, 18:18 |
||||
|
|||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Очень похоже на повторное использование буфера до того, как была завершена работа с ним из другой задачи.
|
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
bsa, это исключено, т.к. буфер - локальная переменная функции. и кроме этой функции, никто не знает о существовании этой переменной.
мьютекс есть. лочит все тело. |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
boostcoder, я про буфер используемый в сетевых операциях asio.
|
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
упс... нагадили в тему mes`а.
попрошу модераторов почистить. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
зато хоть не так скучно.. а то почти один тут всегда ![]() все почему то стесняются заходить ![]() я так понимаю расчитываете на телепатов ![]() ![]() пока так : http://liveworkspace.org/code/57537e099697...96f3fd9f6782d15 |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
та нет. просто в коде проблем нет. это какое-то неведомое мне поведение TCP стека. dcpdump доказал, что данные искажены по пути. буду тему создавать... |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
я использую только API`шки asio. как их модно неправильно юзать, чтоб получить баг именно на 347 итерации. зы модераторов попросил почистить тему от этого поста: http://forum.vingrad.ru/index.php?showtopi...t&p=2317887 Добавлено @ 19:42 к сожалению нет :( пока нет.. Добавлено @ 19:45 в коде точно нет ошибок. все просто: 1. выделение памяти у ОС в shared_array 2. сериализация. 3. копирование в shared_array. 4. boost::asio::async_write() 5. tcpdump показывает что данные ушли. 6. на приеме данные искажены. sleep() между отправками минимум в 1мс полностью решает проблему. зы тему создаю. Добавлено через 5 минут и 49 секунд соврал. 347 - последняя итерация которая проходит благополучно. 348 - завал. Добавлено через 6 минут и 31 секунду т.е. проблема даже не в asio. Это сообщение отредактировал(а) boostcoder - 22.3.2011, 19:46 |
|||
|
||||
mes |
|
||||||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
как же тогда другие сетевые программы работают ? взять хотя бы тот же браузер... плюс искажены оно уж больно странно: "наступили на хвост"..
так может давятся данные не при отсылке, а при приеме.. Добавлено через 57 секунд
чуть чуть подправлено : http://liveworkspace.org/code/8636c3b991de...23ecccde4f233a8 |
||||||||||
|
|||||||||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
не знаю. но думаю это не важно, т.к. tcpdump читает не при помощи моего кода, и показывает несоответствие.
вот и я не могу понять в чем причина. впервые с таким поведением столкнулся. Добавлено через 1 минуту и 3 секунды зы не могу тему создать, потому что на скрине нужно кое-что написать и указать стрелочки. а я институт по рисования не закончил. ибо сходу не понял как это сделать в GIMP ![]() |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
mes, а у Вас случаем нет предположения о том, почему валится на 348`ой итерации, и почему sleep() решает проблему?
отсылаю это:
|
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
а если увеличить размер сериализуемой структуры, индекс сбойной итерации изменится ?
Добавлено через 1 минуту и 4 секунды инструмент кисточка на панели инструментов и дальше от руки мышкой выводите стрелочки ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |