Skip to content
This repository has been archived by the owner on Jun 20, 2024. It is now read-only.

"server_test.go" fails with "index out of range" #934

Closed
inercia opened this issue Jun 16, 2015 · 5 comments
Closed

"server_test.go" fails with "index out of range" #934

inercia opened this issue Jun 16, 2015 · 5 comments
Assignees
Milestone

Comments

@inercia
Copy link
Contributor

inercia commented Jun 16, 2015

When running with GOMAXPROCS=4, server_test.go can fail with a index out of range error

$ make tests
echo "mode: count" > profile.cov
fail=0 ;                                                                              \
    for dir in $(find . -type f -name '*_test.go' | xargs -n1 dirname | sort -u); do     \
        output=$(mktemp cover.XXXXXXXXXX) ;                                              \
        if ! go test -cpu 4 -tags netgo -covermode=count -coverprofile=$output $dir ; then     \
            fail=1 ;                                                                          \
        fi ;                                                                                  \
        if [ -f $output ]; then                                                          \
            tail -n +2 <$output >>profile.cov;                                           \
            rm $output;                                                                  \
        fi                                                                                \
    done ;                                                                                \
    exit $fail
ok      github.com/weaveworks/weave/common  0.027s  coverage: 73.3% of statements
ok      github.com/weaveworks/weave/ipam    6.024s  coverage: 67.5% of statements
ok      github.com/weaveworks/weave/ipam/paxos  2.955s  coverage: 96.4% of statements
ok      github.com/weaveworks/weave/ipam/ring   1.324s  coverage: 90.4% of statements
ok      github.com/weaveworks/weave/ipam/space  0.003s  coverage: 71.6% of statements
INFO: 2015/06/16 14:05:46.950221 TestAddrs starting
INFO: 2015/06/16 14:05:46.950339 TestCacheLength starting
INFO: 2015/06/16 14:05:46.952201 TestCacheEntries starting
INFO: 2015/06/16 14:05:46.952210 Checking cache consistency
WARNING: 2015/06/16 14:05:46.952474 [cache] no valid TTL could be calculated
INFO: 2015/06/16 14:05:46.952510 TestPrune starting
INFO: 2015/06/16 14:05:46.952563 [zonedb] Using mDNS on all interfaces
INFO: 2015/06/16 14:05:46.954308 [http] Adding test1.weave.local. -> 10.2.2.1
INFO: 2015/06/16 14:05:46.954578 [http] Adding test1.weave.local. -> 10.2.2.1
INFO: 2015/06/16 14:05:46.954798 [http] Adding test1.weave.local. -> 10.2.2.1
INFO: 2015/06/16 14:05:46.954987 [http] Adding test1.weave.local. -> 10.2.2.2
INFO: 2015/06/16 14:05:46.955191 [http] Deleting ID deadbeef, IP 10.2.2.1, FQDN *
INFO: 2015/06/16 14:05:46.955443 [http] Deleting ID other, IP 10.2.2.1, FQDN *
INFO: 2015/06/16 14:05:46.955576 [http] Deleting ID deadbeef, IP 10.2.2.2, FQDN *
2015/06/16 14:05:46 TestSimpleQuery starting
2015/06/16 14:05:46 Got address response test1.weave. addr 9.8.7.6
2015/06/16 14:05:47 TestParallelQuery starting
2015/06/16 14:05:47 Got address response test1.weave. addr 9.8.7.6
2015/06/16 14:05:47 Got address response test1.weave. addr 9.8.7.6
INFO: 2015/06/16 14:05:48.259230 TestServerSimpleQuery starting
INFO: 2015/06/16 14:06:01.167858 TestServerDbCacheInvalidation starting
INFO: 2015/06/16 14:06:01.167900 [zonedb] Using mDNS on all interfaces
INFO: 2015/06/16 14:06:01.168166 [dns] Upstream server(s): &{Servers:[127.0.0.1] Search:[] Port:41357 Ndots:0 Timeout:0 Attempts:0}
INFO: 2015/06/16 14:06:01.168179 [dns] Cache: 1024 entries
INFO: 2015/06/16 14:06:01.168299 [dns] Listening for DNS on :44777 (TCP)
INFO: 2015/06/16 14:06:01.168308 [dns] Listening for DNS on :44777 (UDP)
INFO: 2015/06/16 14:06:01.277953 [dns msgid 46809] No results for type A query for 'wrong.weave.local.' [caching no-local]
INFO: 2015/06/16 14:06:01.279265 [dns] Server exiting...
INFO: 2015/06/16 14:06:01.279334 TestServerCacheExpiration starting
INFO: 2015/06/16 14:06:01.279382 [zonedb] Using mDNS on all interfaces
INFO: 2015/06/16 14:06:01.279390 [zonedb] Using mDNS on all interfaces
INFO: 2015/06/16 14:06:01.279521 [dns] Upstream server(s): &{Servers:[10.1.0.2] Search:[travis] Port:53 Ndots:1 Timeout:5 Attempts:2}
INFO: 2015/06/16 14:06:01.279532 [dns] Cache: 1024 entries
INFO: 2015/06/16 14:06:01.279606 [dns] Listening for DNS on :43275 (UDP)
INFO: 2015/06/16 14:06:01.279650 [dns] Listening for DNS on :43275 (TCP)
INFO: 2015/06/16 14:06:01.379898 [dns msgid 34969] No results for type A query for 'first.weave.local.' [caching no-local]
INFO: 2015/06/16 14:06:01.380736 [dns msgid 40689] No results for type A query for 'first.weave.local.' [caching no-local]
INFO: 2015/06/16 14:06:01.381091 [dns] Server exiting...
INFO: 2015/06/16 14:06:01.381135 TestServerCacheRefresh starting
INFO: 2015/06/16 14:06:01.381181 [zonedb] Using mDNS on all interfaces
INFO: 2015/06/16 14:06:01.381189 [zonedb] Using mDNS on all interfaces
INFO: 2015/06/16 14:06:01.381332 [dns] Upstream server(s): &{Servers:[10.1.0.2] Search:[travis] Port:53 Ndots:1 Timeout:5 Attempts:2}
INFO: 2015/06/16 14:06:01.381344 [dns] Cache: 1024 entries
INFO: 2015/06/16 14:06:01.381423 [dns] Listening for DNS on :56600 (UDP)
INFO: 2015/06/16 14:06:01.381470 [dns] Listening for DNS on :56600 (TCP)
INFO: 2015/06/16 14:06:01.482150 [dns msgid 63054] No results for type A query for 'second.weave.local.' [caching no-local]
INFO: 2015/06/16 14:06:01.482922 [dns msgid 49772] No results for type A query for 'first.weave.local.' [caching no-local]
INFO: 2015/06/16 14:06:01.483453 [dns] Server exiting...
INFO: 2015/06/16 14:06:01.483535 TestUDPDNSServer starting
INFO: 2015/06/16 14:06:01.483542 [zonedb] Using mDNS on all interfaces
INFO: 2015/06/16 14:06:01.484831 [dns] Upstream server(s): &{Servers:[127.0.0.1] Search:[] Port:48581 Ndots:0 Timeout:0 Attempts:0}
INFO: 2015/06/16 14:06:01.484840 [dns] Cache: disabled
INFO: 2015/06/16 14:06:01.484939 [dns] Listening for DNS on :42498 (UDP)
INFO: 2015/06/16 14:06:01.485027 [dns] Listening for DNS on :42498 (TCP)
INFO: 2015/06/16 14:06:02.085799 [dns msgid 36034] No results for type A query for 'fail.weave.local.' [caching no-local]
INFO: 2015/06/16 14:06:02.586719 [dns msgid 32046] No results for type PTR query for '4.3.2.1.in-addr.arpa.' [caching no-local]
INFO: 2015/06/16 14:06:02.586736 [dns msgid 32046] -> sending to fallback server
WARNING: 2015/06/16 14:06:02.586980 [dns msgid 32046] Failed lookup for external name 4.3.2.1.in-addr.arpa.
INFO: 2015/06/16 14:06:03.088559 [dns msgid 15761] No results for type PTR query for '8.8.8.8.in-addr.arpa.' [caching no-local]
INFO: 2015/06/16 14:06:03.088574 [dns msgid 15761] -> sending to fallback server
INFO: 2015/06/16 14:06:03.089294 [dns] Server exiting...
INFO: 2015/06/16 14:06:03.089462 TestTCPDNSServer starting
INFO: 2015/06/16 14:06:03.089476 [zonedb] Using mDNS on all interfaces
INFO: 2015/06/16 14:06:03.090112 [dns] Upstream server(s): &{Servers:[127.0.0.1] Search:[] Port:33783 Ndots:0 Timeout:0 Attempts:0}
INFO: 2015/06/16 14:06:03.090123 [dns] Cache: disabled
INFO: 2015/06/16 14:06:03.090197 [dns] Listening for DNS on :51839 (UDP)
INFO: 2015/06/16 14:06:03.090245 [dns] Listening for DNS on :51839 (TCP)
INFO: 2015/06/16 14:06:03.210170 [dns] Server exiting...
panic: runtime error: index out of range

goroutine 337 [running]:
github.com/weaveworks/weave/nameserver.func·036(0x2b1a83d3c4e0, 0xc208290180, 0xc208348cf0)
    /home/travis/gopath/src/github.com/weaveworks/weave/nameserver/server_test.go:160 +0x3dc
github.com/miekg/dns.HandlerFunc.ServeDNS(0xc20824c480, 0x2b1a83d3c4e0, 0xc208290180, 0xc208348cf0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:78 +0x41
github.com/miekg/dns.(*Server).serve(0xc2081f62a0, 0x2b1a83d3a880, 0xc2080ee7e0, 0x2b1a83d3a908, 0xc20824c480, 0xc208252000, 0xc, 0x200, 0xc2081cc1b8, 0xc2080e8100, ...)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:479 +0x6c6
created by github.com/miekg/dns.(*Server).serveUDP
    /home/travis/gopath/src/github.com/miekg/dns/server.go:437 +0x29a

goroutine 1 [chan receive]:
testing.RunTests(0x9d5a98, 0xb3d860, 0x13, 0x13, 0xc20802fe01)
    /usr/local/go/src/testing/testing.go:556 +0xad6
testing.(*M).Run(0xc20800a370, 0xb48860)
    /usr/local/go/src/testing/testing.go:485 +0x6c
main.main()
    github.com/weaveworks/weave/nameserver/_test/_testmain.go:154 +0x291

goroutine 5 [syscall]:
os/signal.loop()
    /usr/local/go/src/os/signal/signal_unix.go:21 +0x1f
created by os/signal.init·1
    /usr/local/go/src/os/signal/signal_unix.go:27 +0x35

goroutine 256 [IO wait]:
net.(*pollDesc).Wait(0xc2081e6ca0, 0x72, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2081e6ca0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc2081e6c40, 0xc20828d000, 0x200, 0x200, 0x0, 0x2b1a83d39190, 0xc2081a63f8)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2080360f0, 0xc20828d000, 0x200, 0x200, 0x0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/net.go:121 +0xdc
github.com/miekg/dns.(*Conn).Read(0xc20835a320, 0xc20828d000, 0x200, 0x200, 0x200, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:258 +0x4a4
github.com/miekg/dns.(*Conn).ReadMsg(0xc20835a320, 0xc208292510, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:203 +0x128
github.com/miekg/dns.(*Client).exchange(0xc20835a2d0, 0xc208292510, 0xc2081a6370, 0xc, 0x0, 0x0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:181 +0x362
github.com/miekg/dns.(*Client).Exchange(0xc20835a2d0, 0xc208292510, 0xc2081a6370, 0xc, 0x1, 0x0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:108 +0x83
created by github.com/miekg/dns.(*Server).Shutdown
    /home/travis/gopath/src/github.com/miekg/dns/server.go:357 +0x4cd

goroutine 18 [IO wait]:
net.(*pollDesc).Wait(0xc208012e60, 0x72, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208012e60, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).accept(0xc208012e00, 0x0, 0x2b1a83d39190, 0xc20808a2b8)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_unix.go:419 +0x40b
net.(*TCPListener).AcceptTCP(0xc2080360b0, 0xc2080c7d58, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/tcpsock_posix.go:234 +0x4e
net.(*TCPListener).Accept(0xc2080360b0, 0x0, 0x0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/tcpsock_posix.go:244 +0x4c
net/http.(*Server).Serve(0xc2080f46c0, 0x2b1a83d3aa08, 0xc2080360b0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/http/server.go:1728 +0x92
net/http.Serve(0x2b1a83d3aa08, 0xc2080360b0, 0x0, 0x0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/http/server.go:1606 +0xa1
github.com/weaveworks/weave/nameserver.ServeHTTP(0x2b1a83d3aa08, 0xc2080360b0, 0x0, 0x0, 0xc2080489c0, 0x0)
    github.com/weaveworks/weave/nameserver/_test/_obj_test/http.go:153 +0x885
created by github.com/weaveworks/weave/nameserver.TestHttp
    /home/travis/gopath/src/github.com/weaveworks/weave/nameserver/http_test.go:45 +0x4e1

goroutine 305 [IO wait]:
net.(*pollDesc).Wait(0xc2080c2060, 0x72, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2080c2060, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc2080c2000, 0xc208298000, 0x2, 0xffff, 0x0, 0x2b1a83d39190, 0xc2080c6090)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2080ec098, 0xc208298000, 0x2, 0xffff, 0x40e301, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/net.go:121 +0xdc
github.com/miekg/dns.(*Conn).Read(0xc2081c2000, 0xc208298000, 0xffff, 0xffff, 0xffff, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:231 +0x150
github.com/miekg/dns.(*Conn).ReadMsg(0xc2081c2000, 0xc208348000, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:203 +0x128
github.com/miekg/dns.(*Client).exchange(0xc2081c2050, 0xc208348000, 0xc2081d20a0, 0xa, 0x0, 0x0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:181 +0x362
github.com/miekg/dns.(*Client).Exchange(0xc2081c2050, 0xc208348000, 0xc2081d20a0, 0xa, 0xffffffffffffff01, 0xb, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:108 +0x83
created by github.com/miekg/dns.(*Server).Shutdown
    /home/travis/gopath/src/github.com/miekg/dns/server.go:357 +0x4cd

goroutine 21 [IO wait]:
net.(*pollDesc).Wait(0xc2080c21b0, 0x72, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2080c21b0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc2080c2150, 0xc2080f6000, 0x1000, 0x1000, 0x0, 0x2b1a83d39190, 0xc208035738)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2080ec038, 0xc2080f6000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/net.go:121 +0xdc
net/http.noteEOFReader.Read(0x2b1a83d3bd48, 0xc2080ec038, 0xc20803a108, 0xc2080f6000, 0x1000, 0x1000, 0xc208091880, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/http/transport.go:1270 +0x6e
net/http.(*noteEOFReader).Read(0xc20808dda0, 0xc2080f6000, 0x1000, 0x1000, 0xc208015b00, 0x0, 0x0)
    <autogenerated>:125 +0xd4
bufio.(*Reader).fill(0xc2080d24e0)
    /usr/local/go/src/bufio/bufio.go:97 +0x1ce
bufio.(*Reader).Peek(0xc2080d24e0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0)
    /usr/local/go/src/bufio/bufio.go:132 +0xf0
net/http.(*persistConn).readLoop(0xc20803a0b0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/http/transport.go:842 +0xa4
created by net/http.(*Transport).dialConn
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/http/transport.go:660 +0xc9f

goroutine 22 [select]:
net/http.(*persistConn).writeLoop(0xc20803a0b0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/http/transport.go:945 +0x41d
created by net/http.(*Transport).dialConn
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/http/transport.go:661 +0xcbc

goroutine 33 [IO wait]:
net.(*pollDesc).Wait(0xc2080debc0, 0x72, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2080debc0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc2080deb60, 0xc2080c8000, 0x1000, 0x1000, 0x0, 0x2b1a83d39190, 0xc208035710)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208036160, 0xc2080c8000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/net.go:121 +0xdc
net/http.(*liveSwitchReader).Read(0xc20806b6c8, 0xc2080c8000, 0x1000, 0x1000, 0x2, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/http/server.go:214 +0xab
io.(*LimitedReader).Read(0xc2080da3c0, 0xc2080c8000, 0x1000, 0x1000, 0x2, 0x0, 0x0)
    /usr/local/go/src/io/io.go:408 +0xce
bufio.(*Reader).fill(0xc2080f4720)
    /usr/local/go/src/bufio/bufio.go:97 +0x1ce
bufio.(*Reader).ReadSlice(0xc2080f4720, 0xc2081b7b0a, 0x0, 0x0, 0x0, 0x0, 0x0)
    /usr/local/go/src/bufio/bufio.go:295 +0x257
bufio.(*Reader).ReadLine(0xc2080f4720, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
    /usr/local/go/src/bufio/bufio.go:324 +0x62
net/textproto.(*Reader).readLineSlice(0xc2080ee540, 0x0, 0x0, 0x0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/textproto/reader.go:55 +0x9e
net/textproto.(*Reader).ReadLine(0xc2080ee540, 0x0, 0x0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/textproto/reader.go:36 +0x4f
net/http.ReadRequest(0xc2080f4720, 0xc208049450, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/http/request.go:598 +0xcb
net/http.(*conn).readRequest(0xc20806b680, 0x0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/http/server.go:586 +0x26f
net/http.(*conn).serve(0xc20806b680)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/http/server.go:1162 +0x69e
created by net/http.(*Server).Serve
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/http/server.go:1751 +0x35e

goroutine 279 [select]:
github.com/miekg/dns.(*Server).Shutdown(0xc2081f62a0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:359 +0x657
github.com/weaveworks/weave/nameserver.(*mockedFallback).Stop(0xc2080e7500, 0x0, 0x0)
    /home/travis/gopath/src/github.com/weaveworks/weave/nameserver/mocks_test.go:380 +0x49
github.com/weaveworks/weave/nameserver.TestTCPDNSServer(0xc208078f30)
    /home/travis/gopath/src/github.com/weaveworks/weave/nameserver/server_test.go:248 +0x1ff1
testing.tRunner(0xc208078f30, 0xb3d9c8)
    /usr/local/go/src/testing/testing.go:447 +0xbf
created by testing.RunTests
    /usr/local/go/src/testing/testing.go:555 +0xa8b

goroutine 90 [chan send]:
github.com/miekg/dns.func·071()
    /home/travis/gopath/src/github.com/miekg/dns/server.go:352 +0xa6
created by github.com/miekg/dns.(*Server).Shutdown
    /home/travis/gopath/src/github.com/miekg/dns/server.go:353 +0x7cd

goroutine 254 [IO wait]:
net.(*pollDesc).Wait(0xc2080123e0, 0x72, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2080123e0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208012380, 0xc20828f800, 0x200, 0x200, 0x0, 0x2b1a83d39190, 0xc2080e06f0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2080ec048, 0xc20828f800, 0x200, 0x200, 0x0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/net.go:121 +0xdc
github.com/miekg/dns.(*Conn).Read(0xc2080f05f0, 0xc20828f800, 0x200, 0x200, 0x200, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:258 +0x4a4
github.com/miekg/dns.(*Conn).ReadMsg(0xc2080f05f0, 0xc208292480, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:203 +0x128
github.com/miekg/dns.(*Client).exchange(0xc20835a280, 0xc208292480, 0xc2081a6340, 0xa, 0x0, 0x0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:181 +0x362
github.com/miekg/dns.(*Client).Exchange(0xc20835a280, 0xc208292480, 0xc2081a6340, 0xa, 0x1, 0x67, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:108 +0x83
created by github.com/miekg/dns.(*Server).Shutdown
    /home/travis/gopath/src/github.com/miekg/dns/server.go:357 +0x4cd

goroutine 284 [IO wait]:
net.(*pollDesc).Wait(0xc2080deae0, 0x72, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2080deae0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).accept(0xc2080dea80, 0x0, 0x2b1a83d39190, 0xc208371c58)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_unix.go:419 +0x40b
net.(*TCPListener).AcceptTCP(0xc2081cc1d0, 0x2b1a83d3a9d8, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/tcpsock_posix.go:234 +0x4e
github.com/miekg/dns.(*Server).serveTCP(0xc2081f6380, 0xc2081cc1d0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:392 +0xfa
github.com/miekg/dns.(*Server).ActivateAndServe(0xc2081f6380, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:311 +0x2ef
github.com/weaveworks/weave/nameserver.func·033()
    /home/travis/gopath/src/github.com/weaveworks/weave/nameserver/mocks_test.go:423 +0x33
created by github.com/weaveworks/weave/nameserver.runLocalTCPServer
    /home/travis/gopath/src/github.com/weaveworks/weave/nameserver/mocks_test.go:425 +0x450

goroutine 115 [chan send]:
github.com/miekg/dns.func·071()
    /home/travis/gopath/src/github.com/miekg/dns/server.go:352 +0xa6
created by github.com/miekg/dns.(*Server).Shutdown
    /home/travis/gopath/src/github.com/miekg/dns/server.go:353 +0x7cd

goroutine 322 [IO wait]:
net.(*pollDesc).Wait(0xc208012840, 0x72, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208012840, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc2080127e0, 0xc208252200, 0x200, 0x200, 0x0, 0x2b1a83d39190, 0xc2080c6180)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2080ec008, 0xc208252200, 0x200, 0x200, 0x0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/net.go:121 +0xdc
github.com/miekg/dns.(*Conn).Read(0xc2080f0730, 0xc208252200, 0x200, 0x200, 0x200, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:258 +0x4a4
github.com/miekg/dns.(*Conn).ReadMsg(0xc2080f0730, 0xc2080e42d0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:203 +0x128
github.com/miekg/dns.(*Client).exchange(0xc2080f06e0, 0xc2080e42d0, 0xc2080c60c0, 0xa, 0x0, 0x0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:181 +0x362
github.com/miekg/dns.(*Client).Exchange(0xc2080f06e0, 0xc2080e42d0, 0xc2080c60c0, 0xa, 0x1, 0xb, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:108 +0x83
created by github.com/miekg/dns.(*Server).Shutdown
    /home/travis/gopath/src/github.com/miekg/dns/server.go:357 +0x4cd

goroutine 37 [chan send]:
github.com/miekg/dns.func·071()
    /home/travis/gopath/src/github.com/miekg/dns/server.go:352 +0xa6
created by github.com/miekg/dns.(*Server).Shutdown
    /home/travis/gopath/src/github.com/miekg/dns/server.go:353 +0x7cd

goroutine 306 [chan send]:
github.com/miekg/dns.func·071()
    /home/travis/gopath/src/github.com/miekg/dns/server.go:350 +0x5a
created by github.com/miekg/dns.(*Server).Shutdown
    /home/travis/gopath/src/github.com/miekg/dns/server.go:353 +0x7cd

goroutine 39 [chan send]:
github.com/miekg/dns.func·071()
    /home/travis/gopath/src/github.com/miekg/dns/server.go:352 +0xa6
created by github.com/miekg/dns.(*Server).Shutdown
    /home/travis/gopath/src/github.com/miekg/dns/server.go:353 +0x7cd

goroutine 281 [select]:
github.com/weaveworks/weave/nameserver.(*MDNSClient).actorLoop(0xc2080e6fc0, 0xc208038c00)
    github.com/weaveworks/weave/nameserver/_test/_obj_test/mdns_client.go:324 +0x37c
created by github.com/weaveworks/weave/nameserver.(*MDNSClient).Start
    github.com/weaveworks/weave/nameserver/_test/_obj_test/mdns_client.go:160 +0x3dd

goroutine 132 [select]:
github.com/weaveworks/weave/nameserver.(*MDNSClient).actorLoop(0xc2081c12c0, 0xc208038c60)
    github.com/weaveworks/weave/nameserver/_test/_obj_test/mdns_client.go:324 +0x37c
created by github.com/weaveworks/weave/nameserver.(*MDNSClient).Start
    github.com/weaveworks/weave/nameserver/_test/_obj_test/mdns_client.go:160 +0x3dd

goroutine 255 [chan send]:
github.com/miekg/dns.func·071()
    /home/travis/gopath/src/github.com/miekg/dns/server.go:350 +0x5a
created by github.com/miekg/dns.(*Server).Shutdown
    /home/travis/gopath/src/github.com/miekg/dns/server.go:353 +0x7cd

goroutine 131 [syscall]:
syscall.Syscall(0x2f, 0xe, 0xc20821fb48, 0x0, 0x26, 0x0, 0x0)
    /usr/local/go/src/syscall/asm_linux_amd64.s:21 +0x5
syscall.recvmsg(0xe, 0xc20821fb48, 0x0, 0x0, 0x0, 0x0)
    /usr/local/go/src/syscall/zsyscall_linux_amd64.go:1933 +0x57
syscall.Recvmsg(0xe, 0xc20828ce00, 0x200, 0x200, 0xc2082943c0, 0x28, 0x28, 0x0, 0x30, 0x0, ...)
    /usr/local/go/src/syscall/syscall_linux.go:519 +0x19b
net.(*netFD).readMsg(0xc2081e6700, 0xc20828ce00, 0x200, 0x200, 0xc2082943c0, 0x28, 0x28, 0x0, 0x0, 0x0, ...)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_unix.go:292 +0x42b
net.(*UDPConn).ReadMsgUDP(0xc2080ca160, 0xc20828ce00, 0x200, 0x200, 0xc2082943c0, 0x28, 0x28, 0x23123c6a, 0x2b1a83d264b0, 0x40e3a1, ...)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/udpsock_posix.go:96 +0x17f
github.com/miekg/dns.ReadFromSessionUDP(0xc2080ca160, 0xc20828ce00, 0x200, 0x200, 0x200, 0x200, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/udp.go:44 +0xca
github.com/miekg/dns.(*Server).readUDP(0xc2081f6460, 0xc2080ca160, 0x77359400, 0x0, 0x0, 0x0, 0x26, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:545 +0x14e
github.com/miekg/dns.(*Server).serveUDP(0xc2081f6460, 0xc2080ca160, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:427 +0x114
github.com/miekg/dns.(*Server).ActivateAndServe(0xc2081f6460, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:306 +0x28d
created by github.com/weaveworks/weave/nameserver.(*MDNSClient).Start
    github.com/weaveworks/weave/nameserver/_test/_obj_test/mdns_client.go:156 +0x371

goroutine 222 [syscall]:
syscall.Syscall(0x2f, 0x1e, 0xc20821ab48, 0x0, 0x26, 0x0, 0x0)
    /usr/local/go/src/syscall/asm_linux_amd64.s:21 +0x5
syscall.recvmsg(0x1e, 0xc20821ab48, 0x0, 0x0, 0x0, 0x0)
    /usr/local/go/src/syscall/zsyscall_linux_amd64.go:1933 +0x57
syscall.Recvmsg(0x1e, 0xc208232a00, 0x200, 0x200, 0xc2080eefc0, 0x28, 0x28, 0x0, 0x30, 0x0, ...)
    /usr/local/go/src/syscall/syscall_linux.go:519 +0x19b
net.(*netFD).readMsg(0xc2080df260, 0xc208232a00, 0x200, 0x200, 0xc2080eefc0, 0x28, 0x28, 0x0, 0x0, 0x0, ...)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_unix.go:292 +0x42b
net.(*UDPConn).ReadMsgUDP(0xc2080361b0, 0xc208232a00, 0x200, 0x200, 0xc2080eefc0, 0x28, 0x28, 0x2312139f, 0x2b1a83d26960, 0x40e3a1, ...)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/udpsock_posix.go:96 +0x17f
github.com/miekg/dns.ReadFromSessionUDP(0xc2080361b0, 0xc208232a00, 0x200, 0x200, 0x200, 0x200, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/udp.go:44 +0xca
github.com/miekg/dns.(*Server).readUDP(0xc2082b0460, 0xc2080361b0, 0x77359400, 0x0, 0x0, 0x0, 0x26, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:545 +0x14e
github.com/miekg/dns.(*Server).serveUDP(0xc2082b0460, 0xc2080361b0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:427 +0x114
github.com/miekg/dns.(*Server).ActivateAndServe(0xc2082b0460, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:306 +0x28d
created by github.com/weaveworks/weave/nameserver.(*MDNSClient).Start
    github.com/weaveworks/weave/nameserver/_test/_obj_test/mdns_client.go:156 +0x371

goroutine 98 [chan send]:
github.com/miekg/dns.func·071()
    /home/travis/gopath/src/github.com/miekg/dns/server.go:352 +0xa6
created by github.com/miekg/dns.(*Server).Shutdown
    /home/travis/gopath/src/github.com/miekg/dns/server.go:353 +0x7cd

goroutine 307 [IO wait]:
net.(*pollDesc).Wait(0xc2081e6610, 0x72, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2081e6610, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc2081e65b0, 0xc20828e400, 0x200, 0x200, 0x0, 0x2b1a83d39190, 0xc20822a0c8)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2080360c8, 0xc20828e400, 0x200, 0x200, 0x0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/net.go:121 +0xdc
github.com/miekg/dns.(*Conn).Read(0xc20835a1e0, 0xc20828e400, 0x200, 0x200, 0x200, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:258 +0x4a4
github.com/miekg/dns.(*Conn).ReadMsg(0xc20835a1e0, 0xc208348a20, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:203 +0x128
github.com/miekg/dns.(*Client).exchange(0xc2081c20a0, 0xc208348a20, 0xc2081d2160, 0xf, 0x0, 0x0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:181 +0x362
github.com/miekg/dns.(*Client).Exchange(0xc2081c20a0, 0xc208348a20, 0xc2081d2160, 0xf, 0x1, 0xc2080ec000, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:108 +0x83
created by github.com/miekg/dns.(*Server).Shutdown
    /home/travis/gopath/src/github.com/miekg/dns/server.go:357 +0x4cd

goroutine 262 [IO wait]:
net.(*pollDesc).Wait(0xc2080135d0, 0x72, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2080135d0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208013570, 0xc208252800, 0x200, 0x200, 0x0, 0x2b1a83d39190, 0xc2080e0978)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2080ec308, 0xc208252800, 0x200, 0x200, 0x0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/net.go:121 +0xdc
github.com/miekg/dns.(*Conn).Read(0xc2080f1ea0, 0xc208252800, 0x200, 0x200, 0x200, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:258 +0x4a4
github.com/miekg/dns.(*Conn).ReadMsg(0xc2080f1ea0, 0xc208348090, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:203 +0x128
github.com/miekg/dns.(*Client).exchange(0xc2080f1e50, 0xc208348090, 0xc2080e08f0, 0xa, 0x0, 0x0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:181 +0x362
github.com/miekg/dns.(*Client).Exchange(0xc2080f1e50, 0xc208348090, 0xc2080e08f0, 0xa, 0x1, 0xe7791f71e, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:108 +0x83
created by github.com/miekg/dns.(*Server).Shutdown
    /home/travis/gopath/src/github.com/miekg/dns/server.go:357 +0x4cd

goroutine 160 [syscall]:
syscall.Syscall(0x2f, 0x7, 0xc208210b28, 0x0, 0x9, 0x9, 0x1)
    /usr/local/go/src/syscall/asm_linux_amd64.s:21 +0x5
syscall.recvmsg(0x7, 0xc208210b28, 0x0, 0xc208210cd0, 0x0, 0x0)
    /usr/local/go/src/syscall/zsyscall_linux_amd64.go:1933 +0x57
syscall.Recvmsg(0x7, 0xc2082aa000, 0x200, 0x200, 0xc208254b40, 0x28, 0x28, 0x0, 0xc20824d220, 0x0, ...)
    /usr/local/go/src/syscall/syscall_linux.go:519 +0x19b
net.(*netFD).readMsg(0xc2081e6bd0, 0xc2082aa000, 0x200, 0x200, 0xc208254b40, 0x28, 0x28, 0x0, 0x0, 0x0, ...)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_unix.go:292 +0x42b
net.(*UDPConn).ReadMsgUDP(0xc2080ca2b8, 0xc2082aa000, 0x200, 0x200, 0xc208254b40, 0x28, 0x28, 0xc20a04a257, 0x2b1a83d26000, 0x40e3a1, ...)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/udpsock_posix.go:96 +0x17f
github.com/miekg/dns.ReadFromSessionUDP(0xc2080ca2b8, 0xc2082aa000, 0x200, 0x200, 0x200, 0x200, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/udp.go:44 +0xca
github.com/miekg/dns.(*Server).readUDP(0xc2081f68c0, 0xc2080ca2b8, 0x5f5e100, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:545 +0x14e
github.com/miekg/dns.(*Server).serveUDP(0xc2081f68c0, 0xc2080ca2b8, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:427 +0x114
github.com/miekg/dns.(*Server).ActivateAndServe(0xc2081f68c0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:306 +0x28d
github.com/weaveworks/weave/nameserver.func·032()
    /home/travis/gopath/src/github.com/weaveworks/weave/nameserver/mocks_test.go:400 +0x33
created by github.com/weaveworks/weave/nameserver.runLocalUDPServer
    /home/travis/gopath/src/github.com/weaveworks/weave/nameserver/mocks_test.go:402 +0x3a1

goroutine 143 [syscall]:
syscall.Syscall(0x2f, 0x36, 0xc208116b48, 0x0, 0x26, 0x0, 0x0)
    /usr/local/go/src/syscall/asm_linux_amd64.s:21 +0x5
syscall.recvmsg(0x36, 0xc208116b48, 0x0, 0x0, 0x0, 0x0)
    /usr/local/go/src/syscall/zsyscall_linux_amd64.go:1933 +0x57
syscall.Recvmsg(0x36, 0xc208252e00, 0x200, 0x200, 0xc2080e6ea0, 0x28, 0x28, 0x0, 0x30, 0x0, ...)
    /usr/local/go/src/syscall/syscall_linux.go:519 +0x19b
net.(*netFD).readMsg(0xc2081e6a80, 0xc208252e00, 0x200, 0x200, 0xc2080e6ea0, 0x28, 0x28, 0x0, 0x0, 0x0, ...)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_unix.go:292 +0x42b
net.(*UDPConn).ReadMsgUDP(0xc2080ca238, 0xc208252e00, 0x200, 0x200, 0xc2080e6ea0, 0x28, 0x28, 0x23125bab, 0x2b1a83d26000, 0x40e3a1, ...)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/udpsock_posix.go:96 +0x17f
github.com/miekg/dns.ReadFromSessionUDP(0xc2080ca238, 0xc208252e00, 0x200, 0x200, 0x200, 0x200, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/udp.go:44 +0xca
github.com/miekg/dns.(*Server).readUDP(0xc2081f67e0, 0xc2080ca238, 0x77359400, 0x0, 0x0, 0x0, 0x26, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:545 +0x14e
github.com/miekg/dns.(*Server).serveUDP(0xc2081f67e0, 0xc2080ca238, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:427 +0x114
github.com/miekg/dns.(*Server).ActivateAndServe(0xc2081f67e0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:306 +0x28d
created by github.com/weaveworks/weave/nameserver.(*MDNSClient).Start
    github.com/weaveworks/weave/nameserver/_test/_obj_test/mdns_client.go:156 +0x371

goroutine 144 [select]:
github.com/weaveworks/weave/nameserver.(*MDNSClient).actorLoop(0xc2082540f0, 0xc208038de0)
    github.com/weaveworks/weave/nameserver/_test/_obj_test/mdns_client.go:324 +0x37c
created by github.com/weaveworks/weave/nameserver.(*MDNSClient).Start
    github.com/weaveworks/weave/nameserver/_test/_obj_test/mdns_client.go:160 +0x3dd

goroutine 172 [IO wait]:
net.(*pollDesc).Wait(0xc208012a70, 0x72, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208012a70, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208012a10, 0xc208252400, 0x200, 0x200, 0x0, 0x2b1a83d39190, 0xc20808b7f8)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2080ec0d0, 0xc208252400, 0x200, 0x200, 0x0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/net.go:121 +0xdc
github.com/miekg/dns.(*Conn).Read(0xc2080f0fa0, 0xc208252400, 0x200, 0x200, 0x200, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:258 +0x4a4
github.com/miekg/dns.(*Conn).ReadMsg(0xc2080f0fa0, 0xc2080e53b0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:203 +0x128
github.com/miekg/dns.(*Client).exchange(0xc2080f0f50, 0xc2080e53b0, 0xc20808b760, 0xa, 0x0, 0x0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:181 +0x362
github.com/miekg/dns.(*Client).Exchange(0xc2080f0f50, 0xc2080e53b0, 0xc20808b760, 0xa, 0x1, 0x468284, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:108 +0x83
created by github.com/miekg/dns.(*Server).Shutdown
    /home/travis/gopath/src/github.com/miekg/dns/server.go:357 +0x4cd

goroutine 273 [syscall]:
syscall.Syscall(0x2f, 0x21, 0xc208118b28, 0x0, 0x3c, 0x0, 0x0)
    /usr/local/go/src/syscall/asm_linux_amd64.s:21 +0x5
syscall.recvmsg(0x21, 0xc208118b28, 0x0, 0x0, 0x0, 0x0)
    /usr/local/go/src/syscall/zsyscall_linux_amd64.go:1933 +0x57
syscall.Recvmsg(0x21, 0xc208232c00, 0x200, 0x200, 0xc2080ef110, 0x28, 0x28, 0x0, 0x30, 0x0, ...)
    /usr/local/go/src/syscall/syscall_linux.go:519 +0x19b
net.(*netFD).readMsg(0xc2080df500, 0xc208232c00, 0x200, 0x200, 0xc2080ef110, 0x28, 0x28, 0x0, 0x0, 0x0, ...)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_unix.go:292 +0x42b
net.(*UDPConn).ReadMsgUDP(0xc2080361f8, 0xc208232c00, 0x200, 0x200, 0xc2080ef110, 0x28, 0x28, 0x549dca5, 0x2b1a83d26960, 0x40e3a1, ...)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/udpsock_posix.go:96 +0x17f
github.com/miekg/dns.ReadFromSessionUDP(0xc2080361f8, 0xc208232c00, 0x200, 0x200, 0x200, 0x200, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/udp.go:44 +0xca
github.com/miekg/dns.(*Server).readUDP(0xc2082b0620, 0xc2080361f8, 0x5f5e100, 0x0, 0x0, 0x0, 0x3c, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:545 +0x14e
github.com/miekg/dns.(*Server).serveUDP(0xc2082b0620, 0xc2080361f8, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:427 +0x114
github.com/miekg/dns.(*Server).ActivateAndServe(0xc2082b0620, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:306 +0x28d
github.com/weaveworks/weave/nameserver.func·032()
    /home/travis/gopath/src/github.com/weaveworks/weave/nameserver/mocks_test.go:400 +0x33
created by github.com/weaveworks/weave/nameserver.runLocalUDPServer
    /home/travis/gopath/src/github.com/weaveworks/weave/nameserver/mocks_test.go:402 +0x3a1

goroutine 282 [syscall]:
syscall.Syscall(0x2f, 0x18, 0xc208213b48, 0x0, 0x7, 0x7, 0x1)
    /usr/local/go/src/syscall/asm_linux_amd64.s:21 +0x5
syscall.recvmsg(0x18, 0xc208213b48, 0x0, 0xc208213cf0, 0x0, 0x0)
    /usr/local/go/src/syscall/zsyscall_linux_amd64.go:1933 +0x57
syscall.Recvmsg(0x18, 0xc20828d200, 0x200, 0x200, 0xc208294690, 0x28, 0x28, 0x0, 0xc208020cc0, 0x0, ...)
    /usr/local/go/src/syscall/syscall_linux.go:519 +0x19b
net.(*netFD).readMsg(0xc2080de930, 0xc20828d200, 0x200, 0x200, 0xc208294690, 0x28, 0x28, 0x0, 0x0, 0x0, ...)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_unix.go:292 +0x42b
net.(*UDPConn).ReadMsgUDP(0xc2081cc090, 0xc20828d200, 0x200, 0x200, 0xc208294690, 0x28, 0x28, 0xc2055e0502, 0x2b1a83d264b0, 0x40e3a1, ...)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/udpsock_posix.go:96 +0x17f
github.com/miekg/dns.ReadFromSessionUDP(0xc2081cc090, 0xc20828d200, 0x200, 0x200, 0x200, 0x200, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/udp.go:44 +0xca
github.com/miekg/dns.(*Server).readUDP(0xc2081f61c0, 0xc2081cc090, 0x77359400, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:545 +0x14e
github.com/miekg/dns.(*Server).serveUDP(0xc2081f61c0, 0xc2081cc090, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:427 +0x114
github.com/miekg/dns.(*Server).ActivateAndServe(0xc2081f61c0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:306 +0x28d
created by github.com/weaveworks/weave/nameserver.(*MDNSServer).Start
    github.com/weaveworks/weave/nameserver/_test/_obj_test/mdns_server.go:118 +0x66d

goroutine 283 [syscall]:
syscall.Syscall(0x2f, 0x19, 0xc20811ab28, 0x0, 0xc, 0x0, 0x0)
    /usr/local/go/src/syscall/asm_linux_amd64.s:21 +0x5
syscall.recvmsg(0x19, 0xc20811ab28, 0x0, 0x0, 0x0, 0x0)
    /usr/local/go/src/syscall/zsyscall_linux_amd64.go:1933 +0x57
syscall.Recvmsg(0x19, 0xc20828e600, 0x200, 0x200, 0xc2080ef380, 0x28, 0x28, 0x0, 0x30, 0x0, ...)
    /usr/local/go/src/syscall/syscall_linux.go:519 +0x19b
net.(*netFD).readMsg(0xc2080dea10, 0xc20828e600, 0x200, 0x200, 0xc2080ef380, 0x28, 0x28, 0x0, 0x0, 0x0, ...)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_unix.go:292 +0x42b
net.(*UDPConn).ReadMsgUDP(0xc2081cc1b8, 0xc20828e600, 0x200, 0x200, 0xc2080ef380, 0x28, 0x28, 0xc88ac80, 0x2b1a83d26960, 0x40e3a1, ...)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/udpsock_posix.go:96 +0x17f
github.com/miekg/dns.ReadFromSessionUDP(0xc2081cc1b8, 0xc20828e600, 0x200, 0x200, 0x200, 0x200, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/udp.go:44 +0xca
github.com/miekg/dns.(*Server).readUDP(0xc2081f62a0, 0xc2081cc1b8, 0x5f5e100, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:545 +0x14e
github.com/miekg/dns.(*Server).serveUDP(0xc2081f62a0, 0xc2081cc1b8, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:427 +0x114
github.com/miekg/dns.(*Server).ActivateAndServe(0xc2081f62a0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:306 +0x28d
github.com/weaveworks/weave/nameserver.func·032()
    /home/travis/gopath/src/github.com/weaveworks/weave/nameserver/mocks_test.go:400 +0x33
created by github.com/weaveworks/weave/nameserver.runLocalUDPServer
    /home/travis/gopath/src/github.com/weaveworks/weave/nameserver/mocks_test.go:402 +0x3a1

goroutine 185 [chan send]:
github.com/miekg/dns.func·071()
    /home/travis/gopath/src/github.com/miekg/dns/server.go:352 +0xa6
created by github.com/miekg/dns.(*Server).Shutdown
    /home/travis/gopath/src/github.com/miekg/dns/server.go:353 +0x7cd

goroutine 228 [IO wait]:
net.(*pollDesc).Wait(0xc2080c20d0, 0x72, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2080c20d0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc2080c2070, 0xc20828e000, 0x200, 0x200, 0x0, 0x2b1a83d39190, 0xc208034ea8)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2081cc018, 0xc20828e000, 0x200, 0x200, 0x0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/net.go:121 +0xdc
github.com/miekg/dns.(*Conn).Read(0xc2081d6050, 0xc20828e000, 0x200, 0x200, 0x200, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:258 +0x4a4
github.com/miekg/dns.(*Conn).ReadMsg(0xc2081d6050, 0xc208292000, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:203 +0x128
github.com/miekg/dns.(*Client).exchange(0xc2081d6000, 0xc208292000, 0xc208034626, 0xa, 0x0, 0x0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:181 +0x362
github.com/miekg/dns.(*Client).Exchange(0xc2081d6000, 0xc208292000, 0xc208034626, 0xa, 0x1, 0x0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:108 +0x83
created by github.com/miekg/dns.(*Server).Shutdown
    /home/travis/gopath/src/github.com/miekg/dns/server.go:357 +0x4cd

goroutine 188 [chan send]:
github.com/miekg/dns.func·071()
    /home/travis/gopath/src/github.com/miekg/dns/server.go:352 +0xa6
created by github.com/miekg/dns.(*Server).Shutdown
    /home/travis/gopath/src/github.com/miekg/dns/server.go:353 +0x7cd

goroutine 280 [syscall]:
syscall.Syscall(0x2f, 0x15, 0xc208067b48, 0x0, 0x7, 0x7, 0x1)
    /usr/local/go/src/syscall/asm_linux_amd64.s:21 +0x5
syscall.recvmsg(0x15, 0xc208067b48, 0x0, 0xc208067cf0, 0x0, 0x0)
    /usr/local/go/src/syscall/zsyscall_linux_amd64.go:1933 +0x57
syscall.Recvmsg(0x15, 0xc208253600, 0x200, 0x200, 0xc2080e75f0, 0x28, 0x28, 0x0, 0xc20824c660, 0x0, ...)
    /usr/local/go/src/syscall/syscall_linux.go:519 +0x19b
net.(*netFD).readMsg(0xc2080de850, 0xc208253600, 0x200, 0x200, 0xc2080e75f0, 0x28, 0x28, 0x0, 0x0, 0x0, ...)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_unix.go:292 +0x42b
net.(*UDPConn).ReadMsgUDP(0xc2081cc078, 0xc208253600, 0x200, 0x200, 0xc2080e75f0, 0x28, 0x28, 0xc2055cf8c3, 0x2b1a83d26000, 0x40e3a1, ...)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/udpsock_posix.go:96 +0x17f
github.com/miekg/dns.ReadFromSessionUDP(0xc2081cc078, 0xc208253600, 0x200, 0x200, 0x200, 0x200, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/udp.go:44 +0xca
github.com/miekg/dns.(*Server).readUDP(0xc2081f60e0, 0xc2081cc078, 0x77359400, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:545 +0x14e
github.com/miekg/dns.(*Server).serveUDP(0xc2081f60e0, 0xc2081cc078, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:427 +0x114
github.com/miekg/dns.(*Server).ActivateAndServe(0xc2081f60e0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:306 +0x28d
created by github.com/weaveworks/weave/nameserver.(*MDNSClient).Start
    github.com/weaveworks/weave/nameserver/_test/_obj_test/mdns_client.go:156 +0x371

goroutine 191 [chan send]:
github.com/miekg/dns.func·071()
    /home/travis/gopath/src/github.com/miekg/dns/server.go:352 +0xa6
created by github.com/miekg/dns.(*Server).Shutdown
    /home/travis/gopath/src/github.com/miekg/dns/server.go:353 +0x7cd

goroutine 223 [select]:
github.com/miekg/dns.(*Server).Shutdown(0xc2082b0460, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/server.go:359 +0x657
github.com/weaveworks/weave/nameserver.(*MDNSClient).actorLoop(0xc208295950, 0xc2080d2d80)
    github.com/weaveworks/weave/nameserver/_test/_obj_test/mdns_client.go:329 +0x195
created by github.com/weaveworks/weave/nameserver.(*MDNSClient).Start
    github.com/weaveworks/weave/nameserver/_test/_obj_test/mdns_client.go:160 +0x3dd

goroutine 239 [IO wait]:
net.(*pollDesc).Wait(0xc208012450, 0x72, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208012450, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc2080123f0, 0xc20828fc00, 0x200, 0x200, 0x0, 0x2b1a83d39190, 0xc2080e0798)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2080ec070, 0xc20828fc00, 0x200, 0x200, 0x0, 0x0, 0x0)
    /home/travis/.gimme/versions/go1.4.linux.amd64/src/net/net.go:121 +0xdc
github.com/miekg/dns.(*Conn).Read(0xc2080f0690, 0xc20828fc00, 0x200, 0x200, 0x200, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:258 +0x4a4
github.com/miekg/dns.(*Conn).ReadMsg(0xc2080f0690, 0xc208348900, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:203 +0x128
github.com/miekg/dns.(*Client).exchange(0xc2080f0640, 0xc208348900, 0xc2080e0710, 0xc, 0x0, 0x0, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:181 +0x362
github.com/miekg/dns.(*Client).Exchange(0xc2080f0640, 0xc208348900, 0xc2080e0710, 0xc, 0x1, 0xc208016400, 0x0, 0x0)
    /home/travis/gopath/src/github.com/miekg/dns/client.go:108 +0x83
created by github.com/miekg/dns.(*Server).Shutdown
    /home/travis/gopath/src/github.com/miekg/dns/server.go:357 +0x4cd
FAIL    github.com/weaveworks/weave/nameserver  16.269s
ok      github.com/weaveworks/weave/net 0.003s  coverage: 5.3% of statements
ok      github.com/weaveworks/weave/router  0.303s  coverage: 28.9% of statements
make: *** [tests] Error 1
@inercia inercia self-assigned this Jun 16, 2015
@inercia inercia added this to the 1.0 milestone Jun 16, 2015
@inercia
Copy link
Contributor Author

inercia commented Jun 16, 2015

The error is caused by the fallback server receiving a query with no questions. We could check the number of questions before processing the first one, but the real issue is why our mocked fallback server is receiving such a query...

@rade rade added the bug label Jun 16, 2015
@bboreham
Copy link
Contributor

Because dns.Server.Shutdown() sends a query with zero questions?

@inercia
Copy link
Contributor Author

inercia commented Jun 16, 2015

@bboreham Do you mean this?

@bboreham
Copy link
Contributor

Yes, I just figured out it's racy because the src.stopUDP <- true is in a different goroutine.

@inercia
Copy link
Contributor Author

inercia commented Jun 16, 2015

You are good at catching bugs!

I think the DNS library should filter these messages at least... anyway, I will modify the test and just ignore queries with zero questions.

@rade rade closed this as completed in #937 Jun 17, 2015
rade added a commit that referenced this issue Jun 17, 2015
Ignore empty queries (sent when the server is being shut down)

Fixes #934.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants