I have a cli loader that is managing to panic the ponzu server while doing about 160 http post requests in a loop, new http.Client for each request. Putting a 50 millisecond delay between each request causes the issue to go away and all requests in the loop to complete with success.
Server listening on :8080 for HTTP requests...
visit /admin
to get started.
unexpected fault address 0x3402530
fatal error: fault
[signal SIGSEGV: segmentation violation code=0x1 addr=0x3402530 pc=0x12abb18]
goroutine 137 [running]:
runtime.throw(0x1501e3f, 0x5)
/Users/kkeuning/sdk/go1.8rc3/src/runtime/panic.go:596 +0x95 fp=0xc423d6b890 sp=0xc423d6b870
runtime.sigpanic()
/Users/kkeuning/sdk/go1.8rc3/src/runtime/signal_unix.go:297 +0x28c fp=0xc423d6b8e0 sp=0xc423d6b890
encoding/json.(*decodeState).scanWhile(0xc4244158c0, 0x0, 0x7)
/Users/kkeuning/sdk/go1.8rc3/src/encoding/json/decode.go:350 +0x38 fp=0xc423d6b908 sp=0xc423d6b8e0
encoding/json.(*decodeState).literal(0xc4244158c0, 0x145f6c0, 0xc424417d28, 0x198)
/Users/kkeuning/sdk/go1.8rc3/src/encoding/json/decode.go:793 +0x41 fp=0xc423d6b960 sp=0xc423d6b908
encoding/json.(*decodeState).value(0xc4244158c0, 0x145f6c0, 0xc424417d28, 0x198)
/Users/kkeuning/sdk/go1.8rc3/src/encoding/json/decode.go:405 +0x32e fp=0xc423d6b9e0 sp=0xc423d6b960
encoding/json.(*decodeState).object(0xc4244158c0, 0x144b000, 0xc4244a5370, 0x16)
/Users/kkeuning/sdk/go1.8rc3/src/encoding/json/decode.go:733 +0x12d8 fp=0xc423d6bc38 sp=0xc423d6b9e0
encoding/json.(*decodeState).value(0xc4244158c0, 0x144b000, 0xc4244a5370, 0x16)
/Users/kkeuning/sdk/go1.8rc3/src/encoding/json/decode.go:402 +0x2f4 fp=0xc423d6bcb8 sp=0xc423d6bc38
encoding/json.(*decodeState).unmarshal(0xc4244158c0, 0x144b000, 0xc4244a5370, 0x0, 0x0)
/Users/kkeuning/sdk/go1.8rc3/src/encoding/json/decode.go:184 +0x21a fp=0xc423d6bd30 sp=0xc423d6bcb8
encoding/json.Unmarshal(0x340237d, 0x360, 0x360, 0x144b000, 0xc4244a5370, 0xc4244a5360, 0x0)
/Users/kkeuning/sdk/go1.8rc3/src/encoding/json/decode.go:104 +0x148 fp=0xc423d6bd78 sp=0xc423d6bd30
github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/db.SortContent(0xc42454ce90, 0x4)
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/db/content.go:446 +0x1b8 fp=0xc423d6bfd0 sp=0xc423d6bd78
runtime.goexit()
/Users/kkeuning/sdk/go1.8rc3/src/runtime/asm_amd64.s:2197 +0x1 fp=0xc423d6bfd8 sp=0xc423d6bfd0
created by github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/db.insert
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/db/content.go:156 +0x1dd
goroutine 1 [IO wait]:
net.runtime_pollWait(0x1fc3068, 0x72, 0x0)
/Users/kkeuning/sdk/go1.8rc3/src/runtime/netpoll.go:164 +0x59
net.(*pollDesc).wait(0xc4231d83e8, 0x72, 0x0, 0xc42000c560)
/Users/kkeuning/sdk/go1.8rc3/src/net/fd_poll_runtime.go:75 +0x38
net.(*pollDesc).waitRead(0xc4231d83e8, 0xffffffffffffffff, 0x0)
/Users/kkeuning/sdk/go1.8rc3/src/net/fd_poll_runtime.go:80 +0x34
net.(*netFD).accept(0xc4231d8380, 0x0, 0x17281e0, 0xc42000c560)
/Users/kkeuning/sdk/go1.8rc3/src/net/fd_unix.go:430 +0x1e5
net.(*TCPListener).accept(0xc4231de068, 0xc4201201c0, 0x1478180, 0xffffffffffffffff)
/Users/kkeuning/sdk/go1.8rc3/src/net/tcpsock_posix.go:136 +0x2e
net.(*TCPListener).AcceptTCP(0xc4231de068, 0xc4200538a0, 0xc4200538a8, 0xc420053898)
/Users/kkeuning/sdk/go1.8rc3/src/net/tcpsock.go:215 +0x49
net/http.tcpKeepAliveListener.Accept(0xc4231de068, 0x15275e0, 0xc420120140, 0x172e420, 0xc4231db260)
/Users/kkeuning/sdk/go1.8rc3/src/net/http/server.go:3044 +0x2f
net/http.(*Server).Serve(0xc4231f4160, 0x172de20, 0xc4231de068, 0x0, 0x0)
/Users/kkeuning/sdk/go1.8rc3/src/net/http/server.go:2643 +0x228
net/http.(*Server).ListenAndServe(0xc4231f4160, 0x0, 0xc4231fe310)
/Users/kkeuning/sdk/go1.8rc3/src/net/http/server.go:2585 +0xb0
net/http.ListenAndServe(0xc4231fe310, 0x5, 0x0, 0x0, 0x1, 0xc4231fe310)
/Users/kkeuning/sdk/go1.8rc3/src/net/http/server.go:2787 +0x7f
main.main()
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/main.go:220 +0xb42
goroutine 17 [syscall, 10 minutes, locked to thread]:
runtime.goexit()
/Users/kkeuning/sdk/go1.8rc3/src/runtime/asm_amd64.s:2197 +0x1
goroutine 26 [select]:
github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/api/analytics.serve()
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/api/analytics/init.go:118 +0x251
created by github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/api/analytics.Init
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/api/analytics/init.go:99 +0x222
goroutine 27 [IO wait, 9 minutes]:
net.runtime_pollWait(0x1fc2fa8, 0x72, 0x7)
/Users/kkeuning/sdk/go1.8rc3/src/runtime/netpoll.go:164 +0x59
net.(*pollDesc).wait(0xc4231d8458, 0x72, 0x1729ae0, 0x1725598)
/Users/kkeuning/sdk/go1.8rc3/src/net/fd_poll_runtime.go:75 +0x38
net.(*pollDesc).waitRead(0xc4231d8458, 0xc42005e000, 0x1000)
/Users/kkeuning/sdk/go1.8rc3/src/net/fd_poll_runtime.go:80 +0x34
net.(*netFD).Read(0xc4231d83f0, 0xc42005e000, 0x1000, 0x1000, 0x0, 0x1729ae0, 0x1725598)
/Users/kkeuning/sdk/go1.8rc3/src/net/fd_unix.go:250 +0x1b7
net.(*conn).Read(0xc4231aa008, 0xc42005e000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/Users/kkeuning/sdk/go1.8rc3/src/net/net.go:181 +0x70
net/http.(*connReader).Read(0xc4231a0180, 0xc42005e000, 0x1000, 0x1000, 0xc42013f910, 0x1068222, 0x0)
/Users/kkeuning/sdk/go1.8rc3/src/net/http/server.go:754 +0x140
bufio.(*Reader).fill(0xc4231ae120)
/Users/kkeuning/sdk/go1.8rc3/src/bufio/bufio.go:97 +0x117
bufio.(*Reader).ReadSlice(0xc4231ae120, 0xa, 0x1503263, 0x6, 0x0, 0xc42013fa00, 0x10b45d8)
/Users/kkeuning/sdk/go1.8rc3/src/bufio/bufio.go:338 +0xbb
bufio.(*Reader).ReadLine(0xc4231ae120, 0xc423188400, 0x100, 0xf8, 0x14f5040, 0xc423285600, 0x186a4b0)
/Users/kkeuning/sdk/go1.8rc3/src/bufio/bufio.go:367 +0x37
net/textproto.(*Reader).readLineSlice(0xc423271530, 0xc42013fac8, 0xc42013fac8, 0x1010f68, 0x100, 0x14f5040)
/Users/kkeuning/sdk/go1.8rc3/src/net/textproto/reader.go:55 +0x5f
net/textproto.(*Reader).ReadLine(0xc423271530, 0xc423188400, 0x72, 0x8000000000000000, 0x0)
/Users/kkeuning/sdk/go1.8rc3/src/net/textproto/reader.go:36 +0x2f
net/http.readRequest(0xc4231ae120, 0x0, 0xc423188400, 0x0, 0x0)
/Users/kkeuning/sdk/go1.8rc3/src/net/http/request.go:918 +0xa5
net/http.(*conn).readRequest(0xc4201200a0, 0x172e360, 0xc4231a0140, 0x0, 0x0, 0x0)
/Users/kkeuning/sdk/go1.8rc3/src/net/http/server.go:934 +0x213
net/http.(*conn).serve(0xc4201200a0, 0x172e360, 0xc4231a0140)
/Users/kkeuning/sdk/go1.8rc3/src/net/http/server.go:1763 +0x49a
created by net/http.(*Server).Serve
/Users/kkeuning/sdk/go1.8rc3/src/net/http/server.go:2668 +0x2ce
goroutine 153 [runnable]:
syscall.Syscall6(0x9a, 0x3, 0xc423cf9000, 0x1000, 0x2b000, 0x0, 0x0, 0x1000, 0x0, 0x0)
/Users/kkeuning/sdk/go1.8rc3/src/syscall/asm_darwin_amd64.s:41 +0x5
syscall.Pwrite(0x3, 0xc423cf9000, 0x1000, 0x7fffffff, 0x2b000, 0x1000, 0x0, 0x0)
/Users/kkeuning/sdk/go1.8rc3/src/syscall/zsyscall_darwin_amd64.go:956 +0x77
os.(*File).pwrite(0xc42010a010, 0xc423cf9000, 0x1000, 0x7fffffff, 0x2b000, 0x1000, 0x0, 0x0)
/Users/kkeuning/sdk/go1.8rc3/src/os/file_unix.go:212 +0x78
os.(*File).WriteAt(0xc42010a010, 0xc423cf9000, 0x1000, 0x7fffffff, 0x2b000, 0x1000, 0x0, 0x0)
/Users/kkeuning/sdk/go1.8rc3/src/os/file.go:166 +0xb3
os.(*File).WriteAt-fm(0xc423cf9000, 0x1000, 0x7fffffff, 0x2b000, 0x1000, 0x0, 0x0)
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/boltdb/bolt/db.go:192 +0x52
github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/boltdb/bolt.(*Tx).write(0xc4244b6620, 0x28515515, 0x176d560)
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/boltdb/bolt/tx.go:496 +0x333
github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/boltdb/bolt.(*Tx).Commit(0xc4244b6620, 0x0, 0x0)
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/boltdb/bolt/tx.go:198 +0x342
github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/boltdb/bolt.(*DB).Update(0xc4201281e0, 0xc423d6df78, 0x0, 0x0)
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/boltdb/bolt/db.go:602 +0xf7
github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/db.SortContent(0xc4244d1540, 0x4)
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/db/content.go:494 +0x821
created by github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/db.insert
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/db/content.go:156 +0x1dd
goroutine 13 [semacquire]:
sync.runtime_SemacquireMutex(0xc42012835c)
/Users/kkeuning/sdk/go1.8rc3/src/runtime/sema.go:62 +0x34
sync.(*Mutex).Lock(0xc420128358)
/Users/kkeuning/sdk/go1.8rc3/src/sync/mutex.go:87 +0x9d
github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/boltdb/bolt.(*DB).beginRWTx(0xc4201281e0, 0x0, 0x0, 0x0)
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/boltdb/bolt/db.go:512 +0x65
github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/boltdb/bolt.(*DB).Begin(0xc4201281e0, 0x1, 0x10, 0x1463fc0, 0xc420150d78)
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/boltdb/bolt/db.go:461 +0x38
github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/boltdb/bolt.(*DB).Update(0xc4201281e0, 0xc420150d60, 0x0, 0x0)
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/boltdb/bolt/db.go:579 +0x46
github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/db.SetConfig(0xc420150eb0, 0xc424692340, 0xc420150e60)
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/db/config.go:101 +0x82
github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/db.PutConfig(0x1501456, 0x4, 0x145f6c0, 0xc42454de10, 0xc4201510f8, 0xc420151100)
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/db/config.go:202 +0x447
github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/db.InvalidateCache(0xc400000010, 0x1527160)
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/db/cache.go:40 +0x80
github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/db.insert(0xc42454ce90, 0x4, 0xc4244b3ec0, 0x1, 0xc424548e00, 0x2)
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/db/content.go:160 +0x13c
github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/db.SetContent(0xc42454ce90, 0x7, 0xc4244b3ec0, 0x0, 0x0, 0x1500d22)
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/db/content.go:33 +0xec
github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/api.externalContentHandler(0x172da60, 0xc423fba620, 0xc4245fc000)
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/api/external.go:170 +0x104a
net/http.HandlerFunc.ServeHTTP(0x1527120, 0x172da60, 0xc423fba620, 0xc4245fc000)
/Users/kkeuning/sdk/go1.8rc3/src/net/http/server.go:1942 +0x44
github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/api.CORS.func1(0x172da60, 0xc423fba620, 0xc4245fc000)
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/api/cors.go:72 +0x9c
net/http.HandlerFunc.ServeHTTP(0xc4231ba180, 0x172da60, 0xc423fba620, 0xc4245fc000)
/Users/kkeuning/sdk/go1.8rc3/src/net/http/server.go:1942 +0x44
github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/db.CacheControl.func1(0x172da60, 0xc423fba620, 0xc4245fc000)
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/db/cache.go:26 +0x247
net/http.HandlerFunc.ServeHTTP(0xc4231d60e0, 0x172da60, 0xc423fba620, 0xc4245fc000)
/Users/kkeuning/sdk/go1.8rc3/src/net/http/server.go:1942 +0x44
github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/api.Record.func1(0x172da60, 0xc423fba620, 0xc4245fc000)
/kmk/academy/go/src/github.com/kkeuning/gobservatory/gobservatory-cms/cmd/ponzu/vendor/github.com/ponzu-cms/ponzu/system/api/record.go:14 +0x74
net/http.HandlerFunc.ServeHTTP(0xc4231ba190, 0x172da60, 0xc423fba620, 0xc4245fc000)
/Users/kkeuning/sdk/go1.8rc3/src/net/http/server.go:1942 +0x44
net/http.(*ServeMux).ServeHTTP(0x176d100, 0x172da60, 0xc423fba620, 0xc4245fc000)
/Users/kkeuning/sdk/go1.8rc3/src/net/http/server.go:2238 +0x130
net/http.serverHandler.ServeHTTP(0xc4231f4160, 0x172da60, 0xc423fba620, 0xc4245fc000)
/Users/kkeuning/sdk/go1.8rc3/src/net/http/server.go:2568 +0x92
net/http.(*conn).serve(0xc420120140, 0x172e360, 0xc42015c200)
/Users/kkeuning/sdk/go1.8rc3/src/net/http/server.go:1825 +0x612
created by net/http.(*Server).Serve
/Users/kkeuning/sdk/go1.8rc3/src/net/http/server.go:2668 +0x2ce
goroutine 136 [IO wait]:
net.runtime_pollWait(0x1fc2ee8, 0x72, 0x8)
/Users/kkeuning/sdk/go1.8rc3/src/runtime/netpoll.go:164 +0x59
net.(*pollDesc).wait(0xc4231d8068, 0x72, 0x1729ae0, 0x1725598)
/Users/kkeuning/sdk/go1.8rc3/src/net/fd_poll_runtime.go:75 +0x38
net.(*pollDesc).waitRead(0xc4231d8068, 0xc42015c251, 0x1)
/Users/kkeuning/sdk/go1.8rc3/src/net/fd_poll_runtime.go:80 +0x34
net.(*netFD).Read(0xc4231d8000, 0xc42015c251, 0x1, 0x1, 0x0, 0x1729ae0, 0x1725598)
/Users/kkeuning/sdk/go1.8rc3/src/net/fd_unix.go:250 +0x1b7
net.(*conn).Read(0xc420104018, 0xc42015c251, 0x1, 0x1, 0x0, 0x0, 0x0)
/Users/kkeuning/sdk/go1.8rc3/src/net/net.go:181 +0x70
net/http.(*connReader).backgroundRead(0xc42015c240)
/Users/kkeuning/sdk/go1.8rc3/src/net/http/server.go:656 +0x58
created by net/http.(*connReader).startBackgroundRead
/Users/kkeuning/sdk/go1.8rc3/src/net/http/server.go:652 +0xdf
exit status 2