Closed whitefen closed 5 years ago
(dlv) goroutine 268051
Switched from 268037 to 268051 (thread 16077)
(dlv) stack
0 0x0000000000434959 in runtime.gopark
at /usr/local/go/src/runtime/proc.go:292
1 0x0000000000434a0e in runtime.goparkunlock
at /usr/local/go/src/runtime/proc.go:297
2 0x0000000000445b68 in runtime.semacquire1
at /usr/local/go/src/runtime/sema.go:144
3 0x00000000004457e9 in sync.runtime_Semacquire
at /usr/local/go/src/runtime/sema.go:56
4 0x000000000046e411 in sync.(*RWMutex).RLock
at /usr/local/go/src/sync/rwmutex.go:50
5 0x0000000000ada3ed in github.com/copernet/copernicus/model/mempool.(*TxMempool).RLock
at /root/go/src/github.com/copernet/copernicus/model/mempool/txmempool.go:106
6 0x0000000000bd3418 in github.com/copernet/copernicus/service/mining.(*BlockAssembler).addPackageTxs
at /root/go/src/github.com/copernet/copernicus/service/mining/mining.go:191
7 0x0000000000bd48f8 in github.com/copernet/copernicus/service/mining.(*BlockAssembler).CreateNewBlock
at /root/go/src/github.com/copernet/copernicus/service/mining/mining.go:341
8 0x0000000000be0a10 in github.com/copernet/copernicus/rpc.handleGetBlockTemplateRequest
at /root/go/src/github.com/copernet/copernicus/rpc/mining.go:193
9 0x0000000000be02b0 in github.com/copernet/copernicus/rpc.handleGetblocktemplate
at /root/go/src/github.com/copernet/copernicus/rpc/mining.go:132
10 0x0000000000bfe9e4 in github.com/copernet/copernicus/rpc.(*Server).standardCmdResult
at /root/go/src/github.com/copernet/copernicus/rpc/rpcserver.go:219
11 0x0000000000c00633 in github.com/copernet/copernicus/rpc.(*Server).jsonRPCRead
at /root/go/src/github.com/copernet/copernicus/rpc/rpcserver.go:380
12 0x0000000000c09259 in github.com/copernet/copernicus/rpc.(*Server).Start.func1
at /root/go/src/github.com/copernet/copernicus/rpc/rpcserver.go:450
13 0x00000000007e33e4 in net/http.HandlerFunc.ServeHTTP
at /usr/local/go/src/net/http/server.go:1947
14 0x00000000007e6063 in net/http.(*ServeMux).ServeHTTP
at /usr/local/go/src/net/http/server.go:2337
15 0x00000000007e7444 in net/http.serverHandler.ServeHTTP
at /usr/local/go/src/net/http/server.go:2694
16 0x00000000007e23d2 in net/http.(*conn).serve
at /usr/local/go/src/net/http/server.go:1830
17 0x0000000000464251 in runtime.goexit
at /usr/local/go/src/runtime/asm_amd64.s:2361
(dlv) goroutine 15
Switched from 14 to 15 (thread 16078)
(dlv) stack
0 0x0000000000434959 in runtime.gopark
at /usr/local/go/src/runtime/proc.go:292
1 0x0000000000434a0e in runtime.goparkunlock
at /usr/local/go/src/runtime/proc.go:297
2 0x0000000000445b68 in runtime.semacquire1
at /usr/local/go/src/runtime/sema.go:144
3 0x00000000004457e9 in sync.runtime_Semacquire
at /usr/local/go/src/runtime/sema.go:56
4 0x000000000046e411 in sync.(*RWMutex).RLock
at /usr/local/go/src/sync/rwmutex.go:50
5 0x0000000000ada3ed in github.com/copernet/copernicus/model/mempool.(*TxMempool).RLock
at /root/go/src/github.com/copernet/copernicus/model/mempool/txmempool.go:106
6 0x0000000000adbeab in github.com/copernet/copernicus/model/mempool.(*TxMempool).FindTx
at /root/go/src/github.com/copernet/copernicus/model/mempool/txmempool.go:294
7 0x0000000000b0bdc9 in github.com/copernet/copernicus/logic/ltx.CheckTxBeforeAcceptToMemPool
at /root/go/src/github.com/copernet/copernicus/logic/ltx/ltx.go:107
8 0x0000000000b16958 in github.com/copernet/copernicus/logic/lmempool.AcceptTxToMemPool
at /root/go/src/github.com/copernet/copernicus/logic/lmempool/ltxmempool.go:22
9 0x0000000000b173ac in github.com/copernet/copernicus/logic/lmempool.TryAcceptOrphansTxs
at /root/go/src/github.com/copernet/copernicus/logic/lmempool/ltxmempool.go:81
10 0x0000000000b55234 in github.com/copernet/copernicus/service.ProcessTransaction
at /root/go/src/github.com/copernet/copernicus/service/transactionservice.go:31
11 0x0000000000b6cee5 in github.com/copernet/copernicus/net/syncmanager.(*SyncManager).handleTxMsg
at /root/go/src/github.com/copernet/copernicus/net/syncmanager/syncmanager.go:488
12 0x0000000000b7572a in github.com/copernet/copernicus/net/syncmanager.(*SyncManager).messagesHandler
at /root/go/src/github.com/copernet/copernicus/net/syncmanager/syncmanager.go:1278
13 0x0000000000464251 in runtime.goexit
at /usr/local/go/src/runtime/asm_amd64.s:2361
Mempool mutex 'RLock' is called outside and inside FindTx() in function 'CheckTxBeforeAcceptToMemPool'. Goroutine might be blocked if a write Lock called between twice RLock. (peerDoneHandler -> RemoveOrphansByTag -> mempool.(*TxMempool).Lock)