Skip to content

net: ResolveIPAddr triggers glibc bug writing to wrong fd #6336

Closed
@gopherbot

Description

by arnaud.lb:

It seems that ResolveIPAddr() can write to random unrelated file descriptors in some
unknown conditions, at high concurrency.

The code at [1] does a lot a DNS requests in parallel. At the same time, it also does
short connections to a local unix socket (Dial, a few Writes, and Close).

After a few seconds, the unix socket's listener is seeing random garbage, presumably DNS
requests (I can sometimes see part of domain names in the garbage).

It looks very much like ResolveIPAddr() is writing to random file descriptor; or that it
is corrupting some buffer.

To reproduce, run ./server and ./client. The server should start receiving binary
garbage after a few seconds (and logs that to stderr).

go version go1.1.2 linux/amd64

[1] https://gist.github.com/arnaud-lb/3af01cdfb6b1ee38c122

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions