Вы уже помогли что не нашли ее в багтрекере :) Баг обязательно зарепортаю. Я просто до сих пор терзаюсь сомнения что я где то облажался, потому что проблема таки серьезная. Как будто никто раньше и не юзал asio для udp.
увы мне его тоже хочется, но для себя я пока не нашел способа, и просто оборачиваю эту конструкцию в try/catch и в catch ничего не делаю. Подумал что вынеся проблему на общественное обозрение будет больше шансов обмозговать и решить ее.
Да, так верно лучше. Еще нужно глянуть можно ли это ошибку потом из er точно идентифицировать, что бы в функции обертки в случае этой ошибки глушить ее (подгоняем под Linux), а другие обрабатывать.
Возможно, в качестве временного решения, можно выделять буфер размером не меньше SO_MAX_MSG_SIZE. Я именно так и делал, поскольку в своё время тоже с удивлением не обнаружил прямого способа определить размер дейтаграммы для считывания.
С сокетами вообще разброд и шатание, по крайней мере под nix'ами и windows API заметно отличается.
Чего стоит только замечательная особенность winapi установить сокет как блокирующий и отсутствие возможности проверить блокирующий он или нет. Из-за этого нельзя полностью корректно реализовать метод isBlocking(), но, тем не менее, во всех библиотеках он реализован, просто может подкинуть несколько интересных сюрпризов под windows.
Такая же фигня в исходниках, которые шли с AVR-студией. Долго не мог понять почему программа так хаотично падает. Оказалось, что функции чтения по барабану размер буфера, передаваемый мной. Просто копирует все данные, что есть в буфер.
[asio::udp] Не кроссплатформенное поведение