Go 服务器 returns arm64 上的损坏图像

Go server returns corrupt image on arm64

我写了一个简单的 HTTP 图片服务器:

go/src/demo/demo.go:

package main

import (
  "net/http"
  "github.com/gorilla/mux"
)

func main() {
  router := mux.NewRouter()
  router.HandleFunc("/foobar", func(w http.ResponseWriter, r *http.Request) {
    http.ServeFile(w, r, "/home/foobar/test.jpg")
  })

  http.ListenAndServe(":5000", router)
}

我编译它(PWD=$HOME/go/src/demo):

GOPATH=$PWD/../../ go build -o demo

和运行:

./demo

然后在Chrome我打开URL。图像已损坏 - 每次重新加载都会产生不同的损坏,偶尔会很好。较大的图像 (~200KB) 失败的频率更高,较小的图像 (~20KB) 的失败频率较低。

其他详细信息:

go version 产生 go version go1.9.5 linux/arm64.

在我的 Macbook 上,这不会导致任何问题——只发生在 arm64 上(看起来 ResponseWriter 没有实现刷新)。我不知所措。有什么想法吗?

看起来这是 go1.9.5 版本的问题。将工具链更新为 go1.10.1,问题消失。