<p dir="auto">I seem to have broken the dragonfly builder after:</p>
<p dir="auto">syscall: allow nacl's fake network code to Listen twice on the same address<br>
<a href="https://go-review.googlesource.com/16650" rel="nofollow">https://go-review.googlesource.com/16650</a> (rev <a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/golang/go/commit/8ee90fad125ffa4a5cf12d04958d26f8611cb581/hovercard" href="https://github.com/golang/go/commit/8ee90fad125ffa4a5cf12d04958d26f8611cb581"><tt>8ee90fa</tt></a>)</p>
<p dir="auto">... which added a test to the net package, which dragonfly can't pass.</p>
<p dir="auto">Failure is:</p>
<p dir="auto"><a href="http://build.golang.org/log/732b7056b17948b06073dbe399de931765307152" rel="nofollow">http://build.golang.org/log/732b7056b17948b06073dbe399de931765307152</a></p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="--- FAIL: TestListenCloseListen (0.00s)
    net_test.go:283: failed on try 1/10: listen tcp 127.0.0.1:52085: bind: address already in use
    net_test.go:283: failed on try 2/10: listen tcp 127.0.0.1:52093: bind: address already in use
    net_test.go:283: failed on try 3/10: listen tcp 127.0.0.1:52101: bind: address already in use
    net_test.go:283: failed on try 4/10: listen tcp 127.0.0.1:52109: bind: address already in use
    net_test.go:283: failed on try 5/10: listen tcp 127.0.0.1:52117: bind: address already in use
FAIL
FAIL    net 4.894s"><pre class="notranslate"><code class="notranslate">--- FAIL: TestListenCloseListen (0.00s)
    net_test.go:283: failed on try 1/10: listen tcp 127.0.0.1:52085: bind: address already in use
    net_test.go:283: failed on try 2/10: listen tcp 127.0.0.1:52093: bind: address already in use
    net_test.go:283: failed on try 3/10: listen tcp 127.0.0.1:52101: bind: address already in use
    net_test.go:283: failed on try 4/10: listen tcp 127.0.0.1:52109: bind: address already in use
    net_test.go:283: failed on try 5/10: listen tcp 127.0.0.1:52117: bind: address already in use
FAIL
FAIL    net 4.894s
</code></pre></div>
<p dir="auto">I see a recent failure: <a href="http://build.golang.org/log/c6e3c951e0398d21ff52b932bc261ab70003120b" rel="nofollow">http://build.golang.org/log/c6e3c951e0398d21ff52b932bc261ab70003120b</a></p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="--- FAIL: TestServerConnState (1.02s)
    serve_test.go:3041: Unexpected events.
        Got log: Conn 1: new active idle active closed 
        Conn 2: new active idle active 
        Conn 3: new active hijacked 
        Conn 4: new active hijacked 
        Conn 5: new closed 
        Conn 6: new active closed 
        Conn 7: new active idle closed 

           Want: Conn 1: new active idle active closed 
        Conn 2: new active idle active closed 
        Conn 3: new active hijacked 
        Conn 4: new active hijacked 
        Conn 5: new closed 
        Conn 6: new active closed 
        Conn 7: new active idle closed 

FAIL
FAIL    net/http    20.463s"><pre class="notranslate"><code class="notranslate">--- FAIL: TestServerConnState (1.02s)
    serve_test.go:3041: Unexpected events.
        Got log: Conn 1: new active idle active closed 
        Conn 2: new active idle active 
        Conn 3: new active hijacked 
        Conn 4: new active hijacked 
        Conn 5: new closed 
        Conn 6: new active closed 
        Conn 7: new active idle closed 

           Want: Conn 1: new active idle active closed 
        Conn 2: new active idle active closed 
        Conn 3: new active hijacked 
        Conn 4: new active hijacked 
        Conn 5: new closed 
        Conn 6: new active closed 
        Conn 7: new active idle closed 

FAIL
FAIL    net/http    20.463s
</code></pre></div>
<p dir="auto">... which suggests the net package, poller, or runtime are processing networking events in a different order than all the other platforms.</p>
<p dir="auto">We also don't have a new-style builder for dragonfly, so people without dragonfly can't use gomote or trybots to debug.</p>
<p dir="auto">I think a Dragonfly person needs to help.</p>
<p dir="auto"><a href="https://groups.google.com/d/topic/golang-nuts/sbzs9j5M-hs/discussion" rel="nofollow">Link to original mailing list post</a>.</p>
<p dir="auto">Over here, I have a demo package: <a href="https://github.com/pwaller/vendor-collision">https://github.com/pwaller/vendor-collision</a></p>
<p dir="auto">On go1.5rc1, if you git clone it and do <code class="notranslate">go build</code> (not <code class="notranslate">go get</code>), you get the following:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="$ go build -v
package github.com/pwaller/vendor-collision
    imports vendor.org/p
    imports vendor.org/p/vendor/example.org/library: must be imported as example.org/library"><pre class="notranslate"><code class="notranslate">$ go build -v
package github.com/pwaller/vendor-collision
    imports vendor.org/p
    imports vendor.org/p/vendor/example.org/library: must be imported as example.org/library
</code></pre></div>
<p dir="auto">To clarify: "vendor-collision" refers to the collision of vendoring methods, not packages, or anything like that.</p>
<p dir="auto">Also, for the record, this is what the package looks like:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="~/.local/src/github.com/pwaller/vendor-collision$ tree
.
├── main.go
└── vendor
    └── vendor.org
        └── p
            ├── p.go
            └── vendor
                └── example.com
                    └── library
                        └── library.go

6 directories, 3 files"><pre class="notranslate"><code class="notranslate">~/.local/src/github.com/pwaller/vendor-collision$ tree
.
├── main.go
└── vendor
    └── vendor.org
        └── p
            ├── p.go
            └── vendor
                └── example.com
                    └── library
                        └── library.go

6 directories, 3 files
</code></pre></div>
<p dir="auto"><code class="notranslate">main.go</code> imports <code class="notranslate">vendor.org/p</code> which directly imports <code class="notranslate">vendor.org/p/vendor/example.com/library</code>, where <code class="notranslate">vendor.org/p</code> should import <code class="notranslate">example.com/library</code> under the <code class="notranslate">GO15VENDOREXPERIMENT</code> regime, but <code class="notranslate">vendor.org/p</code>'s code is in a git submodule. I don't want to poke <code class="notranslate">vendor.org/p</code>'s code if I can avoid it. (And persuading them to change to the new method will break people's ability to easily build on go1.4)</p>
<p dir="auto">/cc <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davecheney/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davecheney">@davecheney</a></p>