Собственно subj. В программе активно используется системный вызов socketpair(), в один ужасный момент socketpair() создаёт сокет, в котором уже есть какие-то данные. Естественно на данные в этом сокете завязана некоторая логика, которая никак не ожидает получить оттуда, то что во второй конец не отправляли. В этой же программе активно используется вызов getaddrinfo(). И такое ощущение, что в качестве непридвиденных данных в сокете от socketpair() оказывается то, что писал в свой сокет getaddrinfo(). В частности там виден домен (без точки) и еще несколько нечитаемых байт. Гарантированно, что в этот сокет пишу не я.
Гарантирует ли вообще socketpair(), что буфер вновь созданных сокетов будет пустым? Может ли баг в программе вызвать такое поведение (если учесть что записи этих данных в сокет точно не производится), например из-за повреждения памяти?