panic: panic while executing 1 statements: COMMIT TRANSACTION; caused by runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x30 pc=0xea9c66]
goroutine 40589045 [running]:
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).closeWrapper(0xc006e79000, 0x4bcfb20, 0xc00364d140, 0x3dec3a0, 0x6e50eb0)
/go/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:810 +0x3f9
github.com/cockroachdb/cockroach/pkg/sql.(*Server).ServeConn.func1(0xc006e79000, 0x4bcfb20, 0xc00364d140)
/go/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:474 +0x61
panic(0x3dec3a0, 0x6e50eb0)
/usr/local/go/src/runtime/panic.go:679 +0x1b2
github.com/cockroachdb/cockroach/vendor/github.com/opentracing/opentracing-go.SpanFromContext(0x0, 0x0, 0xc007e71740, 0x0)
/go/src/github.com/cockroachdb/cockroach/vendor/github.com/opentracing/opentracing-go/gocontext.go:22 +0x26
github.com/cockroachdb/cockroach/pkg/util/log.getSpanOrEventLog(0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/go/src/github.com/cockroachdb/cockroach/pkg/util/log/trace.go:91 +0x39
github.com/cockroachdb/cockroach/pkg/util/log.eventInternal(0x0, 0x0, 0x100, 0x432c3b1, 0x13, 0xc00dc0d2a8, 0x1, 0x1)
/go/src/github.com/cockroachdb/cockroach/pkg/util/log/trace.go:106 +0x4d
github.com/cockroachdb/cockroach/pkg/util/log.vEventf(0x0, 0x0, 0x0, 0x1, 0x2, 0x432c3b1, 0x13, 0xc00dc0d2a8, 0x1, 0x1)
/go/src/github.com/cockroachdb/cockroach/pkg/util/log/trace.go:175 +0x142
github.com/cockroachdb/cockroach/pkg/util/log.VEventf(...)
/go/src/github.com/cockroachdb/cockroach/pkg/util/log/trace.go:190
github.com/cockroachdb/cockroach/pkg/sql.(*TableCollection).releaseLeases(0xc006e79228, 0x0, 0x0)
/go/src/github.com/cockroachdb/cockroach/pkg/sql/table.go:516 +0xd3
github.com/cockroachdb/cockroach/pkg/sql.(*TableCollection).releaseTables(0xc006e79228, 0x0, 0x0)
/go/src/github.com/cockroachdb/cockroach/pkg/sql/table.go:528 +0x43
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).resetExtraTxnState(0xc006e79000, 0x0, 0x0, 0xc00032a9c0, 0x3, 0x40f82c0, 0xc006e79090)
/go/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1165 +0x83
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).txnStateTransitionsApplyWrapper(0xc006e79000, 0x4b4cc60, 0xc011958840, 0x3edc1a0, 0xc011958850, 0x7fab830953c8, 0xc0072c4180, 0x2aa, 0x0, 0x0, ...)
/go/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:2165 +0x54f
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execCmd(0xc006e79000, 0x4bcfb20, 0xc009fb4340, 0x0, 0x0)
/go/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1497 +0x952
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).run(0xc006e79000, 0x4bcfb20, 0xc00364d140, 0xc00001fc00, 0x5400, 0x15000, 0xc00001fc98, 0xc0058db350, 0x0, 0x0)
/go/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1297 +0x1f2
github.com/cockroachdb/cockroach/pkg/sql.(*Server).ServeConn(0xc000c77600, 0x4bcfb20, 0xc00364d140, 0xc006e79000, 0x5400, 0x15000, 0xc00001fc98, 0xc0058db350, 0x0, 0x0)
/go/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:476 +0x104
github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*conn).processCommandsAsync.func1(0xc009538dbd, 0xc017428ba0, 0x4bcfb20, 0xc00364d140, 0xc0058db350, 0xc000c77600, 0xc0072c3b00, 0x4bf3820, 0xc01c9a6060, 0xc00a292ea0, ...)
/go/src/github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:591 +0x2e8
created by github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*conn).processCommandsAsync
/go/src/github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:523 +0x17e
case txnRestart, txnRollback:
if err := ex.resetExtraTxnState(ex.Ctx(), ex.server.dbCache, advInfo.txnEvent); err != nil {
return advanceInfo{}, err
}
Describe the problem
This is a stack trace from the node crash:
The nil pointer dereference is due to a
nilcontext being threaded though the call stack and originally passed fromgithub.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).resetExtraTxnState(0xc006e79000, 0x0, 0x0, 0xc00032a9c0, 0x3, 0x40f82c0, 0xc006e79090).This is the actual function call from
conn_executor.go:To Reproduce
Unable to create a clean repro - the bug was reported by a customer.
Expected behavior
We should probably check if
ex.Ctx() != nilbefore callingresetExtraTxnState.Environment:
Additional context
Node crashes.
Jira issue: CRDB-4043