Я пишу сетевое приложение, которое общается через Linux TCP-сокет. Недавно я заметил, что отправка системного вызова приводит к сбою приложения. Он работает нормально, когда оба узла установлены (сейчас я тестирую восстановление после сбоя). Но когда один узел отключен, второй падает, выполняя этот кусок кода.
fprintf(stderr, "out_tcp %d\n", out_tcp);
if(send(out_tcp, &packet, sizeof(packet), 0) == -1)
fprintf(stderr, "send TCP error");
fprintf(stderr, "after send");
Сокет уже подготовлен и подключен и выполнялся несколько раз, прежде чем отключился второй узел. Я ожидал, что этот код возвращает значение -1, но на выходе он выдает только «out_tcp 11», а затем приложение закрывается. Нет сообщения об ошибке, нет возвращаемого значения от отправки. Я запускаю его под Valgrind, он говорит, что приложение выходит нормально - без сообщения об ошибке / предупреждения.
Кто-нибудь знает, как его отладить? Инструменты для использования? Я застрял с этим, так как не получаю никакой информации.
Спасибо заранее
Харнен