#1547·revel

panic in "concurrent map read and map write"

Author: wiselikeCreated Jan 27, 2022Updated Apr 12, 2022
Labelstype-bugpriority-shouldeffort-unknownstatus-needs-testingresolved

when I was running an server, error occured:

bash
fatal error: concurrent map read and map write

goroutine 164 [running]:
runtime.throw(0x8e60fd, 0x21)
        /home/jim/golang/go/src/runtime/panic.go:1117 +0x54 fp=0x4000b2ad40 sp=0x4000b2ad10 pc=0x49434
runtime.mapaccess2_faststr(0x80c720, 0x4000358b40, 0x79e468, 0x7, 0x9dda38, 0x4000456050)
        /home/jim/golang/go/src/runtime/map_faststr.go:116 +0x630 fp=0x4000b2ade0 sp=0x4000b2ad40 pc=0x26010
github.com/revel/revel.(*Controller).SetTypeAction(0x40004612b0, 0x4000ad6000, 0xb, 0x400016cc88, 0x8, 0x0, 0x0, 0x0)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/controller.go:414 +0x480 fp=0x4000b2b000 sp=0x4000b2ade0 pc=0x4c4390
github.com/revel/revel.(*Controller).SetAction(0x40004612b0, 0x4000ad6000, 0xb, 0x400016cc88, 0x8, 0x0, 0x0)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/controller.go:385 +0x50 fp=0x4000b2b060 sp=0x4000b2b000 pc=0x4c3ee0
github.com/leanote/leanote/app/lea/route.RouterFilter(0x40004612b0, 0x40003cdf38, 0x9, 0x9)
        /home/jim/leanote/leanote-of-unofficial-nolicensed/app/lea/route/Route.go:76 +0x388 fp=0x4000b2b240 sp=0x4000b2b060 pc=0x706178
github.com/revel/revel.PanicFilter(0x40004612b0, 0x40003cdf30, 0xa, 0xa)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/panic.go:21 +0xc4 fp=0x4000b2b2e0 sp=0x4000b2b240 pc=0x4d5d34
github.com/revel/revel.glob..func33(0x40004612b0, 0x40003cdf28, 0xb, 0xb)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/watcher.go:298 +0x13c fp=0x4000b2b350 sp=0x4000b2b2e0 pc=0x507b5c
github.com/revel/revel.handleInternal(0x9d2878, 0x400035d878)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/server-engine.go:193 +0x4f8 fp=0x4000b2b590 sp=0x4000b2b350 pc=0x4eac18
github.com/revel/revel.(*GoHttpServer).handleMux(0x40005b3360, 0x9d7430, 0x40006a2d20, 0x40006ae600)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:158 +0x474 fp=0x4000b2b6c0 sp=0x4000b2b590 pc=0x4edda4
github.com/revel/revel.(*GoHttpServer).Handle(0x40005b3360, 0x9d7430, 0x40006a2d20, 0x40006ae600)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:104 +0xa8 fp=0x4000b2b710 sp=0x4000b2b6c0 pc=0x4ed1c8
github.com/revel/revel.(*GoHttpServer).Init.func3(0x9d7430, 0x40006a2d20, 0x40006ae600)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:57 +0x44 fp=0x4000b2b750 sp=0x4000b2b710 pc=0x50b6a4
net/http.HandlerFunc.ServeHTTP(0x400038a980, 0x9d7430, 0x40006a2d20, 0x40006ae600)
        /home/jim/golang/go/src/net/http/server.go:2049 +0x40 fp=0x4000b2b780 sp=0x4000b2b750 pc=0x371600
net/http.serverHandler.ServeHTTP(0x400006a000, 0x9d7430, 0x40006a2d20, 0x40006ae600)
        /home/jim/golang/go/src/net/http/server.go:2867 +0x244 fp=0x4000b2b7d0 sp=0x4000b2b780 pc=0x3752a4
net/http.(*conn).serve(0x40001d6140, 0x9d87a8, 0x4000814000)
        /home/jim/golang/go/src/net/http/server.go:1932 +0x1670 fp=0x4000b2bfc0 sp=0x4000b2b7d0 pc=0x3707f0
runtime.goexit()
        /home/jim/golang/go/src/runtime/asm_arm64.s:1130 +0x4 fp=0x4000b2bfc0 sp=0x4000b2bfc0 pc=0x7eeb4
created by net/http.(*Server).Serve
        /home/jim/golang/go/src/net/http/server.go:2993 +0x78c

goroutine 1 [IO wait]:
internal/poll.runtime_pollWait(0x7f087c25d0, 0x72, 0x0)
        /home/jim/golang/go/src/runtime/netpoll.go:222 +0x50
internal/poll.(*pollDesc).wait(0x4000438018, 0x72, 0x0, 0x0, 0x0)
        /home/jim/golang/go/src/internal/poll/fd_poll_runtime.go:87 +0x90
internal/poll.(*pollDesc).waitRead(0x4000438018, 0xffffffffffffff00, 0x0, 0x0)
        /home/jim/golang/go/src/internal/poll/fd_poll_runtime.go:92 +0x3c
internal/poll.(*FD).Accept(0x4000438000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
        /home/jim/golang/go/src/internal/poll/fd_unix.go:401 +0x340
net.(*netFD).accept(0x4000438000, 0x0, 0x0, 0x0)
        /home/jim/golang/go/src/net/fd_unix.go:172 +0x4c
net.(*TCPListener).accept(0x40005b4198, 0x0, 0x0, 0x0)
        /home/jim/golang/go/src/net/tcpsock_posix.go:139 +0x44
net.(*TCPListener).Accept(0x40005b4198, 0x0, 0x0, 0x0, 0x0)
        /home/jim/golang/go/src/net/tcpsock.go:261 +0x58
net/http.(*Server).Serve(0x400006a000, 0x9d7220, 0x40005b4198, 0x0, 0x0)
        /home/jim/golang/go/src/net/http/server.go:2961 +0x374
github.com/revel/revel.(*GoHttpServer).Start(0x40005b3360)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:94 +0x518
github.com/revel/revel.Run(0x0)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/server.go:88 +0x1ec
github.com/leanote/leanote/app/tmp/run.Run(0x0)
        /home/jim/leanote/leanote-of-unofficial-nolicensed/app/tmp/run/run.go:36 +0x2c
main.main()
        /home/jim/leanote/leanote-of-unofficial-nolicensed/app/tmp/main.go:24 +0xcc

goroutine 21 [chan receive]:
gopkg.in/natefinch/lumberjack%2ev2.(*Logger).millRun(0x4000092c60)
        /home/jim/go/pkg/mod/gopkg.in/natefinch/[email protected]/lumberjack.go:379 +0x44
created by gopkg.in/natefinch/lumberjack%2ev2.(*Logger).mill.func1
        /home/jim/go/pkg/mod/gopkg.in/natefinch/[email protected]/lumberjack.go:390 +0x8c

goroutine 28 [select]:
gopkg.in/mgo%2ev2.(*mongoCluster).syncServersLoop(0x400012c300)
        /home/jim/go/pkg/mod/gopkg.in/[email protected]/cluster.go:394 +0x408
created by gopkg.in/mgo%2ev2.newCluster
        /home/jim/go/pkg/mod/gopkg.in/[email protected]/cluster.go:78 +0x220

goroutine 150 [syscall]:
syscall.Syscall6(0x16, 0x9, 0x400098fa08, 0x7, 0xffffffffffffffff, 0x0, 0x0, 0x0, 0x0, 0x0)
        /home/jim/golang/go/src/syscall/asm_linux_arm64.s:35 +0x10
golang.org/x/sys/unix.EpollWait(0x9, 0x400098fa08, 0x7, 0x7, 0xffffffffffffffff, 0x0, 0x0, 0x0)
        /home/jim/go/pkg/mod/golang.org/x/[email protected]/unix/zsyscall_linux_arm64.go:56 +0x94
github.com/fsnotify/fsnotify.(*fdPoller).wait(0x40001b49a0, 0x0, 0x0, 0x0)
        /home/jim/go/pkg/mod/github.com/fsnotify/[email protected]/inotify_poller.go:87 +0xa4
github.com/fsnotify/fsnotify.(*Watcher).readEvents(0x40003d8780)
        /home/jim/go/pkg/mod/github.com/fsnotify/[email protected]/inotify.go:193 +0x268
created by github.com/fsnotify/fsnotify.NewWatcher
        /home/jim/go/pkg/mod/github.com/fsnotify/[email protected]/inotify.go:60 +0x344

goroutine 5 [sleep]:
time.Sleep(0x37e11d600)
        /home/jim/golang/go/src/runtime/time.go:193 +0xcc
gopkg.in/mgo%2ev2.(*mongoServer).pinger(0x40006a2000, 0x59ff01)
        /home/jim/go/pkg/mod/gopkg.in/[email protected]/server.go:301 +0x170
created by gopkg.in/mgo%2ev2.newServer
        /home/jim/go/pkg/mod/gopkg.in/[email protected]/server.go:89 +0x1f0

goroutine 7 [IO wait]:
internal/poll.runtime_pollWait(0x7f087c26b8, 0x72, 0x4000b2f9c8)
        /home/jim/golang/go/src/runtime/netpoll.go:222 +0x50
internal/poll.(*pollDesc).wait(0x40005ac298, 0x72, 0xffffffffffffff00, 0x0, 0x0)
        /home/jim/golang/go/src/internal/poll/fd_poll_runtime.go:87 +0x90
internal/poll.(*pollDesc).waitRead(0x40005ac298, 0x0, 0x0, 0x0)
        /home/jim/golang/go/src/internal/poll/fd_poll_runtime.go:92 +0x3c
internal/poll.(*FD).Read(0x40005ac280, 0x4000352180, 0x24, 0x24, 0x0, 0x0, 0x0)
        /home/jim/golang/go/src/internal/poll/fd_unix.go:166 +0x320
net.(*netFD).Read(0x40005ac280, 0x4000352180, 0x24, 0x24, 0x0, 0x0, 0x0)
        /home/jim/golang/go/src/net/fd_posix.go:55 +0x54
net.(*conn).Read(0x400026a038, 0x4000352180, 0x24, 0x24, 0x0, 0x0, 0x0)
        /home/jim/golang/go/src/net/net.go:183 +0x78
gopkg.in/mgo%2ev2.fill(0x9dc010, 0x400026a038, 0x4000352180, 0x24, 0x24, 0x0, 0x0)
        /home/jim/go/pkg/mod/gopkg.in/[email protected]/socket.go:535 +0x5c
gopkg.in/mgo%2ev2.(*mongoSocket).readLoop(0x40006a20e0)
        /home/jim/go/pkg/mod/gopkg.in/[email protected]/socket.go:551 +0xd0
created by gopkg.in/mgo%2ev2.newSocket
        /home/jim/go/pkg/mod/gopkg.in/[email protected]/socket.go:194 +0x2e8

goroutine 163 [runnable]:
github.com/revel/revel.(*SessionCookieEngine).Decode(0x4000308068, 0x4000461380)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/session_adapter_cookie.go:56 +0xb8
github.com/revel/revel.SessionFilter(0x4000461380, 0x40003cdf50, 0x6, 0x6)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/session_filter.go:11 +0x4c
github.com/revel/revel.ParamsFilter(0x4000461380, 0x40003cdf48, 0x7, 0x7)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/params.go:179 +0xf4
github.com/revel/revel.FilterConfiguringFilter(0x4000461380, 0x40003cdf40, 0x8, 0x8)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/filterconfig.go:211 +0x178
github.com/leanote/leanote/app/lea/route.RouterFilter(0x4000461380, 0x40003cdf38, 0x9, 0x9)
        /home/jim/leanote/leanote-of-unofficial-nolicensed/app/lea/route/Route.go:99 +0x658
github.com/revel/revel.PanicFilter(0x4000461380, 0x40003cdf30, 0xa, 0xa)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/panic.go:21 +0xc4
github.com/revel/revel.glob..func33(0x4000461380, 0x40003cdf28, 0xb, 0xb)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/watcher.go:298 +0x13c
github.com/revel/revel.handleInternal(0x9d2878, 0x400035d908)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/server-engine.go:193 +0x4f8
github.com/revel/revel.(*GoHttpServer).handleMux(0x40005b3360, 0x9d7430, 0x400056e700, 0x4000938b00)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:158 +0x474
github.com/revel/revel.(*GoHttpServer).Handle(0x40005b3360, 0x9d7430, 0x400056e700, 0x4000938b00)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:104 +0xa8
github.com/revel/revel.(*GoHttpServer).Init.func3(0x9d7430, 0x400056e700, 0x4000938b00)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:57 +0x44
net/http.HandlerFunc.ServeHTTP(0x400038a980, 0x9d7430, 0x400056e700, 0x4000938b00)
        /home/jim/golang/go/src/net/http/server.go:2049 +0x40
net/http.serverHandler.ServeHTTP(0x400006a000, 0x9d7430, 0x400056e700, 0x4000938b00)
        /home/jim/golang/go/src/net/http/server.go:2867 +0x244
net/http.(*conn).serve(0x40001d6000, 0x9d87a8, 0x4000156080)
        /home/jim/golang/go/src/net/http/server.go:1932 +0x1670
created by net/http.(*Server).Serve
        /home/jim/golang/go/src/net/http/server.go:2993 +0x78c

goroutine 178 [syscall]:
os/signal.signal_recv(0x0)
        /home/jim/golang/go/src/runtime/sigqueue.go:168 +0xcc
os/signal.loop()
        /home/jim/golang/go/src/os/signal/signal_unix.go:23 +0x28
created by os/signal.Notify.func1.1
        /home/jim/golang/go/src/os/signal/signal.go:151 +0x48

goroutine 179 [chan receive]:
github.com/revel/revel.(*GoHttpServer).Event.func1(0x40005b3360)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:221 +0x44
created by github.com/revel/revel.(*GoHttpServer).Event
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:220 +0x108

goroutine 225 [IO wait]:
internal/poll.runtime_pollWait(0x7f087c2400, 0x72, 0x4000144468)
        /home/jim/golang/go/src/runtime/netpoll.go:222 +0x50
internal/poll.(*pollDesc).wait(0x4000438318, 0x72, 0xffffffffffffff00, 0x0, 0x0)
        /home/jim/golang/go/src/internal/poll/fd_poll_runtime.go:87 +0x90
internal/poll.(*pollDesc).waitRead(0x4000438318, 0x0, 0x0, 0x0)
        /home/jim/golang/go/src/internal/poll/fd_poll_runtime.go:92 +0x3c
internal/poll.(*FD).Read(0x4000438300, 0x4000813631, 0x1, 0x1, 0x0, 0x0, 0x0)
        /home/jim/golang/go/src/internal/poll/fd_unix.go:166 +0x320
net.(*netFD).Read(0x4000438300, 0x4000813631, 0x1, 0x1, 0x0, 0x0, 0x0)
        /home/jim/golang/go/src/net/fd_posix.go:55 +0x54
net.(*conn).Read(0x40000c4040, 0x4000813631, 0x1, 0x1, 0x0, 0x0, 0x0)
        /home/jim/golang/go/src/net/net.go:183 +0x78
net/http.(*connReader).backgroundRead(0x4000813620)
        /home/jim/golang/go/src/net/http/server.go:672 +0x84
created by net/http.(*connReader).startBackgroundRead
        /home/jim/golang/go/src/net/http/server.go:668 +0x100

goroutine 154 [runnable]:
net/http.(*connReader).backgroundRead(0x4000470360)
        /home/jim/golang/go/src/net/http/server.go:671
created by net/http.(*connReader).startBackgroundRead
        /home/jim/golang/go/src/net/http/server.go:668 +0x100

goroutine 274 [IO wait]:
internal/poll.runtime_pollWait(0x7f087c24e8, 0x72, 0x4000146c68)
        /home/jim/golang/go/src/runtime/netpoll.go:222 +0x50
internal/poll.(*pollDesc).wait(0x4000438098, 0x72, 0xffffffffffffff00, 0x0, 0x0)
        /home/jim/golang/go/src/internal/poll/fd_poll_runtime.go:87 +0x90
internal/poll.(*pollDesc).waitRead(0x4000438098, 0x0, 0x0, 0x0)
        /home/jim/golang/go/src/internal/poll/fd_poll_runtime.go:92 +0x3c
internal/poll.(*FD).Read(0x4000438080, 0x4000154251, 0x1, 0x1, 0x0, 0x0, 0x0)
        /home/jim/golang/go/src/internal/poll/fd_unix.go:166 +0x320
net.(*netFD).Read(0x4000438080, 0x4000154251, 0x1, 0x1, 0x0, 0x0, 0x0)
        /home/jim/golang/go/src/net/fd_posix.go:55 +0x54
net.(*conn).Read(0x40000c4038, 0x4000154251, 0x1, 0x1, 0x0, 0x0, 0x0)
        /home/jim/golang/go/src/net/net.go:183 +0x78
net/http.(*connReader).backgroundRead(0x4000154240)
        /home/jim/golang/go/src/net/http/server.go:672 +0x84
created by net/http.(*connReader).startBackgroundRead
        /home/jim/golang/go/src/net/http/server.go:668 +0x100

goroutine 275 [runnable]:
gopkg.in/mgo%2ev2.(*mongoSocket).Query(0x40006a20e0, 0x400097cb80, 0x1, 0x1, 0x0, 0x0)
        /home/jim/go/pkg/mod/gopkg.in/[email protected]/socket.go:387 +0x1b8
gopkg.in/mgo%2ev2.(*mongoSocket).SimpleQuery(0x40006a20e0, 0x40009740e0, 0x0, 0x0, 0x0, 0x0, 0x0)
        /home/jim/go/pkg/mod/gopkg.in/[email protected]/socket.go:363 +0x288
gopkg.in/mgo%2ev2.(*Database).run(0x40003d4018, 0x40006a20e0, 0x80a260, 0x40003d4030, 0x0, 0x0, 0x0, 0x0)
        /home/jim/go/pkg/mod/gopkg.in/[email protected]/session.go:3261 +0x2cc
gopkg.in/mgo%2ev2.(*Database).Run(0x40003d4018, 0x7e4c20, 0x9c1438, 0x0, 0x0, 0x0, 0x0)
        /home/jim/go/pkg/mod/gopkg.in/[email protected]/session.go:656 +0x110
gopkg.in/mgo%2ev2.(*Session).Run(0x400021f040, 0x7e4c20, 0x9c1438, 0x0, 0x0, 0x0, 0x0)
        /home/jim/go/pkg/mod/gopkg.in/[email protected]/session.go:2014 +0x70
gopkg.in/mgo%2ev2.(*Session).Ping(0x400021f040, 0x0, 0x0)
        /home/jim/go/pkg/mod/gopkg.in/[email protected]/session.go:2043 +0x48
github.com/leanote/leanote/app/db.CheckMongoSessionLost()
        /home/jim/leanote/leanote-of-unofficial-nolicensed/app/db/Mgo.go:382 +0x30
github.com/leanote/leanote/app/lea/route.RouterFilter(0x40004611e0, 0x40003cdf38, 0x9, 0x9)
        /home/jim/leanote/leanote-of-unofficial-nolicensed/app/lea/route/Route.go:52 +0x1d4
github.com/revel/revel.PanicFilter(0x40004611e0, 0x40003cdf30, 0xa, 0xa)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/panic.go:21 +0xc4
github.com/revel/revel.glob..func33(0x40004611e0, 0x40003cdf28, 0xb, 0xb)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/watcher.go:298 +0x13c
github.com/revel/revel.handleInternal(0x9d2878, 0x400035d7e8)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/server-engine.go:193 +0x4f8
github.com/revel/revel.(*GoHttpServer).handleMux(0x40005b3360, 0x9d7430, 0x4000974000, 0x4000726000)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:158 +0x474
github.com/revel/revel.(*GoHttpServer).Handle(0x40005b3360, 0x9d7430, 0x4000974000, 0x4000726000)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:104 +0xa8
github.com/revel/revel.(*GoHttpServer).Init.func3(0x9d7430, 0x4000974000, 0x4000726000)
        /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:57 +0x44
net/http.HandlerFunc.ServeHTTP(0x400038a980, 0x9d7430, 0x4000974000, 0x4000726000)
        /home/jim/golang/go/src/net/http/server.go:2049 +0x40
net/http.serverHandler.ServeHTTP(0x400006a000, 0x9d7430, 0x4000974000, 0x4000726000)
        /home/jim/golang/go/src/net/http/server.go:2867 +0x244
net/http.(*conn).serve(0x40001d6280, 0x9d87a8, 0x4000a3c7c0)
        /home/jim/golang/go/src/net/http/server.go:1932 +0x1670
created by net/http.(*Server).Serve
        /home/jim/golang/go/src/net/http/server.go:2993 +0x78c

goroutine 276 [runnable]:
net/textproto.(*Reader).ReadMIMEHeader(0x4000b0fe30, 0x0, 0x0, 0x0)
        /home/jim/golang/go/src/net/textproto/reader.go:531 +0x554
net/http.readRequest(0x40009275c0, 0x101000, 0x40007f2b00, 0x0, 0x0)
        /home/jim/golang/go/src/net/http/request.go:1074 +0x5b8
net/http.(*conn).readRequest(0x40001d63c0, 0x9d87a8, 0x4000b010c0, 0x0, 0x0, 0x0)
        /home/jim/golang/go/src/net/http/server.go:966 +0x3dc
net/http.(*conn).serve(0x40001d63c0, 0x9d87a8, 0x4000b010c0)
        /home/jim/golang/go/src/net/http/server.go:1858 +0xaf0
created by net/http.(*Server).Serve
        /home/jim/golang/go/src/net/http/server.go:2993 +0x78c

goroutine 277 [runnable]:
vendor/golang.org/x/net/http/httpguts.isCTL(0x25, 0x0)
        /home/jim/golang/go/src/vendor/golang.org/x/net/http/httpguts/httplex.go:183 +0x6c
vendor/golang.org/x/net/http/httpguts.ValidHeaderFieldValue(0x40009e9200, 0x210, 0x4000897700)
        /home/jim/golang/go/src/vendor/golang.org/x/net/http/httpguts/httplex.go:307 +0x68
net/http.(*conn).readRequest(0x40001d6500, 0x9d87a8, 0x4000b01000, 0x0, 0x0, 0x0)
        /home/jim/golang/go/src/net/http/server.go:997 +0x95c
net/http.(*conn).serve(0x40001d6500, 0x9d87a8, 0x4000b01000)
        /home/jim/golang/go/src/net/http/server.go:1858 +0xaf0
created by net/http.(*Server).Serve
        /home/jim/golang/go/src/net/http/server.go:2993 +0x78c