Сервер Go возвращает поврежденное изображение на arm64

Я написал простой сервер изображений HTTP:

перейти / 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-адрес. Образ поврежден - перезагрузка каждый раз приводит к разным повреждениям, иногда это нормально. Изображения большего размера (~ 200 КБ) выходят из строя чаще, изображения меньшего размера (~ 20 КБ) - реже.

Дополнительные детали:

go version производит go version go1.9.5 linux/arm64.

На моем Macbook это не вызывает проблем - возникает только на arm64 (похоже, ResponseWriter не выполняет промывку). Я в недоумении. Любые идеи?

Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
1
0
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, это проблема с выпуском go1.9.5. Обновлен набор инструментов до версии go1.10.1, и проблема исчезла.

С выпуском 1.9.5 проблем нет. Протестировано и работает (без внешних библиотек). Может в этом и проблема, но не уходи.

Ivan Beldad 01.05.2018 06:30

На какой архитектуре и устройстве вы тестировали? Приведенный выше код (даже с использованием http.NewServeMux() вместо gorilla) при компиляции с dl.google.com/go/go1.10.1.linux-arm64.tar.gz работает, как ожидалось, но при компиляции с dl.google.com/go/go1.9.5.linux-arm64.tar.gz демонстрирует описанное выше повреждение.

thinkski 01.05.2018 06:55

Debian stretch, контейнерный. Работает без проблем.

Ivan Beldad 01.05.2018 07:46

Я имею в виду архитектуру, например, вы работаете на arm64 (не amd64)? Я подозреваю, что это влияет только на arm64.

thinkski 01.05.2018 08:12

Другие вопросы по теме