Надо бы это проверить - в дебри ядра и библиотек лень лезть. Но
здесь - С++. Возможно, там recv вместо read на рядовом файле или
файле устройства генерит исключение.. Я и gdb напрямую с файлом устройства ни разу не пробовал: только через сокет, открытый openocd или st-link сервером.