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

batchConn中出现空指针 #568

Open
Zstro opened this issue Aug 19, 2022 · 2 comments
Open

batchConn中出现空指针 #568

Zstro opened this issue Aug 19, 2022 · 2 comments

Comments

@Zstro
Copy link

Zstro commented Aug 19, 2022

tikv client版本: v2.0.1

[ERROR] [client_batch.go:303] [ba
tchSendLoop] [r="\"invalid memory address or nil pointer dereference\""] [stack="github.com/tikv/client
-go/v2/internal/client.(*batchConn).batchSendLoop.func1\n\t/root/go/pkg/mod/github.com/tikv/client-go/v
[email protected]/internal/client/client_batch.go:305\nruntime.gopanic\n\t/usr/local/go/src/runtime/panic.go:103
8\nruntime.panicmem\n\t/usr/local/go/src/runtime/panic.go:221\nruntime.sigpanic\n\t/usr/local/go/src/ru
ntime/signal_unix.go:735\nsync.(*entry).tryExpungeLocked\n\t/usr/local/go/src/sync/map.go:377\nsync.(*M
ap).dirtyLocked\n\t/usr/local/go/src/sync/map.go:370\nsync.(*Map).Store\n\t/usr/local/go/src/sync/map.g
o:158\ngithub.com/tikv/client-go/v2/internal/client.(*batchConn).getClientAndSend.func1\n\t/root/go/pkg
/mod/github.com/tikv/client-go/[email protected]/internal/client/client_batch.go:375\ngithub.com/tikv/client-go
/v2/internal/client.(*batchCommandsBuilder).build\n\t/root/go/pkg/mod/github.com/tikv/client-go/[email protected]
.1/internal/client/client_batch.go:115\ngithub.com/tikv/client-go/v2/internal/client.(*batchConn).getCl
ientAndSend\n\t/root/go/pkg/mod/github.com/tikv/client-go/[email protected]/internal/client/client_batch.go:374
\ngithub.com/tikv/client-go/v2/internal/client.(*batchConn).batchSendLoop\n\t/root/go/pkg/mod/github.co
m/tikv/client-go/[email protected]/internal/client/client_batch.go:344"] [stack="github.com/tikv/client-go/v2/i
nternal/client.(*batchConn).batchSendLoop.func1\n\t/root/go/pkg/mod/github.com/tikv/client-go/[email protected]
/internal/client/client_batch.go:303\nruntime.gopanic\n\t/usr/local/go/src/runtime/panic.go:1038\nrunti
me.panicmem\n\t/usr/local/go/src/runtime/panic.go:221\nruntime.sigpanic\n\t/usr/local/go/src/runtime/si
gnal_unix.go:735\nsync.(*entry).tryExpungeLocked\n\t/usr/local/go/src/sync/map.go:377\nsync.(*Map).dirt
yLocked\n\t/usr/local/go/src/sync/map.go:370\nsync.(*Map).Store\n\t/usr/local/go/src/sync/map.go:158\ng
ithub.com/tikv/client-go/v2/internal/client.(*batchConn).getClientAndSend.func1\n\t/root/go/pkg/mod/git
hub.com/tikv/client-go/[email protected]/internal/client/client_batch.go:375\ngithub.com/tikv/client-go/v2/inte
rnal/client.(*batchCommandsBuilder).build\n\t/root/go/pkg/mod/github.com/tikv/client-go/[email protected]/inter
nal/client/client_batch.go:115\ngithub.com/tikv/client-go/v2/internal/client.(*batchConn).getClientAndS
end\n\t/root/go/pkg/mod/github.com/tikv/client-go/[email protected]/internal/client/client_batch.go:374\ngithub
.com/tikv/client-go/v2/internal/client.(*batchConn).batchSendLoop\n\t/root/go/pkg/mod/github.com/tikv/c
lient-go/[email protected]/internal/client/client_batch.go:344"]

似乎是batchCommandsEntry有个空指针,有什么外部原因能造成这个问题么?

@sticnarf
Copy link
Collaborator

这看起来有点怪。nil pointer dereference 发生在 sync.Map 里。如果是 batchCommandsEntry 里的 nil pointer,panic 的位置应该更早一点而不是在 tryExpungeLocked 里。

我现在看不出来哪里出了问题。你能提供更多信息吗?比如你的 Golang 版本,或是能提供复现问题的方式?


It looks weird. The nil pointer dereference happens in sync.Map. If it's a nil pointer in batchCommandsEntry, the panic point should be earlier instead of inside tryExpungeLocked.

I cannot find out what's going wrong now. Could you please provide more information, like your golang version and how to reproduce the problem?

@Zstro
Copy link
Author

Zstro commented Aug 19, 2022

这看起来有点怪。nil pointer dereference 发生在 sync.Map 里。如果是 batchCommandsEntry 里的 nil pointer,panic 的位置应该更早一点而不是在 tryExpungeLocked 里。

我现在看不出来哪里出了问题。你能提供更多信息吗?比如你的 Golang 版本,或是能提供复现问题的方式?

It looks weird. The nil pointer dereference happens in sync.Map. If it's a nil pointer in batchCommandsEntry, the panic point should be earlier instead of inside tryExpungeLocked.

I cannot find out what's going wrong now. Could you please provide more information, like your golang version and how to reproduce the problem?

go的版本是1.16
现在问题就是不知道怎么触发的这个情况
平时比较多的日志都是这种

[INFO] [region_request.go:785] ["mark store's regions need be r
efill"] [id=4] [addr=10.119.37.5:20160] [error="rpcClient is idle"] [errorVerbose="rpcClient is idle\ngithub.com/tikv/client-go/v2/i
nternal/client.(*RPCClient).getConnArray\n\t/root/go/pkg/mod/github.com/tikv/client-go/[email protected]/internal/client/client.go:304\ngith
ub.com/tikv/client-go/v2/internal/client.(*RPCClient).SendRequest\n\t/root/go/pkg/mod/github.com/tikv/client-go/[email protected]/internal/c
lient/client.go:381\ngithub.com/tikv/client-go/v2/internal/client.interceptedClient.SendRequest\n\t/root/go/pkg/mod/github.com/tikv/
client-go/[email protected]/internal/client/client_interceptor.go:42\ngithub.com/tikv/client-go/v2/internal/client.reqCollapse.SendRequest\n
\t/root/go/pkg/mod/github.com/tikv/client-go/[email protected]/internal/client/client_collapse.go:74\ngithub.com/tikv/client-go/v2/internal/
locate.(*RegionRequestSender).sendReqToRegion\n\t/root/go/pkg/mod/github.com/tikv/client-go/[email protected]/internal/locate/region_request
.go:1130\ngithub.com/tikv/client-go/v2/internal/locate.(*RegionRequestSender).SendReqCtx\n\t/root/go/pkg/mod/github.com/tikv/client-
go/[email protected]/internal/locate/region_request.go:982\ngithub.com/tikv/client-go/v2/txnkv/txnsnapshot.(*ClientHelper).SendReqCtx\n\t/ro
ot/go/pkg/mod/github.com/tikv/client-go/[email protected]/txnkv/txnsnapshot/client_helper.go:109\ngithub.com/tikv/client-go/v2/txnkv/txnsnap
shot.(*KVSnapshot).get\n\t/root/go/pkg/mod/github.com/tikv/client-go/[email protected]/txnkv/txnsnapshot/snapshot.go:572\ngithub.com/tikv/cl
ient-go/v2/txnkv/txnsnapshot.(*KVSnapshot).Get\n\t/root/go/pkg/mod/github.com/tikv/client-go/[email protected]/txnkv/txnsnapshot/snapshot.go
:490\ngithub.com/tikv/client-go/v2/internal/unionstore.(*KVUnionStore).Get\n\t/root/go/pkg/mod/github.com/tikv/client-go/[email protected]/i
nternal/unionstore/union_store.go:102\ngithub.com/tikv/client-go/v2/txnkv/transaction.(*KVTxn).Get\n\t/root/go/pkg/mod/github.com/ti
kv/client-go/[email protected]/txnkv/transaction/txn.go:162"]

但是这次不知道什么原因conn中似乎没有addr了,才有初始化时引出了空指针
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants