Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Filecache: concurrent map read and map write on Set() #188

Closed
zhl11b opened this issue Nov 21, 2017 · 1 comment
Closed

Filecache: concurrent map read and map write on Set() #188

zhl11b opened this issue Nov 21, 2017 · 1 comment
Assignees
Labels

Comments

@zhl11b
Copy link

zhl11b commented Nov 21, 2017

fatal error: concurrent map read and map write

goroutine 42364 [running]:
runtime.throw(0x94428d, 0x21)
	/usr/local/go/src/runtime/panic.go:605 +0x95 fp=0xc426503970 sp=0xc426503950 pc=0x42bd65
runtime.mapaccess1_faststr(0x8af4e0, 0xc4201e39e0, 0xc42c48f100, 0x19, 0x14)
	/usr/local/go/src/runtime/hashmap_fast.go:217 +0x43a fp=0xc4265039c8 sp=0xc426503970 pc=0x40d47a
github.com/terranodo/tegola/cache/filecache.(*Filecache).Set(0xc4201d7840, 0xc4201d7040, 0xc4266004e0, 0x185, 0x185, 0x0, 0x0)
	/home/zhl/go/src/github.com/terranodo/tegola/cache/filecache/filecache.go:184 +0x51b fp=0xc426503a90 sp=0xc4265039c8 pc=0x7c
github.com/terranodo/tegola/server.TileCacheHandler.func1(0xba0060, 0xc42018c7e0, 0xc421245100)
	/home/zhl/go/src/github.com/terranodo/tegola/server/middleware_tile_cache.go:55 +0x37b fp=0xc426503b68 sp=0xc426503a90 pc=0x
net/http.HandlerFunc.ServeHTTP(0xc4204bbea0, 0xba0060, 0xc42018c7e0, 0xc421245100)
	/usr/local/go/src/net/http/server.go:1918 +0x44 fp=0xc426503b90 sp=0xc426503b68 pc=0x66d3e4
github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux.(*ContextGroup).Handler.func1(0xba0060, 0xc42018c7e0, 0xc425c52900
	/home/zhl/go/src/github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux/context.go:62 +0xe8 fp=0xc426503bf0 sp=0x
github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux.(*TreeMux).ServeHTTP(0xc4200f6150, 0xba0060, 0xc42018c7e0, 0xc425c
	/home/zhl/go/src/github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux/router.go:252 +0x308 fp=0xc426503d18 sp=0
net/http.serverHandler.ServeHTTP(0xc420464820, 0xba0060, 0xc42018c7e0, 0xc425c52900)
	/usr/local/go/src/net/http/server.go:2619 +0xb4 fp=0xc426503d48 sp=0xc426503d18 pc=0x66ff34
net/http.(*conn).serve(0xc4200886e0, 0xba0a20, 0xc429faf4c0)
	/usr/local/go/src/net/http/server.go:1801 +0x71d fp=0xc426503fc8 sp=0xc426503d48 pc=0x66c2bd
runtime.goexit()
	/usr/local/go/src/runtime/asm_amd64.s:2337 +0x1 fp=0xc426503fd0 sp=0xc426503fc8 pc=0x459891
created by net/http.(*Server).Serve
	/usr/local/go/src/net/http/server.go:2720 +0x288

goroutine 1 [IO wait]:
internal/poll.runtime_pollWait(0x7fad9a6a6df0, 0x72, 0xffffffffffffffff)
	/usr/local/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc420132b18, 0x72, 0xc42004f700, 0x0, 0x0)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0xae
internal/poll.(*pollDesc).waitRead(0xc420132b18, 0xffffffffffffff00, 0x0, 0x0)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Accept(0xc420132b00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
	/usr/local/go/src/internal/poll/fd_unix.go:335 +0x1e2
net.(*netFD).accept(0xc420132b00, 0x9571d8, 0xc42004f978, 0x402e8b)
	/usr/local/go/src/net/fd_unix.go:238 +0x42
net.(*TCPListener).accept(0xc42000e678, 0x8a2740, 0xc42004f9a8, 0x401c27)
	/usr/local/go/src/net/tcpsock_posix.go:136 +0x2e
net.(*TCPListener).AcceptTCP(0xc42000e678, 0xc42004f9f0, 0xc42004f9f8, 0xc42004f9e8)
	/usr/local/go/src/net/tcpsock.go:234 +0x49
net/http.tcpKeepAliveListener.Accept(0xc42000e678, 0x956b68, 0xc420089400, 0xba0ae0, 0xc4201a10b0)
	/usr/local/go/src/net/http/server.go:3120 +0x2f
net/http.(*Server).Serve(0xc420464820, 0xba04a0, 0xc42000e678, 0x0, 0x0)
	/usr/local/go/src/net/http/server.go:2695 +0x1b2
net/http.(*Server).ListenAndServe(0xc420464820, 0xc420464820, 0xc420228040)
	/usr/local/go/src/net/http/server.go:2636 +0xa9
net/http.ListenAndServe(0xc420017038, 0x5, 0xb9a4e0, 0xc4200f6150, 0x6, 0xb9ade0)
	/usr/local/go/src/net/http/server.go:2882 +0x7f
github.com/terranodo/tegola/server.Start(0xc420017038, 0x5)
	/home/zhl/go/src/github.com/terranodo/tegola/server/server.go:75 +0x8b1
main.main()
	/home/zhl/go/src/github.com/terranodo/tegola/cmd/tegola/main.go:86 +0x483

goroutine 42368 [IO wait]:
internal/poll.runtime_pollWait(0x7fad9a602670, 0x72, 0x0)
	/usr/local/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc42155ac18, 0x72, 0xffffffffffffff00, 0xb9cba0, 0xb986a8)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0xae
internal/poll.(*pollDesc).waitRead(0xc42155ac18, 0xc426a1e000, 0x1000, 0x1000)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc42155ac00, 0xc426a1e000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/usr/local/go/src/internal/poll/fd_unix.go:126 +0x18a
net.(*netFD).Read(0xc42155ac00, 0xc426a1e000, 0x1000, 0x1000, 0xc42bf758c8, 0x66682a, 0xc4278b11d8)
	/usr/local/go/src/net/fd_unix.go:202 +0x52
net.(*conn).Read(0xc422498578, 0xc426a1e000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/net.go:176 +0x6d
net/http.(*connReader).Read(0xc4278b11d0, 0xc426a1e000, 0x1000, 0x1000, 0xc429fafe00, 0xb982c8, 0x2)
	/usr/local/go/src/net/http/server.go:753 +0x105
bufio.(*Reader).fill(0xc4236bb7a0)
	/usr/local/go/src/bufio/bufio.go:97 +0x11a
bufio.(*Reader).ReadSlice(0xc4236bb7a0, 0xc42bf75a0a, 0x411a96, 0x7fad9856e978, 0x1f, 0xff, 0xff)
	/usr/local/go/src/bufio/bufio.go:338 +0x2c
bufio.(*Reader).ReadLine(0xc4236bb7a0, 0x100, 0xf8, 0x926180, 0x1, 0x1220029f36800, 0xf8)
	/usr/local/go/src/bufio/bufio.go:367 +0x34
net/textproto.(*Reader).readLineSlice(0xc4278b1350, 0xc42bf75b20, 0xc42bf75b20, 0x412688, 0x100, 0x926180)
	/usr/local/go/src/net/textproto/reader.go:55 +0x70
net/textproto.(*Reader).ReadLine(0xc4278b1350, 0xc4258f3f00, 0x0, 0xc42bf75b90, 0x490822)
	/usr/local/go/src/net/textproto/reader.go:36 +0x2b
net/http.readRequest(0xc4236bb7a0, 0x0, 0xc4258f3f00, 0x0, 0x0)
	/usr/local/go/src/net/http/request.go:925 +0x99
net/http.(*conn).readRequest(0xc4200892c0, 0xba0a20, 0xc429fafdc0, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/http/server.go:933 +0x17c
net/http.(*conn).serve(0xc4200892c0, 0xba0a20, 0xc429fafdc0)
	/usr/local/go/src/net/http/server.go:1739 +0x50e
created by net/http.(*Server).Serve
	/usr/local/go/src/net/http/server.go:2720 +0x288

goroutine 47949 [runnable]:
internal/poll.runtime_pollWait(0x7fad981bf778, 0x72, 0x0)
	/usr/local/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc42b173398, 0x72, 0xffffffffffffff00, 0xb9cba0, 0xb986a8)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0xae
internal/poll.(*pollDesc).waitRead(0xc42b173398, 0xc42642c000, 0x1000, 0x1000)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc42b173380, 0xc42642c000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/usr/local/go/src/internal/poll/fd_unix.go:126 +0x18a
net.(*netFD).Read(0xc42b173380, 0xc42642c000, 0x1000, 0x1000, 0x28, 0x0, 0x0)
	/usr/local/go/src/net/fd_unix.go:202 +0x52
net.(*conn).Read(0xc4201c22d0, 0xc42642c000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/net.go:176 +0x6d
bufio.(*Reader).Read(0xc42582eba0, 0xc42c4b7660, 0x5, 0x80, 0xc42c4b7130, 0xc42c4b7530, 0xc42c4b7530)
	/usr/local/go/src/bufio/bufio.go:213 +0x30b
io.ReadAtLeast(0xb99e20, 0xc42582eba0, 0xc42c4b7660, 0x5, 0x80, 0x5, 0xc42f8d33bc, 0x4, 0x500013a94)
	/usr/local/go/src/io/io.go:309 +0x86
io.ReadFull(0xb99e20, 0xc42582eba0, 0xc42c4b7660, 0x5, 0x80, 0x8c5220, 0xc427ddfc4a, 0x40000000006)
	/usr/local/go/src/io/io.go:327 +0x58
github.com/terranodo/tegola/vendor/github.com/jackc/pgx.(*msgReader).rxMsg(0xc42c4b7658, 0x0, 0xc4200f8700, 0x7fad9a6f2000)
	/home/zhl/go/src/github.com/terranodo/tegola/vendor/github.com/jackc/pgx/msg_reader.go:51 +0x83
github.com/terranodo/tegola/vendor/github.com/jackc/pgx.(*Conn).rxMsg(0xc42c4b7100, 0xc4202c11c0, 0xc427c2c830, 0xd6, 0x0)
	/home/zhl/go/src/github.com/terranodo/tegola/vendor/github.com/jackc/pgx/conn.go:1042 +0x4d
github.com/terranodo/tegola/vendor/github.com/jackc/pgx.(*Rows).Next(0xc4202c11c0, 0x956820)
	/home/zhl/go/src/github.com/terranodo/tegola/vendor/github.com/jackc/pgx/query.go:165 +0xa9
github.com/terranodo/tegola/provider/postgis.(*Provider).ForEachFeature(0xc4227abd10, 0xba0ae0, 0xc422688660, 0xc4201ce9a4, 0xb, 0x1
	/home/zhl/go/src/github.com/terranodo/tegola/provider/postgis/postgis_foreach.go:52 +0x602
github.com/terranodo/tegola/provider/postgis.Provider.MVTLayer(0xc420017140, 0x9, 0x1538, 0xc420017190, 0x6, 0xc4200171b0, 0x4, 0xc4
	/home/zhl/go/src/github.com/terranodo/tegola/provider/postgis/postgis.go:331 +0x167
github.com/terranodo/tegola/provider/postgis.(*Provider).MVTLayer(0xc4200fd450, 0xba0ae0, 0xc422688660, 0xc4201ce9a4, 0xb, 0x14, 0x8
	<autogenerated>:1 +0xfb
github.com/terranodo/tegola/server.HandleMapZXY.ServeHTTP.func1(0xc425412620, 0xc421ffc100, 0xc4204cb7c0, 0xc421ae7500, 0x10, 0x10, 
	/home/zhl/go/src/github.com/terranodo/tegola/server/handle_map_zxy.go:155 +0xf2
created by github.com/terranodo/tegola/server.HandleMapZXY.ServeHTTP
	/home/zhl/go/src/github.com/terranodo/tegola/server/handle_map_zxy.go:150 +0x516

goroutine 18537 [IO wait, 1 minutes]:
internal/poll.runtime_pollWait(0x7fad9a602c70, 0x72, 0x0)
	/usr/local/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc421e12098, 0x72, 0xffffffffffffff00, 0xb9cba0, 0xb986a8)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0xae
internal/poll.(*pollDesc).waitRead(0xc421e12098, 0xc4201a0200, 0x1, 0x1)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc421e12080, 0xc4201a0251, 0x1, 0x1, 0x0, 0x0, 0x0)
	/usr/local/go/src/internal/poll/fd_unix.go:126 +0x18a
net.(*netFD).Read(0xc421e12080, 0xc4201a0251, 0x1, 0x1, 0xc427c76a20, 0xc427c76ba0, 0xc420302e80)
	/usr/local/go/src/net/fd_unix.go:202 +0x52
net.(*conn).Read(0xc422498058, 0xc4201a0251, 0x1, 0x1, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/net.go:176 +0x6d
net/http.(*connReader).backgroundRead(0xc4201a0240)
	/usr/local/go/src/net/http/server.go:660 +0x62
created by net/http.(*connReader).startBackgroundRead
	/usr/local/go/src/net/http/server.go:656 +0xd8

goroutine 7519 [semacquire]:
sync.runtime_Semacquire(0xc4218257fc)
	/usr/local/go/src/runtime/sema.go:56 +0x39
sync.(*WaitGroup).Wait(0xc4218257f0)
	/usr/local/go/src/sync/waitgroup.go:131 +0x72
github.com/terranodo/tegola/maths/makevalid/plyg.GenerateMultiPolygon(0xc42c4ba000, 0x8e7, 0x8e7, 0x0, 0xc4222835c0, 0x8e7)
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/plyg/ring.go:877 +0x29b
github.com/terranodo/tegola/maths/makevalid.destructure5(0xba0ae0, 0xc4222835c0, 0xb9a4a0, 0xc4254a0000, 0xc42dc42ba8, 0xc4388cc000,
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/main.go:340 +0x2981
github.com/terranodo/tegola/maths/makevalid.MakeValid(0xba0ae0, 0xc4222835c0, 0xb9a4a0, 0xc4254a0000, 0x40b0000000000000, 0xc4242380
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/main.go:350 +0x14e
github.com/terranodo/tegola/maths/validate.makePolygonValid(0xba0ae0, 0xc4222835c0, 0xc429ae0320, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0,
	/home/zhl/go/src/github.com/terranodo/tegola/maths/validate/validate.go:57 +0x3a5
github.com/terranodo/tegola/maths/validate.CleanGeometry(0xba0ae0, 0xc4222835c0, 0x8edc80, 0xc420d28c60, 0x40b0000000000000, 0xc420d
	/home/zhl/go/src/github.com/terranodo/tegola/maths/validate/validate.go:86 +0x660
github.com/terranodo/tegola/mvt.encodeGeometry(0xba0ae0, 0xc4222835c0, 0x8c9da0, 0xc42069f5e0, 0xc1631bf84570a3d7, 0x41531bf84570a3d
	/home/zhl/go/src/github.com/terranodo/tegola/mvt/feature.go:587 +0x1e5
github.com/terranodo/tegola/mvt.(*Feature).VTileFeature(0xc42dc43460, 0xba0ae0, 0xc4222835c0, 0xc420194250, 0x1, 0x1, 0xc4218c0000, 
	/home/zhl/go/src/github.com/terranodo/tegola/mvt/feature.go:84 +0x1a2
github.com/terranodo/tegola/mvt.(*Layer).VTileLayer(0xc42dc43580, 0xba0ae0, 0xc4222835c0, 0xc1631bf84570a3d7, 0x41531bf84570a3d8, 0x
	/home/zhl/go/src/github.com/terranodo/tegola/mvt/layer.go:87 +0x35d
github.com/terranodo/tegola/mvt.(*Tile).VTile(0xc4230437b8, 0xba0ae0, 0xc4222835c0, 0xc1631bf84570a3d7, 0x41531bf84570a3d8, 0xc15ca9
	/home/zhl/go/src/github.com/terranodo/tegola/mvt/tile.go:47 +0x13f
github.com/terranodo/tegola/server.HandleMapZXY.ServeHTTP(0xc4226f372a, 0x3, 0x4, 0x4, 0x6, 0xc4226f3734, 0x3, 0x0, 0xb9fd60, 0xc429
	/home/zhl/go/src/github.com/terranodo/tegola/server/handle_map_zxy.go:199 +0x693
github.com/terranodo/tegola/server.(*HandleMapZXY).ServeHTTP(0xc4201d6bc0, 0xb9fd60, 0xc429bdf400, 0xc42548cc00)
	<autogenerated>:1 +0x6c
github.com/terranodo/tegola/server.TileCacheHandler.func1(0xba0060, 0xc422d8f0a0, 0xc42548cc00)
	/home/zhl/go/src/github.com/terranodo/tegola/server/middleware_tile_cache.go:48 +0x2e0
net/http.HandlerFunc.ServeHTTP(0xc4204bbea0, 0xba0060, 0xc422d8f0a0, 0xc42548cc00)
	/usr/local/go/src/net/http/server.go:1918 +0x44
github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux.(*ContextGroup).Handler.func1(0xba0060, 0xc422d8f0a0, 0xc42548cb00
	/home/zhl/go/src/github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux/context.go:62 +0xe8
github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux.(*TreeMux).ServeHTTP(0xc4200f6150, 0xba0060, 0xc422d8f0a0, 0xc4254
	/home/zhl/go/src/github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux/router.go:252 +0x308
net/http.serverHandler.ServeHTTP(0xc420464820, 0xba0060, 0xc422d8f0a0, 0xc42548cb00)
	/usr/local/go/src/net/http/server.go:2619 +0xb4
net/http.(*conn).serve(0xc421e14140, 0xba0a20, 0xc424e80440)
	/usr/local/go/src/net/http/server.go:1801 +0x71d
created by net/http.(*Server).Serve
	/usr/local/go/src/net/http/server.go:2720 +0x288

goroutine 45004 [runnable]:
github.com/terranodo/tegola/maths/makevalid/plyg.(*Builder).AddPts(0xc42003ad70, 0x407ecaaaaaaaaa02, 0xc428195040, 0x1, 0x3c, 0xc428
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/plyg/builder.go:91 +0x809
github.com/terranodo/tegola/maths/makevalid/plyg.(*RingCol).addPts(0xc42003ae90, 0xb9a4a0, 0xc42175e000, 0xc42003ad70, 0xc428195040,
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/plyg/ring.go:148 +0x289
github.com/terranodo/tegola/maths/makevalid/plyg.BuildRingCol(0xba0ae0, 0xc4201b7e30, 0xb9a4a0, 0xc42175e000, 0xc428195000, 0x22, 0x
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/plyg/ring.go:419 +0x345
github.com/terranodo/tegola/maths/makevalid.destructure5.func4(0x1, 0xba0ae0, 0xc4201b7e30)
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/main.go:309 +0x216
created by github.com/terranodo/tegola/maths/makevalid.destructure5
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/main.go:323 +0x278c

goroutine 45003 [runnable]:
github.com/terranodo/tegola/maths/makevalid/plyg.(*Builder).AddPts(0xc42003bd70, 0x407e9aaaaaaaaa01, 0xc428194950, 0x1, 0x2b, 0xc428
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/plyg/builder.go:91 +0x809
github.com/terranodo/tegola/maths/makevalid/plyg.(*RingCol).addPts(0xc42003be90, 0xb9a4a0, 0xc42175e000, 0xc42003bd70, 0xc428194950,
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/plyg/ring.go:148 +0x289
github.com/terranodo/tegola/maths/makevalid/plyg.BuildRingCol(0xba0ae0, 0xc4201b7e30, 0xb9a4a0, 0xc42175e000, 0xc428194800, 0x21, 0x
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/plyg/ring.go:419 +0x345
github.com/terranodo/tegola/maths/makevalid.destructure5.func4(0x0, 0xba0ae0, 0xc4201b7e30)
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/main.go:309 +0x216
created by github.com/terranodo/tegola/maths/makevalid.destructure5
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/main.go:323 +0x278c

goroutine 19890 [IO wait]:
internal/poll.runtime_pollWait(0x7fad9a6a6d30, 0x72, 0x0)
	/usr/local/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc421e12018, 0x72, 0xffffffffffffff00, 0xb9cba0, 0xb986a8)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0xae
internal/poll.(*pollDesc).waitRead(0xc421e12018, 0xc4201a0100, 0x1, 0x1)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc421e12000, 0xc4201a0101, 0x1, 0x1, 0x0, 0x0, 0x0)
	/usr/local/go/src/internal/poll/fd_unix.go:126 +0x18a
net.(*netFD).Read(0xc421e12000, 0xc4201a0101, 0x1, 0x1, 0xc420341e60, 0xc4206a8000, 0xc4204cbf80)
	/usr/local/go/src/net/fd_unix.go:202 +0x52
net.(*conn).Read(0xc422498050, 0xc4201a0101, 0x1, 0x1, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/net.go:176 +0x6d
net/http.(*connReader).backgroundRead(0xc4201a00f0)
	/usr/local/go/src/net/http/server.go:660 +0x62
created by net/http.(*connReader).startBackgroundRead
	/usr/local/go/src/net/http/server.go:656 +0xd8

goroutine 42369 [IO wait]:
internal/poll.runtime_pollWait(0x7fad9a6a6370, 0x72, 0x0)
	/usr/local/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc42155af98, 0x72, 0xffffffffffffff00, 0xb9cba0, 0xb986a8)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0xae
internal/poll.(*pollDesc).waitRead(0xc42155af98, 0xc42496b000, 0x1000, 0x1000)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc42155af80, 0xc42496b000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/usr/local/go/src/internal/poll/fd_unix.go:126 +0x18a
net.(*netFD).Read(0xc42155af80, 0xc42496b000, 0x1000, 0x1000, 0xc42bf718c8, 0x66682a, 0xc4278b0818)
	/usr/local/go/src/net/fd_unix.go:202 +0x52
net.(*conn).Read(0xc422498580, 0xc42496b000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/net.go:176 +0x6d
net/http.(*connReader).Read(0xc4278b0810, 0xc42496b000, 0x1000, 0x1000, 0xc429faf280, 0xb982c8, 0x2)
	/usr/local/go/src/net/http/server.go:753 +0x105
bufio.(*Reader).fill(0xc4236ba300)
	/usr/local/go/src/bufio/bufio.go:97 +0x11a
bufio.(*Reader).ReadSlice(0xc4236ba300, 0xc429faf20a, 0xc42bf71a38, 0x0, 0x0, 0xff, 0xff)
	/usr/local/go/src/bufio/bufio.go:338 +0x2c
bufio.(*Reader).ReadLine(0xc4236ba300, 0x100, 0xf8, 0x926180, 0x4, 0x220029f36800, 0xf8)
	/usr/local/go/src/bufio/bufio.go:367 +0x34
net/textproto.(*Reader).readLineSlice(0xc4278b13b0, 0xc42bf71b20, 0xc42bf71b20, 0x412688, 0x100, 0x926180)
	/usr/local/go/src/net/textproto/reader.go:55 +0x70
net/textproto.(*Reader).ReadLine(0xc4278b13b0, 0xc4225f9400, 0x0, 0xc42bf71b90, 0x490822)
	/usr/local/go/src/net/textproto/reader.go:36 +0x2b
net/http.readRequest(0xc4236ba300, 0x0, 0xc4225f9400, 0x0, 0x0)
	/usr/local/go/src/net/http/request.go:925 +0x99
net/http.(*conn).readRequest(0xc420089400, 0xba0a20, 0xc429faf240, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/http/server.go:933 +0x17c
net/http.(*conn).serve(0xc420089400, 0xba0a20, 0xc429faf240)
	/usr/local/go/src/net/http/server.go:1739 +0x50e
created by net/http.(*Server).Serve
	/usr/local/go/src/net/http/server.go:2720 +0x288

goroutine 42367 [IO wait]:
internal/poll.runtime_pollWait(0x7fad9a6a6a30, 0x72, 0x0)
	/usr/local/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc42155ab98, 0x72, 0xffffffffffffff00, 0xb9cba0, 0xb986a8)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0xae
internal/poll.(*pollDesc).waitRead(0xc42155ab98, 0xc42bc9e000, 0x1000, 0x1000)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc42155ab80, 0xc42bc9e000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/usr/local/go/src/internal/poll/fd_unix.go:126 +0x18a
net.(*netFD).Read(0xc42155ab80, 0xc42bc9e000, 0x1000, 0x1000, 0xc42559b8c8, 0x66682a, 0xc4278b0ff8)
	/usr/local/go/src/net/fd_unix.go:202 +0x52
net.(*conn).Read(0xc422498570, 0xc42bc9e000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/net.go:176 +0x6d
net/http.(*connReader).Read(0xc4278b0ff0, 0xc42bc9e000, 0x1000, 0x1000, 0xc429fafbc0, 0xb982c8, 0x2)
	/usr/local/go/src/net/http/server.go:753 +0x105
bufio.(*Reader).fill(0xc4236bb500)
	/usr/local/go/src/bufio/bufio.go:97 +0x11a
bufio.(*Reader).ReadSlice(0xc4236bb500, 0xc429fafb0a, 0xc42559ba38, 0x0, 0x0, 0xf3, 0x33)
	/usr/local/go/src/bufio/bufio.go:338 +0x2c
bufio.(*Reader).ReadLine(0xc4236bb500, 0x100, 0xf8, 0x926180, 0xc42559ba98, 0x220000402d89, 0xf8)
	/usr/local/go/src/bufio/bufio.go:367 +0x34
net/textproto.(*Reader).readLineSlice(0xc422217c20, 0xc42559bb20, 0xc42559bb20, 0x412688, 0x100, 0x926180)
	/usr/local/go/src/net/textproto/reader.go:55 +0x70
net/textproto.(*Reader).ReadLine(0xc422217c20, 0xc421ffd200, 0x0, 0xc42559bb90, 0x490822)
	/usr/local/go/src/net/textproto/reader.go:36 +0x2b
net/http.readRequest(0xc4236bb500, 0x0, 0xc421ffd200, 0x0, 0x0)
	/usr/local/go/src/net/http/request.go:925 +0x99
net/http.(*conn).readRequest(0xc420089180, 0xba0a20, 0xc429fafb80, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/http/server.go:933 +0x17c
net/http.(*conn).serve(0xc420089180, 0xba0a20, 0xc429fafb80)
	/usr/local/go/src/net/http/server.go:1739 +0x50e
created by net/http.(*Server).Serve
	/usr/local/go/src/net/http/server.go:2720 +0x288

goroutine 47950 [runnable]:
internal/poll.runtime_pollWait(0x7fad981bf8f8, 0x72, 0x0)
	/usr/local/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc42b173198, 0x72, 0xffffffffffffff00, 0xb9cba0, 0xb986a8)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0xae
internal/poll.(*pollDesc).waitRead(0xc42b173198, 0xc4210e2000, 0x1000, 0x1000)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc42b173180, 0xc4210e2000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/usr/local/go/src/internal/poll/fd_unix.go:126 +0x18a
net.(*netFD).Read(0xc42b173180, 0xc4210e2000, 0x1000, 0x1000, 0x9341e1, 0xc4227a90a0, 0x4def54)
	/usr/local/go/src/net/fd_unix.go:202 +0x52
net.(*conn).Read(0xc427a6c060, 0xc4210e2000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/net.go:176 +0x6d
bufio.(*Reader).Read(0xc4254226c0, 0xc42c4b6860, 0x5, 0x80, 0xc42c4b6330, 0xc4227a9128, 0x490102)
	/usr/local/go/src/bufio/bufio.go:213 +0x30b
io.ReadAtLeast(0xb99e20, 0xc4254226c0, 0xc42c4b6860, 0x5, 0x80, 0x5, 0x0, 0x0, 0xe0)
	/usr/local/go/src/io/io.go:309 +0x86
io.ReadFull(0xb99e20, 0xc4254226c0, 0xc42c4b6860, 0x5, 0x80, 0x400, 0xc00000000eb, 0x40)
	/usr/local/go/src/io/io.go:327 +0x58
github.com/terranodo/tegola/vendor/github.com/jackc/pgx.(*msgReader).rxMsg(0xc42c4b6858, 0xc4200f8700, 0x7fad9a6f2000, 0x0)
	/home/zhl/go/src/github.com/terranodo/tegola/vendor/github.com/jackc/pgx/msg_reader.go:51 +0x83
github.com/terranodo/tegola/vendor/github.com/jackc/pgx.(*Conn).rxMsg(0xc42c4b6300, 0xc429b88280, 0xeb, 0x400, 0xeb)
	/home/zhl/go/src/github.com/terranodo/tegola/vendor/github.com/jackc/pgx/conn.go:1042 +0x4d
github.com/terranodo/tegola/vendor/github.com/jackc/pgx.(*Conn).PrepareEx(0xc42c4b6300, 0x0, 0x0, 0xc422b6b260, 0xd6, 0x0, 0xc429b88
	/home/zhl/go/src/github.com/terranodo/tegola/vendor/github.com/jackc/pgx/conn.go:662 +0x98e
github.com/terranodo/tegola/vendor/github.com/jackc/pgx.(*Conn).Prepare(0xc42c4b6300, 0x0, 0x0, 0xc422b6b260, 0xd6, 0x0, 0xc4227a954
	/home/zhl/go/src/github.com/terranodo/tegola/vendor/github.com/jackc/pgx/conn.go:598 +0x5c
github.com/terranodo/tegola/vendor/github.com/jackc/pgx.(*Conn).Query(0xc42c4b6300, 0xc422b6b260, 0xd6, 0x0, 0x0, 0x0, 0xc4204cad10,
	/home/zhl/go/src/github.com/terranodo/tegola/vendor/github.com/jackc/pgx/query.go:448 +0x370
github.com/terranodo/tegola/vendor/github.com/jackc/pgx.(*ConnPool).Query(0xc4200b2f00, 0xc422b6b260, 0xd6, 0x0, 0x0, 0x0, 0x0, 0x0,
	/home/zhl/go/src/github.com/terranodo/tegola/vendor/github.com/jackc/pgx/conn_pool.go:352 +0x130
github.com/terranodo/tegola/provider/postgis.(*Provider).ForEachFeature(0xc4227a9d10, 0xba0ae0, 0xc422688660, 0xc4201cea64, 0xb, 0x1
	/home/zhl/go/src/github.com/terranodo/tegola/provider/postgis/postgis_foreach.go:43 +0x404
github.com/terranodo/tegola/provider/postgis.Provider.MVTLayer(0xc420017140, 0x9, 0x1538, 0xc420017190, 0x6, 0xc4200171b0, 0x4, 0xc4
	/home/zhl/go/src/github.com/terranodo/tegola/provider/postgis/postgis.go:331 +0x167
github.com/terranodo/tegola/provider/postgis.(*Provider).MVTLayer(0xc4200fd450, 0xba0ae0, 0xc422688660, 0xc4201cea64, 0xb, 0x14, 0x8
	<autogenerated>:1 +0xfb
github.com/terranodo/tegola/server.HandleMapZXY.ServeHTTP.func1(0xc425412620, 0xc421ffc100, 0xc4204cb7c0, 0xc421ae7500, 0x10, 0x10, 
	/home/zhl/go/src/github.com/terranodo/tegola/server/handle_map_zxy.go:155 +0xf2
created by github.com/terranodo/tegola/server.HandleMapZXY.ServeHTTP
	/home/zhl/go/src/github.com/terranodo/tegola/server/handle_map_zxy.go:150 +0x516

goroutine 47884 [IO wait]:
internal/poll.runtime_pollWait(0x7fad9a6025b0, 0x72, 0x0)
	/usr/local/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc42155aa18, 0x72, 0xffffffffffffff00, 0xb9cba0, 0xb986a8)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0xae
internal/poll.(*pollDesc).waitRead(0xc42155aa18, 0xc4278b0a00, 0x1, 0x1)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc42155aa00, 0xc4278b0a31, 0x1, 0x1, 0x0, 0x0, 0x0)
	/usr/local/go/src/internal/poll/fd_unix.go:126 +0x18a
net.(*netFD).Read(0xc42155aa00, 0xc4278b0a31, 0x1, 0x1, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/fd_unix.go:202 +0x52
net.(*conn).Read(0xc422498558, 0xc4278b0a31, 0x1, 0x1, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/net.go:176 +0x6d
net/http.(*connReader).backgroundRead(0xc4278b0a20)
	/usr/local/go/src/net/http/server.go:660 +0x62
created by net/http.(*connReader).startBackgroundRead
	/usr/local/go/src/net/http/server.go:656 +0xd8

goroutine 47952 [IO wait]:
internal/poll.runtime_pollWait(0x7fad9a602df0, 0x72, 0x0)
	/usr/local/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc42155aa98, 0x72, 0xffffffffffffff00, 0xb9cba0, 0xb986a8)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0xae
internal/poll.(*pollDesc).waitRead(0xc42155aa98, 0xc4278b0c00, 0x1, 0x1)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc42155aa80, 0xc4278b0c11, 0x1, 0x1, 0x0, 0x0, 0x0)
	/usr/local/go/src/internal/poll/fd_unix.go:126 +0x18a
net.(*netFD).Read(0xc42155aa80, 0xc4278b0c11, 0x1, 0x1, 0xc429be50e0, 0xc429be5620, 0xc4201d6480)
	/usr/local/go/src/net/fd_unix.go:202 +0x52
net.(*conn).Read(0xc422498560, 0xc4278b0c11, 0x1, 0x1, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/net.go:176 +0x6d
net/http.(*connReader).backgroundRead(0xc4278b0c00)
	/usr/local/go/src/net/http/server.go:660 +0x62
created by net/http.(*connReader).startBackgroundRead
	/usr/local/go/src/net/http/server.go:656 +0xd8

goroutine 7517 [select]:
github.com/terranodo/tegola/maths/makevalid.destructure5(0xba0ae0, 0xc4201b7e30, 0xb9a4a0, 0xc42175e000, 0xc423786ba8, 0xc4313ec000,
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/main.go:326 +0x28af
github.com/terranodo/tegola/maths/makevalid.MakeValid(0xba0ae0, 0xc4201b7e30, 0xb9a4a0, 0xc42175e000, 0x40b0000000000000, 0xc4202121
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/main.go:350 +0x14e
github.com/terranodo/tegola/maths/validate.makePolygonValid(0xba0ae0, 0xc4201b7e30, 0xc42022c2d0, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0,
	/home/zhl/go/src/github.com/terranodo/tegola/maths/validate/validate.go:57 +0x3a5
github.com/terranodo/tegola/maths/validate.CleanGeometry(0xba0ae0, 0xc4201b7e30, 0x8edc80, 0xc4228da040, 0x40b0000000000000, 0xc4228
	/home/zhl/go/src/github.com/terranodo/tegola/maths/validate/validate.go:86 +0x660
github.com/terranodo/tegola/mvt.encodeGeometry(0xba0ae0, 0xc4201b7e30, 0x8c9da0, 0xc4226f0020, 0xc15ca9f46828f5c2, 0x415ca9f46828f5c
	/home/zhl/go/src/github.com/terranodo/tegola/mvt/feature.go:587 +0x1e5
github.com/terranodo/tegola/mvt.(*Feature).VTileFeature(0xc423787460, 0xba0ae0, 0xc4201b7e30, 0xc42014e5a0, 0x1, 0x1, 0xc4241fa000, 
	/home/zhl/go/src/github.com/terranodo/tegola/mvt/feature.go:84 +0x1a2
github.com/terranodo/tegola/mvt.(*Layer).VTileLayer(0xc423787580, 0xba0ae0, 0xc4201b7e30, 0xc15ca9f46828f5c2, 0x415ca9f46828f5c2, 0x
	/home/zhl/go/src/github.com/terranodo/tegola/mvt/layer.go:87 +0x35d
github.com/terranodo/tegola/mvt.(*Tile).VTile(0xc4230457b8, 0xba0ae0, 0xc4201b7e30, 0xc15ca9f46828f5c2, 0x415ca9f46828f5c2, 0xc1531b
	/home/zhl/go/src/github.com/terranodo/tegola/mvt/tile.go:47 +0x13f
github.com/terranodo/tegola/server.HandleMapZXY.ServeHTTP(0xc420268aca, 0x3, 0x4, 0x5, 0x5, 0xc420268ad4, 0x3, 0x0, 0xb9fd60, 0xc423
	/home/zhl/go/src/github.com/terranodo/tegola/server/handle_map_zxy.go:199 +0x693
github.com/terranodo/tegola/server.(*HandleMapZXY).ServeHTTP(0xc4201d6bc0, 0xb9fd60, 0xc4230029a0, 0xc4233a6000)
	<autogenerated>:1 +0x6c
github.com/terranodo/tegola/server.TileCacheHandler.func1(0xba0060, 0xc4201fce00, 0xc4233a6000)
	/home/zhl/go/src/github.com/terranodo/tegola/server/middleware_tile_cache.go:48 +0x2e0
net/http.HandlerFunc.ServeHTTP(0xc4204bbea0, 0xba0060, 0xc4201fce00, 0xc4233a6000)
	/usr/local/go/src/net/http/server.go:1918 +0x44
github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux.(*ContextGroup).Handler.func1(0xba0060, 0xc4201fce00, 0xc429a3c100
	/home/zhl/go/src/github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux/context.go:62 +0xe8
github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux.(*TreeMux).ServeHTTP(0xc4200f6150, 0xba0060, 0xc4201fce00, 0xc429a
	/home/zhl/go/src/github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux/router.go:252 +0x308
net/http.serverHandler.ServeHTTP(0xc420464820, 0xba0060, 0xc4201fce00, 0xc429a3c100)
	/usr/local/go/src/net/http/server.go:2619 +0xb4
net/http.(*conn).serve(0xc421e14000, 0xba0a20, 0xc424e80180)
	/usr/local/go/src/net/http/server.go:1801 +0x71d
created by net/http.(*Server).Serve
	/usr/local/go/src/net/http/server.go:2720 +0x288

goroutine 7520 [IO wait]:
internal/poll.runtime_pollWait(0x7fad9a6a6af0, 0x72, 0x0)
	/usr/local/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc421e12198, 0x72, 0xffffffffffffff00, 0xb9cba0, 0xb986a8)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0xae
internal/poll.(*pollDesc).waitRead(0xc421e12198, 0xc423cec000, 0x1000, 0x1000)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc421e12180, 0xc423cec000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/usr/local/go/src/internal/poll/fd_unix.go:126 +0x18a
net.(*netFD).Read(0xc421e12180, 0xc423cec000, 0x1000, 0x1000, 0xc429e518c8, 0x66682a, 0xc4201a0428)
	/usr/local/go/src/net/fd_unix.go:202 +0x52
net.(*conn).Read(0xc422498070, 0xc423cec000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/net.go:176 +0x6d
net/http.(*connReader).Read(0xc4201a0420, 0xc423cec000, 0x1000, 0x1000, 0xc424e803c0, 0x320000000003, 0x198)
	/usr/local/go/src/net/http/server.go:753 +0x105
bufio.(*Reader).fill(0xc4203dc540)
	/usr/local/go/src/bufio/bufio.go:97 +0x11a
bufio.(*Reader).ReadSlice(0xc4203dc540, 0xc4226b670a, 0xc429e51a10, 0xc429e51a80, 0x470a2a, 0xc429e51ab8, 0x411f27)
	/usr/local/go/src/bufio/bufio.go:338 +0x2c
bufio.(*Reader).ReadLine(0xc4203dc540, 0x100, 0xf8, 0x926180, 0x4, 0x220000c0d740, 0xf8)
	/usr/local/go/src/bufio/bufio.go:367 +0x34
net/textproto.(*Reader).readLineSlice(0xc4278b0e70, 0xc429e51b20, 0xc429e51b20, 0x412688, 0x100, 0x926180)
	/usr/local/go/src/net/textproto/reader.go:55 +0x70
net/textproto.(*Reader).ReadLine(0xc4278b0e70, 0xc42c3df300, 0x0, 0xc429e51b90, 0x490822)
	/usr/local/go/src/net/textproto/reader.go:36 +0x2b
net/http.readRequest(0xc4203dc540, 0x0, 0xc42c3df300, 0x0, 0x0)
	/usr/local/go/src/net/http/request.go:925 +0x99
net/http.(*conn).readRequest(0xc421e141e0, 0xba0a20, 0xc424e80380, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/http/server.go:933 +0x17c
net/http.(*conn).serve(0xc421e141e0, 0xba0a20, 0xc424e80380)
	/usr/local/go/src/net/http/server.go:1739 +0x50e
created by net/http.(*Server).Serve
	/usr/local/go/src/net/http/server.go:2720 +0x288

goroutine 7518 [semacquire]:
sync.runtime_Semacquire(0xc4225a6b4c)
	/usr/local/go/src/runtime/sema.go:56 +0x39
sync.(*WaitGroup).Wait(0xc4225a6b40)
	/usr/local/go/src/sync/waitgroup.go:131 +0x72
github.com/terranodo/tegola/maths/makevalid/plyg.GenerateMultiPolygon(0xc429c66000, 0x80a, 0x80a, 0x0, 0xc4218cc7e0, 0x80a)
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/plyg/ring.go:877 +0x29b
github.com/terranodo/tegola/maths/makevalid.destructure5(0xba0ae0, 0xc4218cc7e0, 0xb9a4a0, 0xc439352000, 0xc429e4cba8, 0xc43044c000,
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/main.go:340 +0x2981
github.com/terranodo/tegola/maths/makevalid.MakeValid(0xba0ae0, 0xc4218cc7e0, 0xb9a4a0, 0xc439352000, 0x40b0000000000000, 0xc424f080
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/main.go:350 +0x14e
github.com/terranodo/tegola/maths/validate.makePolygonValid(0xba0ae0, 0xc4218cc7e0, 0xc43863c050, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0,
	/home/zhl/go/src/github.com/terranodo/tegola/maths/validate/validate.go:57 +0x3a5
github.com/terranodo/tegola/maths/validate.CleanGeometry(0xba0ae0, 0xc4218cc7e0, 0x8edc80, 0xc42068c040, 0x40b0000000000000, 0xc4206
	/home/zhl/go/src/github.com/terranodo/tegola/maths/validate/validate.go:86 +0x660
github.com/terranodo/tegola/mvt.encodeGeometry(0xba0ae0, 0xc4218cc7e0, 0x8c9da0, 0xc4299f1520, 0xc1631bf84570a3d7, 0x415ca9f46828f5c
	/home/zhl/go/src/github.com/terranodo/tegola/mvt/feature.go:587 +0x1e5
github.com/terranodo/tegola/mvt.(*Feature).VTileFeature(0xc429e4d460, 0xba0ae0, 0xc4218cc7e0, 0xc42044e3a0, 0x1, 0x1, 0xc4261a8000, 
	/home/zhl/go/src/github.com/terranodo/tegola/mvt/feature.go:84 +0x1a2
github.com/terranodo/tegola/mvt.(*Layer).VTileLayer(0xc429e4d580, 0xba0ae0, 0xc4218cc7e0, 0xc1631bf84570a3d7, 0x415ca9f46828f5c2, 0x
	/home/zhl/go/src/github.com/terranodo/tegola/mvt/layer.go:87 +0x35d
github.com/terranodo/tegola/mvt.(*Tile).VTile(0xc42329d7b8, 0xba0ae0, 0xc4218cc7e0, 0xc1631bf84570a3d7, 0x415ca9f46828f5c2, 0xc15ca9
	/home/zhl/go/src/github.com/terranodo/tegola/mvt/tile.go:47 +0x13f
github.com/terranodo/tegola/server.HandleMapZXY.ServeHTTP(0xc420fda52a, 0x3, 0x4, 0x4, 0x5, 0xc420fda534, 0x3, 0x0, 0xb9fd60, 0xc422
	/home/zhl/go/src/github.com/terranodo/tegola/server/handle_map_zxy.go:199 +0x693
github.com/terranodo/tegola/server.(*HandleMapZXY).ServeHTTP(0xc4201d6bc0, 0xb9fd60, 0xc4220029e0, 0xc421ffd400)
	<autogenerated>:1 +0x6c
github.com/terranodo/tegola/server.TileCacheHandler.func1(0xba0060, 0xc4201fddc0, 0xc421ffd400)
	/home/zhl/go/src/github.com/terranodo/tegola/server/middleware_tile_cache.go:48 +0x2e0
net/http.HandlerFunc.ServeHTTP(0xc4204bbea0, 0xba0060, 0xc4201fddc0, 0xc421ffd400)
	/usr/local/go/src/net/http/server.go:1918 +0x44
github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux.(*ContextGroup).Handler.func1(0xba0060, 0xc4201fddc0, 0xc4233aab00
	/home/zhl/go/src/github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux/context.go:62 +0xe8
github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux.(*TreeMux).ServeHTTP(0xc4200f6150, 0xba0060, 0xc4201fddc0, 0xc4233
	/home/zhl/go/src/github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux/router.go:252 +0x308
net/http.serverHandler.ServeHTTP(0xc420464820, 0xba0060, 0xc4201fddc0, 0xc4233aab00)
	/usr/local/go/src/net/http/server.go:2619 +0xb4
net/http.(*conn).serve(0xc421e140a0, 0xba0a20, 0xc424e80240)
	/usr/local/go/src/net/http/server.go:1801 +0x71d
created by net/http.(*Server).Serve
	/usr/local/go/src/net/http/server.go:2720 +0x288

goroutine 45006 [runnable]:
github.com/terranodo/tegola/maths/makevalid/plyg.(*Builder).AddPts(0xc42003fd70, 0x407eaaaaaaaaaa02, 0xc428194c60, 0x1, 0x3a, 0xc428
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/plyg/builder.go:91 +0x809
github.com/terranodo/tegola/maths/makevalid/plyg.(*RingCol).addPts(0xc42003fe90, 0xb9a4a0, 0xc42175e000, 0xc42003fd70, 0xc428194c60,
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/plyg/ring.go:148 +0x289
github.com/terranodo/tegola/maths/makevalid/plyg.BuildRingCol(0xba0ae0, 0xc4201b7e30, 0xb9a4a0, 0xc42175e000, 0xc428194c00, 0x23, 0x
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/plyg/ring.go:419 +0x345
github.com/terranodo/tegola/maths/makevalid.destructure5.func4(0x3, 0xba0ae0, 0xc4201b7e30)
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/main.go:309 +0x216
created by github.com/terranodo/tegola/maths/makevalid.destructure5
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/main.go:323 +0x278c

goroutine 43317 [runnable]:
github.com/terranodo/tegola/maths/makevalid/plyg.merge2AdjectRC(0xc425898000, 0x224, 0x400, 0xc030000000000000, 0x4099440000000000, 
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/plyg/ring.go:640 +0x17b7
github.com/terranodo/tegola/maths/makevalid/plyg.MergeCols(0xc42c4ba000, 0x8e6, 0x8e7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/plyg/ring.go:831 +0x101
github.com/terranodo/tegola/maths/makevalid/plyg.GenerateMultiPolygon.func1(0x1)
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/plyg/ring.go:845 +0x2e1
created by github.com/terranodo/tegola/maths/makevalid/plyg.GenerateMultiPolygon
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/plyg/ring.go:856 +0x176

goroutine 42801 [runnable]:
time.Now(0x8acde0, 0xc429e517e8, 0xc429e51198)
	/usr/local/go/src/time/time.go:1043 +0xb7
github.com/terranodo/tegola/maths/makevalid/plyg.merge2AdjectRC(0xc4261ca000, 0x155, 0x200, 0xc030000000000000, 0x40ae180000000000, 
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/plyg/ring.go:594 +0x1978
github.com/terranodo/tegola/maths/makevalid/plyg.MergeCols(0xc429c66000, 0x80a, 0x80a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/plyg/ring.go:831 +0x101
github.com/terranodo/tegola/maths/makevalid/plyg.GenerateMultiPolygon.func1(0x3)
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/plyg/ring.go:845 +0x2e1
created by github.com/terranodo/tegola/maths/makevalid/plyg.GenerateMultiPolygon
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/plyg/ring.go:856 +0x176

goroutine 42366 [semacquire]:
sync.runtime_Semacquire(0xc42541262c)
	/usr/local/go/src/runtime/sema.go:56 +0x39
sync.(*WaitGroup).Wait(0xc425412620)
	/usr/local/go/src/sync/waitgroup.go:131 +0x72
github.com/terranodo/tegola/server.HandleMapZXY.ServeHTTP(0xc4272e756a, 0x3, 0x14, 0x8510d, 0x55ff6, 0xc4272e757f, 0x3, 0x0, 0xb9fd6
	/home/zhl/go/src/github.com/terranodo/tegola/server/handle_map_zxy.go:177 +0x54f
github.com/terranodo/tegola/server.(*HandleMapZXY).ServeHTTP(0xc4201d6bc0, 0xb9fd60, 0xc420506860, 0xc421ffc100)
	<autogenerated>:1 +0x6c
github.com/terranodo/tegola/server.TileCacheHandler.func1(0xba0060, 0xc422d8e620, 0xc421ffc100)
	/home/zhl/go/src/github.com/terranodo/tegola/server/middleware_tile_cache.go:48 +0x2e0
net/http.HandlerFunc.ServeHTTP(0xc4204bbea0, 0xba0060, 0xc422d8e620, 0xc421ffc100)
	/usr/local/go/src/net/http/server.go:1918 +0x44
github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux.(*ContextGroup).Handler.func1(0xba0060, 0xc422d8e620, 0xc42548dd00
	/home/zhl/go/src/github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux/context.go:62 +0xe8
github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux.(*TreeMux).ServeHTTP(0xc4200f6150, 0xba0060, 0xc422d8e620, 0xc4254
	/home/zhl/go/src/github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux/router.go:252 +0x308
net/http.serverHandler.ServeHTTP(0xc420464820, 0xba0060, 0xc422d8e620, 0xc42548dd00)
	/usr/local/go/src/net/http/server.go:2619 +0xb4
net/http.(*conn).serve(0xc420089040, 0xba0a20, 0xc429faf940)
	/usr/local/go/src/net/http/server.go:1801 +0x71d
created by net/http.(*Server).Serve
	/usr/local/go/src/net/http/server.go:2720 +0x288

goroutine 42365 [runnable]:
syscall.Syscall6(0x101, 0xffffffffffffff9c, 0xc4270a2200, 0x80242, 0x1b6, 0x0, 0x0, 0x42, 0x80242, 0x0)
	/usr/local/go/src/syscall/asm_linux_amd64.s:44 +0x5
syscall.openat(0xffffffffffffff9c, 0xc4265596e0, 0x30, 0x80242, 0x1b6, 0xc426559703, 0x6, 0xc42378b960)
	/usr/local/go/src/syscall/zsyscall_linux_amd64.go:38 +0xba
syscall.Open(0xc4265596e0, 0x30, 0x80242, 0xc4000001b6, 0x0, 0xc42378b988, 0x2)
	/usr/local/go/src/syscall/syscall_linux.go:51 +0x50
os.OpenFile(0xc4265596e0, 0x30, 0x242, 0x1b6, 0xc42378b9c8, 0xc42378b9d0, 0xc437e567e0)
	/usr/local/go/src/os/file_unix.go:158 +0x7a
os.Create(0xc4265596e0, 0x30, 0xc437e567e0, 0x0, 0x0)
	/usr/local/go/src/os/file.go:247 +0x46
github.com/terranodo/tegola/cache/filecache.(*Filecache).Set(0xc4201d7840, 0xc4204cb980, 0xc427a64d00, 0x185, 0x185, 0x0, 0x0)
	/home/zhl/go/src/github.com/terranodo/tegola/cache/filecache/filecache.go:196 +0x2b2
github.com/terranodo/tegola/server.TileCacheHandler.func1(0xba0060, 0xc422d8f180, 0xc421ffc300)
	/home/zhl/go/src/github.com/terranodo/tegola/server/middleware_tile_cache.go:55 +0x37b
net/http.HandlerFunc.ServeHTTP(0xc4204bbea0, 0xba0060, 0xc422d8f180, 0xc421ffc300)
	/usr/local/go/src/net/http/server.go:1918 +0x44
github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux.(*ContextGroup).Handler.func1(0xba0060, 0xc422d8f180, 0xc42548dc00
	/home/zhl/go/src/github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux/context.go:62 +0xe8
github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux.(*TreeMux).ServeHTTP(0xc4200f6150, 0xba0060, 0xc422d8f180, 0xc4254
	/home/zhl/go/src/github.com/terranodo/tegola/vendor/github.com/dimfeld/httptreemux/router.go:252 +0x308
net/http.serverHandler.ServeHTTP(0xc420464820, 0xba0060, 0xc422d8f180, 0xc42548dc00)
	/usr/local/go/src/net/http/server.go:2619 +0xb4
net/http.(*conn).serve(0xc420088f00, 0xba0a20, 0xc429faf700)
	/usr/local/go/src/net/http/server.go:1801 +0x71d
created by net/http.(*Server).Serve
	/usr/local/go/src/net/http/server.go:2720 +0x288

goroutine 45005 [runnable]:
github.com/terranodo/tegola/maths/makevalid/plyg.(*Builder).AddPts(0xc425667d70, 0x407ebaaaaaaaaa02, 0xc428193c10, 0x1, 0x1f, 0xc428
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/plyg/builder.go:91 +0x809
github.com/terranodo/tegola/maths/makevalid/plyg.(*RingCol).addPts(0xc425667e90, 0xb9a4a0, 0xc42175e000, 0xc425667d70, 0xc428193c10,
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/plyg/ring.go:148 +0x289
github.com/terranodo/tegola/maths/makevalid/plyg.BuildRingCol(0xba0ae0, 0xc4201b7e30, 0xb9a4a0, 0xc42175e000, 0xc428193c00, 0x1e, 0x
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/plyg/ring.go:419 +0x345
github.com/terranodo/tegola/maths/makevalid.destructure5.func4(0x2, 0xba0ae0, 0xc4201b7e30)
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/main.go:309 +0x216
created by github.com/terranodo/tegola/maths/makevalid.destructure5
	/home/zhl/go/src/github.com/terranodo/tegola/maths/makevalid/main.go:323 +0x278c

goroutine 18594 [IO wait, 1 minutes]:
internal/poll.runtime_pollWait(0x7fad9a602430, 0x72, 0x0)
	/usr/local/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc421e12118, 0x72, 0xffffffffffffff00, 0xb9cba0, 0xb986a8)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0xae
internal/poll.(*pollDesc).waitRead(0xc421e12118, 0xc4201a0400, 0x1, 0x1)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc421e12100, 0xc4201a04f1, 0x1, 0x1, 0x0, 0x0, 0x0)
	/usr/local/go/src/internal/poll/fd_unix.go:126 +0x18a
net.(*netFD).Read(0xc421e12100, 0xc4201a04f1, 0x1, 0x1, 0xc421fcef60, 0x0, 0xb9a601)
	/usr/local/go/src/net/fd_unix.go:202 +0x52
net.(*conn).Read(0xc422498068, 0xc4201a04f1, 0x1, 0x1, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/net.go:176 +0x6d
net/http.(*connReader).backgroundRead(0xc4201a04e0)
	/usr/local/go/src/net/http/server.go:660 +0x62
created by net/http.(*connReader).startBackgroundRead
	/usr/local/go/src/net/http/server.go:656 +0xd8

goroutine 47935 [IO wait]:
internal/poll.runtime_pollWait(0x7fad9a6a6bb0, 0x72, 0x0)
	/usr/local/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc42155ab18, 0x72, 0xffffffffffffff00, 0xb9cba0, 0xb986a8)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0xae
internal/poll.(*pollDesc).waitRead(0xc42155ab18, 0xc4278b0d00, 0x1, 0x1)
	/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc42155ab00, 0xc4278b0df1, 0x1, 0x1, 0x0, 0x0, 0x0)
	/usr/local/go/src/internal/poll/fd_unix.go:126 +0x18a
net.(*netFD).Read(0xc42155ab00, 0xc4278b0df1, 0x1, 0x1, 0xc423501320, 0xb9a4a0, 0xc4202717c0)
	/usr/local/go/src/net/fd_unix.go:202 +0x52
net.(*conn).Read(0xc422498568, 0xc4278b0df1, 0x1, 0x1, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/net.go:176 +0x6d
net/http.(*connReader).backgroundRead(0xc4278b0de0)
	/usr/local/go/src/net/http/server.go:660 +0x62
created by net/http.(*connReader).startBackgroundRead
	/usr/local/go/src/net/http/server.go:656 +0xd8
[root@localhost ~/tegola-osm]./tegola -config=tegola.toml 
@gdey gdey added the bug label Nov 21, 2017
@ARolek
Copy link
Member

ARolek commented Nov 21, 2017

Thanks for the report. I have a fix on branch issue-188. I will merge to master and rollout a release today.

@ARolek ARolek changed the title concurrent map read and map write Filecache: concurrent map read and map write Nov 21, 2017
@ARolek ARolek changed the title Filecache: concurrent map read and map write Filecache: concurrent map read and map write on Set() Nov 21, 2017
@ARolek ARolek closed this as completed in 73795a7 Nov 21, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants