Skip to content

net/http: panic when reading request body #7527

Closed
@gopherbot

Description

@gopherbot

by dimitrij.denissenko@blacksquaremedia.com:

What does 'go version' print?

go version go1.2 linux/amd64

What happened?

In my http server, I am trying to read the http.Request.Body via
ioutil.ReadAll(req.Body). Rarely, it causes an unexpected panic:

panic: runtime error: invalid memory address or nil pointer dereference [recovered]
    panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x20 pc=0x5e65ca]
goroutine 1918503 [running]:
runtime.panic(0x7c3560, 0xd59d88)
  /home/user/.gvm/gos/go1.2/src/pkg/runtime/panic.c:266 +0xb6
io/ioutil.func·001()
  /home/user/.gvm/gos/go1.2/src/pkg/io/ioutil/ioutil.go:29 +0xf0
runtime.panic(0x7c3560, 0xd59d88)
  /home/user/.gvm/gos/go1.2/src/pkg/runtime/panic.c:248 +0x106
bufio.(*Reader).fill(0xc2101b1c00)
  /home/user/.gvm/gos/go1.2/src/pkg/bufio/bufio.go:91 +0x10a
bufio.(*Reader).Read(0xc2101b1c00, 0xc2119bde00, 0x1e5, 0x200, 0x1e5, ...)
  /home/user/.gvm/gos/go1.2/src/pkg/bufio/bufio.go:159 +0x1a4
io.(*LimitedReader).Read(0xc2107532e0, 0xc2119bde00, 0x200, 0x200, 0xc2119bde00, ...)
  /home/user/.gvm/gos/go1.2/src/pkg/io/io.go:398 +0xbb
net/http.(*body).Read(0xc2109ee4e0, 0xc2119bde00, 0x200, 0x200, 0x1, ...)
  /home/user/.gvm/gos/go1.2/src/pkg/net/http/transfer.go:534 +0x96
bytes.(*Buffer).ReadFrom(0xc21344b1c0, 0x7fe124670ee0, 0xc2109ee4e0, 0x0, 0x0, ...)
  /home/user/.gvm/gos/go1.2/src/pkg/bytes/buffer.go:169 +0x1f7
io/ioutil.readAll(0x7fe124670ee0, 0xc2109ee4e0, 0x200, 0x0, 0x0, ...)
  /home/user/.gvm/gos/go1.2/src/pkg/io/ioutil/ioutil.go:32 +0x156
io/ioutil.ReadAll(0x7fe124670ee0, 0xc2109ee4e0, 0x5320e1b2, 0x2a5129fd, 0x48349e, ...)
  /home/user/.gvm/gos/go1.2/src/pkg/io/ioutil/ioutil.go:41 +0x3f

What should have happened instead?

The documentation http://golang.org/src/pkg/net/http/request.go?#L114 suggests that a
server body must never be nil.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions