Super big files make pvr add crash
Added a 20GB file with pvr and it didn't return, rather after a while stuck it died. Feels like a huge buffer being allocated and things getting out of hand.
ricmm@venus:/tmp/bigfile$ pvr add biggerfile
fatal error: runtime: out of memory
runtime stack:
runtime.throw(0x7fb69c, 0x16)
/root/local/go/src/runtime/panic.go:605 +0x95
runtime.sysMap(0xc820200000, 0x400000000, 0xa0cf00, 0xa2df58)
/root/local/go/src/runtime/mem_linux.go:216 +0x1d0
runtime.(*mheap).sysAlloc(0xa14bc0, 0x400000000, 0x7ffcddedcbf0)
/root/local/go/src/runtime/malloc.go:470 +0xd7
runtime.(*mheap).grow(0xa14bc0, 0x200000, 0x0)
/root/local/go/src/runtime/mheap.go:887 +0x60
runtime.(*mheap).allocSpanLocked(0xa14bc0, 0x200000, 0xa2df68, 0x46)
/root/local/go/src/runtime/mheap.go:800 +0x334
runtime.(*mheap).alloc_m(0xa14bc0, 0x200000, 0xffffffffffff0101, 0x7ffcddedccc0)
/root/local/go/src/runtime/mheap.go:666 +0x118
runtime.(*mheap).alloc.func1()
/root/local/go/src/runtime/mheap.go:733 +0x4d
runtime.systemstack(0x7ffcddedccd8)
/root/local/go/src/runtime/asm_amd64.s:360 +0xab
runtime.(*mheap).alloc(0xa14bc0, 0x200000, 0xc420010101, 0x7ffcddedcd48)
/root/local/go/src/runtime/mheap.go:732 +0xa1
runtime.largeAlloc(0x3fffffe00, 0xc420020101, 0xc420010d20)
/root/local/go/src/runtime/malloc.go:827 +0x98
runtime.mallocgc.func1()
/root/local/go/src/runtime/malloc.go:722 +0x46
runtime.systemstack(0xa0cf00)
/root/local/go/src/runtime/asm_amd64.s:344 +0x79
runtime.mstart()
/root/local/go/src/runtime/proc.go:1125
goroutine 1 [running]:
runtime.systemstack_switch()
/root/local/go/src/runtime/asm_amd64.s:298 fp=0xc42012fd20 sp=0xc42012fd18 pc=0x457070
runtime.mallocgc(0x3fffffe00, 0x772760, 0xc42012fe01, 0x40000000)
/root/local/go/src/runtime/malloc.go:721 +0x7b8 fp=0xc42012fdc8 sp=0xc42012fd20 pc=0x412168
runtime.makeslice(0x772760, 0x3fffffe00, 0x3fffffe00, 0xc620162000, 0x1fffffe00, 0x1fffffe00)
/root/local/go/src/runtime/slice.go:54 +0x77 fp=0xc42012fdf8 sp=0xc42012fdc8 pc=0x442997
bytes.makeSlice(0x3fffffe00, 0x0, 0x0, 0x0)
/root/local/go/src/bytes/buffer.go:231 +0x77 fp=0xc42012fe38 sp=0xc42012fdf8 pc=0x4d0457
bytes.(*Buffer).ReadFrom(0xc42012fee0, 0x9c5bc0, 0xc42000e0a0, 0xc42013e000, 0x0, 0x200)
/root/local/go/src/bytes/buffer.go:203 +0x291 fp=0xc42012feb0 sp=0xc42012fe38 pc=0x4d0391
io/ioutil.readAll(0x9c5bc0, 0xc42000e0a0, 0x200, 0x0, 0x0, 0x0, 0x0, 0x0)
/root/local/go/src/io/ioutil/ioutil.go:33 +0x12c fp=0xc42012ff58 sp=0xc42012feb0 pc=0x4e14bc
io/ioutil.ReadFile(0xc420014ca0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0)
/root/local/go/src/io/ioutil/ioutil.go:70 +0xf2 fp=0xc42012ffb0 sp=0xc42012ff58 pc=0x4e16e2
main.FiletoSha(0xc420014ca0, 0x17, 0x1, 0x0, 0x0, 0x2)
/root/go/src/gitlab.com/pantacor/pvr/lib.go:58 +0x39 fp=0xc420130018 sp=0xc42012ffb0 pc=0x719959
main.(*Pvr).addPvrFile(0xc4200900c0, 0xc420014ca0, 0x17, 0x17, 0x1)
/root/go/src/gitlab.com/pantacor/pvr/pvrlib.go:185 +0x39 fp=0xc420130070 sp=0xc420130018 pc=0x71be89
main.(*Pvr).AddFile.func1(0xc420014ca0, 0x17, 0x9cbe00, 0xc42013c410, 0x0, 0x0, 0x0, 0x0)
/root/go/src/gitlab.com/pantacor/pvr/pvrlib.go:221 +0x178 fp=0xc420130150 sp=0xc420130070 pc=0x732018
path/filepath.walk(0xc420014ca0, 0x17, 0x9cbe00, 0xc42013c410, 0xc4200114d0, 0x0, 0x0)
/root/local/go/src/path/filepath/path.go:356 +0x81 fp=0xc420130228 sp=0xc420130150 pc=0x4e0791
path/filepath.walk(0xc42001a680, 0xd, 0x9cbe00, 0xc420085860, 0xc4200114d0, 0x0, 0x30)
/root/local/go/src/path/filepath/path.go:381 +0x39a fp=0xc420130300 sp=0xc420130228 pc=0x4e0aaa
path/filepath.Walk(0xc42001a680, 0xd, 0xc4200114d0, 0x0, 0x0)
/root/local/go/src/path/filepath/path.go:403 +0x11d fp=0xc420130360 sp=0xc420130300 pc=0x4e0d5d
main.(*Pvr).AddFile(0xc4200900c0, 0xc4200100b0, 0x1, 0x1, 0x0, 0x0)
/root/go/src/gitlab.com/pantacor/pvr/pvrlib.go:197 +0xc4 fp=0xc420130440 sp=0xc420130360 pc=0x71c0b4
main.CommandAdd.func1(0xc420086840, 0x0, 0xc420086840)
/root/go/src/gitlab.com/pantacor/pvr/cmdadd.go:42 +0x1cc fp=0xc4201304c8 sp=0xc420130440 pc=0x72da3c
github.com/urfave/cli.HandleAction(0x77e3c0, 0x814820, 0xc420086840, 0xc42005e300, 0x0)
/root/go/src/github.com/urfave/cli/app.go:502 +0xd2 fp=0xc4201304f0 sp=0xc4201304c8 pc=0x519932
github.com/urfave/cli.Command.Run(0x7f51a5, 0x3, 0x0, 0x0, 0xc420042d40, 0x1, 0x1, 0x806565, 0x36, 0x0, ...)
/root/go/src/github.com/urfave/cli/command.go:210 +0xaad fp=0xc420130770 sp=0xc4201304f0 pc=0x51acbd
github.com/urfave/cli.(*App).Run(0xc420124000, 0xc420010090, 0x3, 0x3, 0x0, 0x0)
/root/go/src/github.com/urfave/cli/app.go:259 +0x740 fp=0xc420130960 sp=0xc420130770 pc=0x5178f0
main.main()
/root/go/src/gitlab.com/pantacor/pvr/main.go:85 +0xa4b fp=0xc420131f80 sp=0xc420130960 pc=0x71a48b
runtime.main()
/root/local/go/src/runtime/proc.go:185 +0x20d fp=0xc420131fe0 sp=0xc420131f80 pc=0x42d00d
runtime.goexit()
/root/local/go/src/runtime/asm_amd64.s:2337 +0x1 fp=0xc420131fe8 sp=0xc420131fe0 pc=0x459c61
goroutine 5 [syscall, 5 minutes]:
os/signal.signal_recv(0x0)
/root/local/go/src/runtime/sigqueue.go:131 +0xa6
os/signal.loop()
/root/local/go/src/os/signal/signal_unix.go:22 +0x22
created by os/signal.init.0
/root/local/go/src/os/signal/signal_unix.go:28 +0x41