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

cockroachdb hit SIGSEGV during test suite #1223

Closed
davepacheco opened this issue Jun 17, 2022 · 22 comments
Closed

cockroachdb hit SIGSEGV during test suite #1223

davepacheco opened this issue Jun 17, 2022 · 22 comments

Comments

@davepacheco
Copy link
Collaborator

While trying to reproduce #1130, I ran into a different SIGSEGV in CockroachDB:

I220616 22:45:17.402378 1 util/log/flags.go:201  [-] 1  stderr capture started
unexpected fault address 0x108226a
fatal error: fault
[signal SIGSEGV: segmentation violation code=0x1 addr=0x108226a pc=0x108226a]

goroutine 831 [running]:
runtime.throw(0x59bf4fa, 0x5)
        /opt/ooce/go-1.16/src/runtime/panic.go:1117 +0x72 fp=0xc002cb8480 sp=0xc002cb8450 pc=0x10a9512
runtime.sigpanic()
        /opt/ooce/go-1.16/src/runtime/signal_unix.go:741 +0x276 fp=0xc002cb84b8 sp=0xc002cb8480 pc=0x10c0e96
runtime.mapassign_fast32(0x5292480, 0xc0038201b0, 0x1, 0x20)
        /opt/ooce/go-1.16/src/runtime/map_fast32.go:126 +0xaa fp=0xc002cb84f8 sp=0xc002cb84b8 pc=0x108226a
github.com/cockroachdb/cockroach/pkg/sql/catalog.(*collectorState).addDirectReferences(0xc00392e000, 0xfffffc7fee647ec0, 0xc000106e10, 0x0, 0x0)
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/catalog/validate.go:442 +0x5a fp=0xc002cb8540 sp=0xc002cb84f8 pc=0x26d231a
github.com/cockroachdb/cockroach/pkg/sql/catalog.collectDescriptorsForValidation(0x6fd9f90, 0xc0036fa1e0, 0x6f97070, 0xc0035cfe60, 0xc0035cfe50, 0x1, 0x1, 0xc000299b00, 0xc000cb4480, 0xc002cb8670)
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/catalog/validate.go:500 +0x159 fp=0xc002cb85e8 sp=0xc002cb8540 pc=0x26d2b19
github.com/cockroachdb/cockroach/pkg/sql/catalog.Validate(0x6fd9f90, 0xc0036fa1e0, 0x6f97070, 0xc0035cfe60, 0x2, 0xc00000001f, 0xc0035cfe50, 0x1, 0x1, 0x4, ...)
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/catalog/validate.go:55 +0x14f fp=0xc002cb8680 sp=0xc002cb85e8 pc=0x26cff2f
github.com/cockroachdb/cockroach/pkg/sql/catalog/descs.(*Collection).ValidateUncommittedDescriptors(0xc000cae298, 0x6fd9f90, 0xc0036fa1e0, 0xc002eb2dc0, 0x0, 0x62abb280)
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/catalog/descs/validate.go:43 +0x15a fp=0xc002cb8710 sp=0xc002cb8680 pc=0x2d2325a
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).commitSQLTransactionInternal(0xc000cae000, 0x6fd9f90, 0xc0036fa1e0, 0x7002558, 0xc00283d9a0, 0xcc, 0xc002cb87f8)
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:883 +0xa5 fp=0xc002cb8758 sp=0xc002cb8710 pc=0x4187985
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).commitSQLTransactionInternal-fm(0x6fd9f90, 0xc0036fa1e0, 0x7002558, 0xc00283d9a0, 0x204d597, 0xc002eb2df8)
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:870 +0x5b fp=0xc002cb87a0 sp=0xc002cb8758 pc=0x440369b
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).commitSQLTransaction(0xc000cae000, 0x6fd9f90, 0xc0036fa1e0, 0x7002558, 0xc00283d9a0, 0xc002cb8890, 0xfffffc7fedf982c8, 0x0, 0x52ca140, 0x95b44c8)
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:820 +0x9c fp=0xc002cb8808 sp=0xc002cb87a0 pc=0x418715c
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).handleAutoCommit(0xc000cae000, 0x6fd9f90, 0xc0036fa1e0, 0x7002558, 0xc00283d9a0, 0x60859b8, 0xc002cb8928, 0x40, 0xc000cb4480)
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:1837 +0xdc fp=0xc002cb88b0 sp=0xc002cb8808 pc=0x418e83c
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmtInOpenState.func7(0xc000cae000, 0xc002cb92c8, 0xc002cb92b8, 0xc002cb9248, 0xc002cb8e20, 0xc002cb92a8, 0x6f974a8, 0x921b59b)
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:502 +0xc9 fp=0xc002cb8928 sp=0xc002cb88b0 pc=0x43748e9
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmtInOpenState(0xc000cae000, 0x6fd9f90, 0xc0036fa1e0, 0x7002558, 0xc00283d9a0, 0xc0018de306, 0x8, 0x0, 0x0, 0xc002926300, ...)
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:755 +0x1251 fp=0xc002cb9240 sp=0xc002cb8928 pc=0x4184671
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmt(0xc000cae000, 0x6fd9ee8, 0xc002a4ba40, 0x7002558, 0xc00283d9a0, 0xc0018de306, 0x8, 0x0, 0x0, 0xc002926300, ...)
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:129 +0xb0a fp=0xc002cb94d0 sp=0xc002cb9240 pc=0x4182b8a
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execPortal(0xc000cae000, 0x6fd9ee8, 0xc002a4ba40, 0xc002926300, 0x95b44c8, 0x0, 0x0, 0xc002a214de, 0x1, 0x1, ...)
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:216 +0x14e fp=0xc002cb9608 sp=0xc002cb94d0 pc=0x418316e
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execCmd.func2(0xc0018de6ed, 0x0, 0x0, 0x3a038e9f, 0xeda3da97f, 0x0, 0xc000cae000, 0xc002cb99e8, 0xc002cb99d8, 0xc0026e18d8, ...)
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1773 +0x4fb fp=0xc002cb97e8 sp=0xc002cb9608 pc=0x437313b
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execCmd(0xc000cae000, 0x6fd9ee8, 0xc002a4ba40, 0x0, 0x0)
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1775 +0x4df fp=0xc002cb9cb0 sp=0xc002cb97e8 pc=0x417591f
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).run(0xc000cae000, 0x6fd9ee8, 0xc002c54740, 0xc00110ce60, 0x5400, 0x15000, 0xc00110d0e0, 0xc002c4ea10, 0x0, 0x0)
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1629 +0x22f fp=0xc002cb9d50 sp=0xc002cb9cb0 pc=0x41751cf
github.com/cockroachdb/cockroach/pkg/sql.(*Server).ServeConn(0xc000559c00, 0x6fd9ee8, 0xc002c54740, 0xc000cae000, 0x5400, 0x15000, 0xc00110d0e0, 0xc002c4ea10, 0x0, 0x0)
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:668 +0xce fp=0xc002cb9dd8 sp=0xc002cb9d50 pc=0x4170d6e
github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*conn).processCommandsAsync.func1(0xc001a4a214, 0xc002f44330, 0x6fd9ee8, 0xc002c54740, 0xc002c4ea10, 0xc000559c00, 0xc001b92900, 0x70492c0, 0xc001af82d0, 0xc002c3be60, ...)
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:648 +0x3d4 fp=0xc002cb9f28 sp=0xc002cb9dd8 pc=0x45f7914
runtime.goexit()
        /opt/ooce/go-1.16/src/runtime/asm_amd64.s:1371 +0x1 fp=0xc002cb9f30 sp=0xc002cb9f28 pc=0x10e35a1
created by github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*conn).processCommandsAsync
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:576 +0x188
@davepacheco
Copy link
Collaborator Author

See also #1144, but this one's actually inside CockroachDB.

@davepacheco
Copy link
Collaborator Author

I'm attaching issue-1223.tgz.zip, which includes the whole test run temp directory, which includes our test suite log file as well as the CockroachDB data directory (which includes the above stderr file).

@knz
Copy link

knz commented Jun 19, 2022

This is not in cockroachdb directly. This is in the go runtime system, when assigning to a (primitive) map type.

I would recommend you attempt building with go 1.17 or 1.18. There were improvements in that area.

@davepacheco
Copy link
Collaborator Author

@knz I'm working on getting a build of Cockroach using Go 1.18. As I think you've seen, we've hit a half dozen or so different memory-related issues (including SIGSEGV, stack corruption, and panics in the Go memory allocator). We don't know if they're related. For most of them (including this one), we've only seen them once despite many iterations. So if we don't see this with Go 1.18, that won't really tell us whether the problem was somehow fixed.

@bnaecker
Copy link
Collaborator

bnaecker commented Jul 21, 2022

I've seem to hit the same issue. Working on #1474, I ran a full cargo t. One of the tests failed, and the standard error output appears to be almost exactly the same. There is one difference near the top of the statck, which is the existence of the runtime.hashGrow function call, the 3rd frame in the stack below. There are other differences in the middle there, calls to runtime.panicmem(). It does look the same at the bottom though.

I220720 21:43:41.793625 1 util/log/file_sync_buffer.go:238 ⋮ [config]   file created at: 2022/07/20 21:43:41
I220720 21:43:41.793669 1 util/log/file_sync_buffer.go:238 ⋮ [config]   running on machine: ‹feldspar›
I220720 21:43:41.793676 1 util/log/file_sync_buffer.go:238 ⋮ [config]   binary: CockroachDB OSS v21.2.9 (x86_64-pc-solaris2.11, built 2022/04/28 04:02:42, go1.16.10)
I220720 21:43:41.793684 1 util/log/file_sync_buffer.go:238 ⋮ [config]   arguments: [‹cockroach› ‹start-single-node› ‹--insecure› ‹--http-addr=:0› ‹--store=path=/tmp/.tmpKAnZD9/data,ballast-size=0› ‹--listen-addr› ‹127.0.0.1:0› ‹--listening-url-file› ‹/tmp/.tmpKAnZD9/listen-url›]
I220720 21:43:41.793697 1 util/log/file_sync_buffer.go:238 ⋮ [config]   log format (utf8=✓): crdb-v2
I220720 21:43:41.793700 1 util/log/file_sync_buffer.go:238 ⋮ [config]   line format: [IWEF]yymmdd hh:mm:ss.uuuuuu goid [chan@]file:line redactionmark \[tags\] [counter] msg
I220720 21:43:41.793379 1 util/log/flags.go:201  [-] 1  stderr capture started
unexpected fault address 0x108154f
fatal error: fault
[signal SIGSEGV: segmentation violation code=0x1 addr=0x108154f pc=0x108154f]

goroutine 175 [running]:
runtime.throw(0x59bf4fa, 0x5)
    /opt/ooce/go-1.16/src/runtime/panic.go:1117 +0x72 fp=0xc00332b8d0 sp=0xc00332b8a0 pc=0x10a9512
runtime.sigpanic()
    /opt/ooce/go-1.16/src/runtime/signal_unix.go:741 +0x276 fp=0xc00332b908 sp=0xc00332b8d0 pc=0x10c0e96
runtime.hashGrow(0x5292480, 0xc003181080)
    /opt/ooce/go-1.16/src/runtime/map.go:1050 +0xef fp=0xc00332b958 sp=0xc00332b908 pc=0x108154f
runtime.mapassign_fast32(0x5292480, 0xc003181080, 0x1, 0x20)
    /opt/ooce/go-1.16/src/runtime/map_fast32.go:156 +0x113 fp=0xc00332b998 sp=0xc00332b958 pc=0x10822d3
github.com/cockroachdb/cockroach/pkg/sql/catalog.(*collectorState).addDirectReferences(0xc002c9bb00, 0xfffffc7fee8f3e18, 0xc000186630, 0x0, 0x0)
    /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/catalog/validate.go:442 +0x5a fp=0xc00332b9e0 sp=0xc00332b998 pc=0x26d231a
github.com/cockroachdb/cockroach/pkg/sql/catalog.collectDescriptorsForValidation(0x6ff5af8, 0xc001793dd0, 0x6f97070, 0xc002fda530, 0xc002fda520, 0x1, 0x1, 0xc00050a480, 0x0, 0xc00332bb10)
    /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/catalog/validate.go:500 +0x159 fp=0xc00332ba88 sp=0xc00332b9e0 pc=0x26d2b19
github.com/cockroachdb/cockroach/pkg/sql/catalog.Validate(0x6ff5af8, 0xc001793dd0, 0x6f97070, 0xc002fda530, 0x2, 0xc00000001f, 0xc002fda520, 0x1, 0x1, 0x4, ...)
    /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/catalog/validate.go:55 +0x14f fp=0xc00332bb20 sp=0xc00332ba88 pc=0x26cff2f
github.com/cockroachdb/cockroach/pkg/sql/catalog/descs.(*Collection).ValidateUncommittedDescriptors(0xc00175ae98, 0x6ff5af8, 0xc001793dd0, 0xc0031614a0, 0x0, 0x62d8770f)
    /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/catalog/descs/validate.go:43 +0x15a fp=0xc00332bbb0 sp=0xc00332bb20 pc=0x2d2325a
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).commitSQLTransactionInternal(0xc00175ac00, 0x6ff5af8, 0xc001793dd0, 0x7002558, 0xc002f6d770, 0xeda6a6e0f, 0x0)
    /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:883 +0xa5 fp=0xc00332bbf8 sp=0xc00332bbb0 pc=0x4187985
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).commitSQLTransactionInternal-fm(0x6ff5af8, 0xc001793dd0, 0x7002558, 0xc002f6d770, 0x204d597, 0xc0031614d8)
    /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:870 +0x5b fp=0xc00332bc40 sp=0xc00332bbf8 pc=0x440369b
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).commitSQLTransaction(0xc00175ac00, 0x6ff5af8, 0xc001793dd0, 0x7002558, 0xc002f6d770, 0xc00332bd30, 0xc00269d460, 0xc00332bd48, 0x0, 0xc00332bd20)
    /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:820 +0x9c fp=0xc00332bca8 sp=0xc00332bc40 pc=0x418715c
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).handleAutoCommit(0xc00175ac00, 0x6ff5af8, 0xc001793dd0, 0x7002558, 0xc002f6d770, 0x1800000001, 0xc00332be08, 0x1085854, 0xc00332cb50)
    /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:1837 +0xdc fp=0xc00332bd50 sp=0xc00332bca8 pc=0x418e83c
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmtInOpenState.func7(0xc00175ac00, 0xc00332d2c8, 0xc00332d2b8, 0xc00332d248, 0xc00332ce20, 0xc00332d2a8, 0x6f974a8, 0x921b59b)
    /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:502 +0xc9 fp=0xc00332bdc8 sp=0xc00332bd50 pc=0x43748e9
runtime.call64(0x0, 0x60859b8, 0xc00332cc68, 0x4000000040)
    /opt/ooce/go-1.16/src/runtime/asm_amd64.s:552 +0x3e fp=0xc00332be18 sp=0xc00332bdc8 pc=0x10e1bfe
panic(0x52cd740, 0x91ab4f0)
    /opt/ooce/go-1.16/src/runtime/panic.go:971 +0x499 fp=0xc00332bee0 sp=0xc00332be18 pc=0x10a9039
runtime.panicmem()
    /opt/ooce/go-1.16/src/runtime/panic.go:212 +0x5b fp=0xc00332bf00 sp=0xc00332bee0 pc=0x10a715b
runtime.sigpanic()
    /opt/ooce/go-1.16/src/runtime/signal_unix.go:734 +0x179 fp=0xc00332bf38 sp=0xc00332bf00 pc=0x10c0d99
github.com/cockroachdb/cockroach/pkg/sql.(*DistSQLPlanner).planAndRunSubquery(0xc001b4b300, 0x6ff5af8, 0xc001793dd0, 0x2, 0x6f48ec0, 0xc002f6c690, 0x3, 0x1, 0x6fdae70, 0xc0035edf80, ...)
    /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/distsql_running.go:1209 +0xe22 fp=0xc00332c378 sp=0xc00332bf38 pc=0x4203982
github.com/cockroachdb/cockroach/pkg/sql.(*DistSQLPlanner).PlanAndRunSubqueries(0xc001b4b300, 0x6ff5af8, 0xc001793dd0, 0xc00175b1d8, 0xc00332c550, 0xc0006af080, 0x9, 0x9, 0xc0019ad500, 0xc00332c538, ...)
    /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/distsql_running.go:1085 +0x19e fp=0xc00332c498 sp=0xc00332c378 pc=0x4202a5e
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execWithDistSQLEngine(0xc00175ac00, 0x6ff5af8, 0xc001793dd0, 0xc00175b1d8, 0x3, 0xfffffc7fef07de28, 0xc0018033a0, 0xc00332c600, 0xc0034ddd98, 0x0, ...)
    /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:1372 +0x7bd fp=0xc00332c5c0 sp=0xc00332c498 pc=0x418b27d
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).dispatchToExecutionEngine(0xc00175ac00, 0x6ff5af8, 0xc001793dd0, 0xc00175b1d8, 0xfffffc7fef07de28, 0xc0018033a0, 0x0, 0x0)
    /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:1072 +0x90b fp=0xc00332c928 sp=0xc00332c5c0 pc=0x418898b
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmtInOpenState(0xc00175ac00, 0x6ff5af8, 0xc001793dd0, 0x7002558, 0xc002f6d770, 0xc001794717, 0x5d4, 0x12, 0xa, 0xc001b14100, ...)
    /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:709 +0x11a6 fp=0xc00332d240 sp=0xc00332c928 pc=0x41845c6
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmt(0xc00175ac00, 0x6fd9ee8, 0xc0016dc500, 0x7002558, 0xc002f6d770, 0xc001794717, 0x5d4, 0x12, 0xa, 0xc001b14100, ...)
    /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:129 +0xb0a fp=0xc00332d4d0 sp=0xc00332d240 pc=0x4182b8a
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execPortal(0xc00175ac00, 0x6fd9ee8, 0xc0016dc500, 0xc001b14100, 0xc002a75c20, 0x12, 0x12, 0xc002bbe660, 0x9, 0x9, ...)
    /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:216 +0x14e fp=0xc00332d608 sp=0xc00332d4d0 pc=0x418316e
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execCmd.func2(0xc001794e46, 0x0, 0x0, 0x36cc0823, 0xeda6a6e0f, 0x0, 0xc00175ac00, 0xc00332d9e8, 0xc00332d9d8, 0xc00332d8d8, ...)
    /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1773 +0x4fb fp=0xc00332d7e8 sp=0xc00332d608 pc=0x437313b
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execCmd(0xc00175ac00, 0x6fd9ee8, 0xc0016dc500, 0x0, 0x0)
    /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1775 +0x4df fp=0xc00332dcb0 sp=0xc00332d7e8 pc=0x417591f
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).run(0xc00175ac00, 0x6fd9ee8, 0xc000924740, 0xc001727ae0, 0x5400, 0x15000, 0xc00217a0a0, 0xc001116e40, 0x0, 0x0)
    /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1629 +0x22f fp=0xc00332dd50 sp=0xc00332dcb0 pc=0x41751cf
github.com/cockroachdb/cockroach/pkg/sql.(*Server).ServeConn(0xc0005f7500, 0x6fd9ee8, 0xc000924740, 0xc00175ac00, 0x5400, 0x15000, 0xc00217a0a0, 0xc001116e40, 0x0, 0x0)
    /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:668 +0xce fp=0xc00332ddd8 sp=0xc00332dd50 pc=0x4170d6e
github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*conn).processCommandsAsync.func1(0xc001bc8654, 0xc00138e690, 0x6fd9ee8, 0xc000924740, 0xc001116e40, 0xc0005f7500, 0xc001802d00, 0x70492c0, 0xc001848510, 0xc001901980, ...)
    /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:648 +0x3d4 fp=0xc00332df28 sp=0xc00332ddd8 pc=0x45f7914
runtime.goexit()
    /opt/ooce/go-1.16/src/runtime/asm_amd64.s:1371 +0x1 fp=0xc00332df30 sp=0xc00332df28 pc=0x10e35a1
created by github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*conn).processCommandsAsync
    /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:576 +0x188

I'm attaching the whole directory here as well.
issue-1223-round-2.tgz.zip

@knz
Copy link

knz commented Jul 22, 2022 via email

@davepacheco
Copy link
Collaborator Author

The next step here seems to be updating Omicron to the latest CockroachDB, which uses Go 1.17. This is being done under oxidecomputer/garbage-compactor#5.

@davepacheco
Copy link
Collaborator Author

Okay, I've finally got an up-to-date CockroachDB build with an up-to-date Go. It's v22.1.9 (released just this week) on Go v1.17.13. Go v1.17.13 is the latest Go release of 1.17. It looks like Go 1.17 is what Cockroach v22.1.9 expects.

I ran this loop:

$ while cockroach version; do :; done
Build Tag:        v22.1.9-dirty
Build Time:       2022/10/21 16:56:49
Distribution:     OSS
Platform:         illumos amd64 (x86_64-pc-solaris2.11)
Go Version:       go1.17.13
C Compiler:       gcc 10.3.0
Build Commit ID:  e438c2f89282e607e0e6ca1d38b2e0a622f94493
Build Type:       release
...
Build Tag:        v22.1.9-dirty
Build Time:       2022/10/21 16:56:49
Distribution:     OSS
Platform:         illumos amd64 (x86_64-pc-solaris2.11)
Go Version:       go1.17.13
C Compiler:       gcc 10.3.0
Build Commit ID:  e438c2f89282e607e0e6ca1d38b2e0a622f94493
Build Type:       release
runtime: s.allocCount= 35 s.nelems= 73
fatal error: s.allocCount != s.nelems && freeIndex == s.nelems

goroutine 1 [running, locked to thread]:
runtime.throw({0x612f6ce, 0x31})
	/opt/ooce/go-1.17/src/runtime/panic.go:1198 +0x74 fp=0xc000f7ecf8 sp=0xc000f7ecc8 pc=0x127d6b4
runtime.(*mcache).nextFree(0xfffffc7fef044f18, 0x12)
	/opt/ooce/go-1.17/src/runtime/malloc.go:884 +0x228 fp=0xc000f7ed38 sp=0xc000f7ecf8 pc=0x124e6e8
runtime.mallocgc(0x70, 0x5ee6920, 0x1)
	/opt/ooce/go-1.17/src/runtime/malloc.go:1077 +0x530 fp=0xc000f7edb8 sp=0xc000f7ed38 pc=0x124ec30
runtime.newobject(0x5ee6920)
	/opt/ooce/go-1.17/src/runtime/malloc.go:1234 +0x38 fp=0xc000f7ede8 sp=0xc000f7edb8 pc=0x124f1d8
regexp/syntax.simplify1(...)
	/opt/ooce/go-1.17/src/regexp/syntax/simplify.go:148
regexp/syntax.(*Regexp).Simplify(0xc0006ceb60)
	/opt/ooce/go-1.17/src/regexp/syntax/simplify.go:100 +0xbbb fp=0xc000f7eef8 sp=0xc000f7ede8 pc=0x14a5dfb
regexp/syntax.(*Regexp).Simplify(0xc0006cea10)
	/opt/ooce/go-1.17/src/regexp/syntax/simplify.go:23 +0x56b fp=0xc000f7f008 sp=0xc000f7eef8 pc=0x14a57ab
regexp/syntax.(*Regexp).Simplify(0xc0006cfb90)
	/opt/ooce/go-1.17/src/regexp/syntax/simplify.go:23 +0x56b fp=0xc000f7f118 sp=0xc000f7f008 pc=0x14a57ab
regexp.compile({0x61488c0, 0x35}, 0xd4, 0x0)
	/opt/ooce/go-1.17/src/regexp/regexp.go:177 +0xd4 fp=0xc000f7f1b8 sp=0xc000f7f118 pc=0x14af194
regexp.Compile(...)
	/opt/ooce/go-1.17/src/regexp/regexp.go:133
regexp.MustCompile({0x61488c0, 0x35})
	/opt/ooce/go-1.17/src/regexp/regexp.go:309 +0x4b fp=0xc000f7f240 sp=0xc000f7f1b8 pc=0x14afe8b
go.opencensus.io/resource.init()
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/vendor/go.opencensus.io/resource/resource.go:60 +0x36 fp=0xc000f7f268 sp=0xc000f7f240 pc=0x51e6956
runtime.doInit(0xaf5abe0)
	/opt/ooce/go-1.17/src/runtime/proc.go:6498 +0x129 fp=0xc000f7f3b8 sp=0xc000f7f268 pc=0x128e949
runtime.doInit(0xaf51960)
	/opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc000f7f508 sp=0xc000f7f3b8 pc=0x128e89e
runtime.doInit(0xaf58f00)
	/opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc000f7f658 sp=0xc000f7f508 pc=0x128e89e
runtime.doInit(0xaf67160)
	/opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc000f7f7a8 sp=0xc000f7f658 pc=0x128e89e
runtime.doInit(0xaf6b9a0)
	/opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc000f7f8f8 sp=0xc000f7f7a8 pc=0x128e89e
runtime.doInit(0xaf6ea20)
	/opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc000f7fa48 sp=0xc000f7f8f8 pc=0x128e89e
runtime.doInit(0xaf792e0)
	/opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc000f7fb98 sp=0xc000f7fa48 pc=0x128e89e
runtime.doInit(0xaf58060)
	/opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc000f7fce8 sp=0xc000f7fb98 pc=0x128e89e
runtime.doInit(0xafb0ae0)
	/opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc000f7fe38 sp=0xc000f7fce8 pc=0x128e89e
runtime.doInit(0xaf503a0)
	/opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc000f7ff88 sp=0xc000f7fe38 pc=0x128e89e
runtime.main()
	/opt/ooce/go-1.17/src/runtime/proc.go:238 +0x205 fp=0xc000f7ffe0 sp=0xc000f7ff88 pc=0x12801c5
runtime.goexit()
	/opt/ooce/go-1.17/src/runtime/asm_amd64.s:1581 +0x1 fp=0xc000f7ffe8 sp=0xc000f7ffe0 pc=0x12b6d41

goroutine 18 [chan receive]:
github.com/cockroachdb/cockroach/pkg/util/log.flushDaemon()
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:75 +0x76
created by github.com/cockroachdb/cockroach/pkg/util/log.init.5
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:41 +0x35

goroutine 19 [chan receive]:
github.com/cockroachdb/cockroach/pkg/util/log.signalFlusher()
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:98 +0x145
created by github.com/cockroachdb/cockroach/pkg/util/log.init.5
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:42 +0x4d

goroutine 22 [syscall]:
os/signal.signal_recv()
	/opt/ooce/go-1.17/src/runtime/sigqueue.go:169 +0xab
os/signal.loop()
	/opt/ooce/go-1.17/src/os/signal/signal_unix.go:24 +0x25
created by os/signal.Notify.func1.1
	/opt/ooce/go-1.17/src/os/signal/signal.go:151 +0x3a

goroutine 8 [chan receive]:
github.com/cockroachdb/cockroach/pkg/util/goschedstats.init.0.func1()
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/goschedstats/runnable.go:165 +0x1de
created by github.com/cockroachdb/cockroach/pkg/util/goschedstats.init.0
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/goschedstats/runnable.go:157 +0x35

This happened on iteration 7 -- basically right away. Trying to repro, I ran it again, and it's been running several minutes without incident.

Separately, I ran the Omicron test suite twice. Each run of the test suite runs dozens of tests that each run cockroach at least once. Most tests passed, but I saw three failures across the two runs:

---- db::datastore::test::test_region_allocation stdout ----
log file: "/dangerzone/omicron_tmp/omicron_nexus-f7a77ee7f5dba530-test_region_allocation.23078.37.log"
note: configured to log to "/dangerzone/omicron_tmp/omicron_nexus-f7a77ee7f5dba530-test_region_allocation.23078.37.log"
thread 'db::datastore::test::test_region_allocation' panicked at 'called `Result::unwrap()` on an `Err` value: BadVersion { expected: "v22.1.9-dirty", found: Err(error Some(2) when checking CockroachDB version) }', /home/dap/omicron-cockroachdb/test-utils/src/dev/mod.rs:142:42
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
...
---- db::pagination::test::test_paginated_multicolumn_descending stdout ----
log file: "/dangerzone/omicron_tmp/omicron_nexus-f7a77ee7f5dba530-test_paginated_multicolumn_descending.23078.50.log"
note: configured to log to "/dangerzone/omicron_tmp/omicron_nexus-f7a77ee7f5dba530-test_paginated_multicolumn_descending.23078.50.log"
thread 'db::pagination::test::test_paginated_multicolumn_descending' panicked at 'called `Result::unwrap()` on an `Err` value: BadVersion { expected: "v22.1.9-dirty", found: Err(error Some(2) when checking CockroachDB version) }', /home/dap/omicron-cockroachdb/test-utils/src/dev/mod.rs:142:42
...
---- db::collection_detach::test::test_detach_missing_resource_fails stdout ----
log file: "/dangerzone/omicron_tmp/omicron_nexus-f7a77ee7f5dba530-test_detach_missing_resource_fails.24434.17.log"
note: configured to log to "/dangerzone/omicron_tmp/omicron_nexus-f7a77ee7f5dba530-test_detach_missing_resource_fails.24434.17.log"
thread 'db::collection_detach::test::test_detach_missing_resource_fails' panicked at 'called `Result::unwrap()` on an `Err` value: Exited { exit_code: 2 }', /home/dap/omicron-cockroachdb/test-utils/src/dev/mod.rs:142:42
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

For some reason, I only have stderr from the last of those failures. Following the log mentioned above:

$ bunyan /dangerzone/omicron_tmp/omicron_nexus-f7a77ee7f5dba530-test_detach_missing_resource_fails.24434.17.log
[2022-10-21T18:04:55.403226924Z]  INFO: test_detach_missing_resource_fails/24434 on ivanova: cockroach temporary directory: /dangerzone/omicron_tmp/.tmp8C2WQ7
[2022-10-21T18:04:55.403696163Z]  INFO: test_detach_missing_resource_fails/24434 on ivanova: cockroach: copying from seed directory (/home/dap/omicron-cockroachdb/target/debug/build/nexus-test-utils-110448a09861e607/out/crdb-base) to storage directory (/dangerzone/omicron_tmp/.tmp8C2WQ7/data)
[2022-10-21T18:04:55.434743557Z]  INFO: test_detach_missing_resource_fails/24434 on ivanova: cockroach command line: cockroach start-single-node --insecure --http-addr=:0 --store=path=/dangerzone/omicron_tmp/.tmp8C2WQ7/data,ballast-size=0 --listen-addr 127.0.0.1:0 --listening-url-file /dangerzone/omicron_tmp/.tmp8C2WQ7/listen-url

$ cat /dangerzone/omicron_tmp/.tmp8C2WQ7/cockroachdb_stderr
unexpected fault address 0x1252ba6
fatal error: fault
fatal error: releasep: invalid arg
[signal SIGSEGV: segmentation violation code=0x1 addr=0x1252ba6 pc=0x1252ba6]

goroutine 1 [running, locked to thread]:
runtime.throw({0x602c9f0, 0x5})
	/opt/ooce/go-1.17/src/runtime/panic.go:1198 +0x74 fp=0xc00117f800 sp=0xc00117f7d0 pc=0x127d6b4
runtime.sigpanic()
	/opt/ooce/go-1.17/src/runtime/signal_unix.go:742 +0x3b8 fp=0xc00117f860 sp=0xc00117f800 pc=0x1295c18
runtime.mapassign_fast32(0x5973b40, 0xc0003aa180, 0x0)
	/opt/ooce/go-1.17/src/runtime/map_fast32.go:126 +0x206 fp=0xc00117f8a0 sp=0xc00117f860 pc=0x1252ba6
github.com/cockroachdb/cockroach/pkg/ccl/sqlproxyccl/tenant.init()
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/ccl/sqlproxyccl/tenant/directory.pb.go:63 +0x4c fp=0xc00117f8f8 sp=0xc00117f8a0 pc=0x53aeacc
runtime.doInit(0xaf6ebe0)
	/opt/ooce/go-1.17/src/runtime/proc.go:6498 +0x129 fp=0xc00117fa48 sp=0xc00117f8f8 pc=0x128e949
runtime.doInit(0xaf66440)
	/opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc00117fb98 sp=0xc00117fa48 pc=0x128e89e
runtime.doInit(0xaf7e620)
	/opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc00117fce8 sp=0xc00117fb98 pc=0x128e89e
runtime.doInit(0xafb0ae0)
	/opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc00117fe38 sp=0xc00117fce8 pc=0x128e89e
runtime.doInit(0xaf503a0)
	/opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc00117ff88 sp=0xc00117fe38 pc=0x128e89e
runtime.main()
	/opt/ooce/go-1.17/src/runtime/proc.go:238 +0x205 fp=0xc00117ffe0 sp=0xc00117ff88 pc=0x12801c5
runtime.goexit()
	/opt/ooce/go-1.17/src/runtime/asm_amd64.s:1581 +0x1 fp=0xc00117ffe8 sp=0xc00117ffe0 pc=0x12b6d41

goroutine 18 [chan receive]:
github.com/cockroachdb/cockroach/pkg/util/log.flushDaemon()
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:75 +0x76
created by github.com/cockroachdb/cockroach/pkg/util/log.init.5
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:41 +0x35

goroutine 19 [chan receive]:
github.com/cockroachdb/cockroach/pkg/util/log.signalFlusher()
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:98 +0x145
created by github.com/cockroachdb/cockroach/pkg/util/log.init.5
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:42 +0x4d

goroutine 22 [syscall]:
os/signal.signal_recv()
	/opt/ooce/go-1.17/src/runtime/sigqueue.go:169 +0xab
os/signal.loop()
	/opt/ooce/go-1.17/src/os/signal/signal_unix.go:24 +0x25
created by os/signal.Notify.func1.1
	/opt/ooce/go-1.17/src/os/signal/signal.go:151 +0x3a

goroutine 8 [chan receive]:
github.com/cockroachdb/cockroach/pkg/util/goschedstats.init.0.func1()
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/goschedstats/runnable.go:165 +0x1de
created by github.com/cockroachdb/cockroach/pkg/util/goschedstats.init.0
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/goschedstats/runnable.go:157 +0x35

goroutine 82 [select]:
go.opencensus.io/stats/view.(*worker).start(0xc0005a2c00)
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/vendor/go.opencensus.io/stats/view/worker.go:276 +0xec
created by go.opencensus.io/stats/view.init.0
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/vendor/go.opencensus.io/stats/view/worker.go:34 +0x76

runtime stack:
runtime.throw({0x60753a0, 0x15})
	/opt/ooce/go-1.17/src/runtime/panic.go:1198 +0x74
runtime.releasep()
	/opt/ooce/go-1.17/src/runtime/proc.go:5178 +0x190
runtime.gcstopm()
	/opt/ooce/go-1.17/src/runtime/proc.go:2650 +0x69
runtime.findrunnable()
	/opt/ooce/go-1.17/src/runtime/proc.go:2715 +0x59
runtime.schedule()
	/opt/ooce/go-1.17/src/runtime/proc.go:3367 +0x297
runtime.park_m(0xc0006029c0)
	/opt/ooce/go-1.17/src/runtime/proc.go:3516 +0x18e
runtime.mcall()
	/opt/ooce/go-1.17/src/runtime/asm_amd64.s:337 +0x63

As I wrote this up, I started a second bash loop to repro with just cockroach version, and that ran for a few minutes before bailing out too:

...
Build Tag:        v22.1.9-dirty
Build Time:       2022/10/21 16:56:49
Distribution:     OSS
Platform:         illumos amd64 (x86_64-pc-solaris2.11)
Go Version:       go1.17.13
C Compiler:       gcc 10.3.0
Build Commit ID:  e438c2f89282e607e0e6ca1d38b2e0a622f94493
Build Type:       release
runtime: s.allocCount= 133 s.nelems= 170
fatal error: s.allocCount != s.nelems && freeIndex == s.nelems

goroutine 1 [running, locked to thread]:
runtime.throw({0x612f6ce, 0x31})
        /opt/ooce/go-1.17/src/runtime/panic.go:1198 +0x74 fp=0xc000c03e28 sp=0xc000c03df8 pc=0x127d6b4
runtime.(*mcache).nextFree(0xfffffc7fef0c5688, 0xa)
        /opt/ooce/go-1.17/src/runtime/malloc.go:884 +0x228 fp=0xc000c03e68 sp=0xc000c03e28 pc=0x124e6e8
runtime.mallocgc(0x30, 0x5ec4500, 0x1)
        /opt/ooce/go-1.17/src/runtime/malloc.go:1077 +0x530 fp=0xc000c03ee8 sp=0xc000c03e68 pc=0x124ec30
runtime.newobject(0x5ec4500)
        /opt/ooce/go-1.17/src/runtime/malloc.go:1234 +0x38 fp=0xc000c03f18 sp=0xc000c03ee8 pc=0x124f1d8
runtime.makemap_small()
        /opt/ooce/go-1.17/src/runtime/map.go:293 +0x2d fp=0xc000c03f38 sp=0xc000c03f18 pc=0x124fdcd
github.com/aws/aws-sdk-go/aws/endpoints.init()
        /home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go:6369 +0x8a21c fp=0xc000c177a8 sp=0xc000c03f38 pc=0x4e6c6bc
runtime.doInit(0xaf5a160)
        /opt/ooce/go-1.17/src/runtime/proc.go:6498 +0x129 fp=0xc000c178f8 sp=0xc000c177a8 pc=0x128e949
runtime.doInit(0xaf63380)
        /opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc000c17a48 sp=0xc000c178f8 pc=0x128e89e
runtime.doInit(0xaf788c0)
        /opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc000c17b98 sp=0xc000c17a48 pc=0x128e89e
runtime.doInit(0xaf58060)
        /opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc000c17ce8 sp=0xc000c17b98 pc=0x128e89e
runtime.doInit(0xafb0ae0)
        /opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc000c17e38 sp=0xc000c17ce8 pc=0x128e89e
runtime.doInit(0xaf503a0)
        /opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc000c17f88 sp=0xc000c17e38 pc=0x128e89e
runtime.main()
        /opt/ooce/go-1.17/src/runtime/proc.go:238 +0x205 fp=0xc000c17fe0 sp=0xc000c17f88 pc=0x12801c5
runtime.goexit()
        /opt/ooce/go-1.17/src/runtime/asm_amd64.s:1581 +0x1 fp=0xc000c17fe8 sp=0xc000c17fe0 pc=0x12b6d41

goroutine 34 [chan receive]:
github.com/cockroachdb/cockroach/pkg/util/log.flushDaemon()
        /home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:75 +0x76
created by github.com/cockroachdb/cockroach/pkg/util/log.init.5
        /home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:41 +0x35

goroutine 35 [chan receive]:
github.com/cockroachdb/cockroach/pkg/util/log.signalFlusher()
        /home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:98 +0x145
created by github.com/cockroachdb/cockroach/pkg/util/log.init.5
        /home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:42 +0x4d

goroutine 38 [syscall]:
os/signal.signal_recv()
        /opt/ooce/go-1.17/src/runtime/sigqueue.go:169 +0xab
os/signal.loop()
        /opt/ooce/go-1.17/src/os/signal/signal_unix.go:24 +0x25
created by os/signal.Notify.func1.1
        /opt/ooce/go-1.17/src/os/signal/signal.go:151 +0x3a

goroutine 39 [chan receive]:
github.com/cockroachdb/cockroach/pkg/util/goschedstats.init.0.func1()
        /home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/goschedstats/runnable.go:165 +0x1de
created by github.com/cockroachdb/cockroach/pkg/util/goschedstats.init.0
        /home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/goschedstats/runnable.go:157 +0x35

@knz these feel pretty similar to the problems we were seeing before, don't they? They don't seem fixed in Go 1.17.

@knz
Copy link

knz commented Oct 21, 2022

Thanks. Can you compare the results of you build CRDB with stdmalloc as a go build tag? That will remove jemalloc from the picture.

@davepacheco
Copy link
Collaborator Author

davepacheco commented Oct 21, 2022

@knz This should be a stdmalloc build already. I don't know how to confirm that, but I don't see jemalloc symbols in it:

$ nm ~/tools/cockroach-v22.1.9/bin/cockroach | grep -i jemalloc
[157157]	|           188214760|                   8|OBJT |LOCL |0    |35     |github.com/cockroachdb/cockroach/pkg/server/heapprofiler.jemallocHeapDump
[117026]	|            77790624|                 412|FUNC |LOCL |0    |15     |github.com/cockroachdb/cockroach/pkg/server/heapprofiler.takeJemallocProfile
[157166]	|           139753440|                  32|OBJT |LOCL |0    |18     |github.com/cockroachdb/cockroach/pkg/server/heapprofiler.takeJemallocProfile.stkobj

By comparison, here's one that was not built this way:

 $ nm ~/tools/cockroachdb-v21.1.10/bin/cockroach | grep -i jemalloc
[169366]	|            73621120|                  81|FUNC |GLOB |0    |15     |_cgo_a09ca8310212_C2func_jemalloc_get_stats
[169342]	|            73621232|                  59|FUNC |GLOB |0    |15     |_cgo_a09ca8310212_Cfunc_jemalloc_get_stats
[109464]	|            73453120|                 357|FUNC |LOCL |0    |15     |github.com/cockroachdb/cockroach/pkg/cli.writeJemallocProfile
[109680]	|            73555040|                 116|FUNC |LOCL |0    |15     |github.com/cockroachdb/cockroach/pkg/cli.writeJemallocProfile.func1
[109679]	|            73554912|                 103|FUNC |LOCL |0    |15     |github.com/cockroachdb/cockroach/pkg/cli.writeJemallocProfile.func1.1
[110387]	|           105208256|                  24|OBJT |LOCL |0    |18     |github.com/cockroachdb/cockroach/pkg/cli.writeJemallocProfile.stkobj
[125075]	|           148005312|                   8|OBJT |LOCL |0    |36     |github.com/cockroachdb/cockroach/pkg/server/heapprofiler.jemallocHeapDump
[93777]	|            65697728|                 367|FUNC |LOCL |0    |15     |github.com/cockroachdb/cockroach/pkg/server/heapprofiler.takeJemallocProfile
[125080]	|           105255456|                  24|OBJT |LOCL |0    |18     |github.com/cockroachdb/cockroach/pkg/server/heapprofiler.takeJemallocProfile.stkobj
[92781]	|            65212704|                 182|FUNC |LOCL |0    |15     |github.com/cockroachdb/cockroach/pkg/server/status._C2func_jemalloc_get_stats
[120183]	|           105624768|                  40|OBJT |LOCL |0    |18     |github.com/cockroachdb/cockroach/pkg/server/status._C2func_jemalloc_get_stats.stkobj
[120162]	|           137540264|                   8|OBJT |LOCL |0    |28     |github.com/cockroachdb/cockroach/pkg/server/status._cgo_a09ca8310212_C2func_jemalloc_get_stats
[92784]	|            65213248|                1757|FUNC |LOCL |0    |15     |github.com/cockroachdb/cockroach/pkg/server/status.getJemallocStats
[120185]	|           105945856|                  56|OBJT |LOCL |0    |18     |github.com/cockroachdb/cockroach/pkg/server/status.getJemallocStats.stkobj
[537]	|            74373536|                 722|FUNC |LOCL |2    |15     |je_jemalloc_postfork_child
[166019]	|            74438337|                   5|FUNC |LOCL |0    |15     |je_jemalloc_postfork_child.cold
[383]	|            74374272|                 722|FUNC |LOCL |2    |15     |je_jemalloc_postfork_parent
[166020]	|            74438342|                   5|FUNC |LOCL |0    |15     |je_jemalloc_postfork_parent.cold
[596]	|            74375008|                1570|FUNC |LOCL |2    |15     |je_jemalloc_prefork
[166021]	|            74438347|                   5|FUNC |LOCL |0    |15     |je_jemalloc_prefork.cold
[166043]	|            74438448|                 188|FUNC |LOCL |0    |15     |jemalloc_constructor
[166044]	|            74438437|                   5|FUNC |LOCL |0    |15     |jemalloc_constructor.cold
[170706]	|            73620816|                 297|FUNC |GLOB |0    |15     |jemalloc_get_stats
[165999]	|                   0|                   0|FILE |LOCL |0    |ABS    |jemalloc.c
[165218]	|                   0|                   0|FILE |LOCL |0    |ABS    |runtime_jemalloc.cgo2.c
[165200]	|                   0|                   0|FILE |LOCL |0    |ABS    |start_jemalloc.cgo2.c

(edit sorry jnz for the stray mention)

@davepacheco
Copy link
Collaborator Author

Here's a different failure mode, also from the cockroach version loop:

0xc000d8bec0 free  unmarked
0xc000d8bf20 free  unmarked
0xc000d8bf80 free  unmarked
fatal error: found pointer to free object

runtime stack:
runtime.throw({0x6097e1e, 0x1c})
        /opt/ooce/go-1.17/src/runtime/panic.go:1198 +0x74
runtime.(*mspan).reportZombies(0xfffffc7fee7d94e8)
        /opt/ooce/go-1.17/src/runtime/mgcsweep.go:691 +0x345
runtime.(*sweepLocked).sweep(0xfffffc7fe81ffe20, 0x0)
        /opt/ooce/go-1.17/src/runtime/mgcsweep.go:524 +0x9dd
runtime.(*mcentral).uncacheSpan(0xb3dc568, 0xfffffc7fee7d94e8)
        /opt/ooce/go-1.17/src/runtime/mcentral.go:223 +0xcf
runtime.(*mcache).releaseAll(0xfffffc7fef14f3c8)
        /opt/ooce/go-1.17/src/runtime/mcache.go:279 +0x134
runtime.(*mcache).prepareForSweep(0xfffffc7fef14f3c8)
        /opt/ooce/go-1.17/src/runtime/mcache.go:317 +0x46
runtime.gcMarkTermination.func4.1(0xc00008a000)
        /opt/ooce/go-1.17/src/runtime/mgc.go:1052 +0x2f
runtime.forEachP(0x747b708)
        /opt/ooce/go-1.17/src/runtime/proc.go:1602 +0x12a
runtime.gcMarkTermination.func4()
        /opt/ooce/go-1.17/src/runtime/mgc.go:1051 +0x2d
runtime.systemstack()
        /opt/ooce/go-1.17/src/runtime/asm_amd64.s:383 +0x52

goroutine 41 [running]:
runtime.systemstack_switch()
        /opt/ooce/go-1.17/src/runtime/asm_amd64.s:350 fp=0xc000509d50 sp=0xc000509d48 pc=0x12b4b40
runtime.gcMarkTermination(0x3ff0393dbb020f24)
        /opt/ooce/go-1.17/src/runtime/mgc.go:1050 +0x525 fp=0xc000509f08 sp=0xc000509d50 pc=0x125ea85
runtime.gcMarkDone()
        /opt/ooce/go-1.17/src/runtime/mgc.go:902 +0x2d5 fp=0xc000509f60 sp=0xc000509f08 pc=0x125e435
runtime.gcBgMarkWorker()
        /opt/ooce/go-1.17/src/runtime/mgc.go:1330 +0x30c fp=0xc000509fe0 sp=0xc000509f60 pc=0x125f7ac
runtime.goexit()
        /opt/ooce/go-1.17/src/runtime/asm_amd64.s:1581 +0x1 fp=0xc000509fe8 sp=0xc000509fe0 pc=0x12b6d41
created by runtime.gcBgMarkStartWorkers
        /opt/ooce/go-1.17/src/runtime/mgc.go:1124 +0x37

goroutine 1 [runnable, locked to thread]:
github.com/aws/aws-sdk-go/aws/endpoints.init()
        /home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go:3799 +0x4fb5e

goroutine 18 [chan receive]:
github.com/cockroachdb/cockroach/pkg/util/log.flushDaemon()
        /home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:75 +0x76
created by github.com/cockroachdb/cockroach/pkg/util/log.init.5
        /home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:41 +0x35

goroutine 19 [chan receive]:
github.com/cockroachdb/cockroach/pkg/util/log.signalFlusher()
        /home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:98 +0x145
created by github.com/cockroachdb/cockroach/pkg/util/log.init.5
        /home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:42 +0x4d

goroutine 22 [syscall]:
os/signal.signal_recv()
        /opt/ooce/go-1.17/src/runtime/sigqueue.go:169 +0xab
os/signal.loop()
        /opt/ooce/go-1.17/src/os/signal/signal_unix.go:24 +0x25
created by os/signal.Notify.func1.1
        /opt/ooce/go-1.17/src/os/signal/signal.go:151 +0x3a

goroutine 8 [chan receive]:
github.com/cockroachdb/cockroach/pkg/util/goschedstats.init.0.func1()
        /home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/goschedstats/runnable.go:165 +0x1de
created by github.com/cockroachdb/cockroach/pkg/util/goschedstats.init.0
        /home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/goschedstats/runnable.go:157 +0x35

@davepacheco
Copy link
Collaborator Author

Also noteworthy: I updated the loop to use libumem and still hit this failure mode (without libumem reporting any problem):

$ while :; do LD_PRELOAD=libumem.so cockroach version; f=$?; [[ $f -eq 0 ]] || break; done
...
runtime: s.allocCount= 14 s.nelems= 23
fatal error: s.allocCount != s.nelems && freeIndex == s.nelems

I also saw this when run with UMEM_DEBUG=default (using while :; do UMEM_DEBUG=default LD_PRELOAD=libumem.so cockroach version; f=$?; [[ $f -eq 0 ]] || break; done). Whatever's going on appears outside the system memory allocator (i.e., I think this makes use-after-free or double-free to the system allocator unlikely).

@knz
Copy link

knz commented Oct 21, 2022

Folk i don't know what to say. I really don't want to point fingers but the likelihood of a bug in cockroachdb is low.

What i think is happening is that your HW/OS/compiler combination is creating an environment with nonstandard memory consistency properties and that throws a wrench into go's runtime semantics.
And then the reason why you see it happen with CRDB and not other go programs is that CRDB is ... Big.

Let's test this theory: is there a way for y'all to configure your OS to run processes on a single processor? Like force crdb to be pinned on one core, to serialize all memory accesses. What sould that give?

@jmpesp
Copy link
Contributor

jmpesp commented Oct 24, 2022

@davepacheco I'd also be interested in seeing what libumem finds if you bypass the Go allocator and turn off GC:

export GODEBUG=sbrk=1

@davepacheco
Copy link
Collaborator Author

@knz No problem. I don't think we have evidence here to indict or exonerate the hardware, operating system, compiler, or a combination of those yet. I've used all these things quite a lot without issues like this one. I have not used much Go on this system and it's possible there's an issue there or with the combination of Go with those things (although still no evidence here points to a platform-specific issue -- it's not like similar issues haven't been seen with Golang before).

I briefly played with trying to reproduce this on a single processor but I'm not sure that's useful. The problem did not reproduce right away, but the test suite takes about 6x as long to run to begin with. Plus, if the problem is related to concurrency (even if were a platform-independent bug in Go or CockroachDB), it may not reproduce with one CPU.

On @jmpesp's suggestion above, I tried a few different GODEBUG runtime variables. In these tests, I ran with time while time GODEBUG=... cargo test -p omicron-nexus --lib -- db:: ; do :; done. Without setting GODEBUG, this generally failed after about a minute (2 iterations).

  • GODEBUG=sbrk=1: No failure seen after 98 minutes. I'm not sure what this means either. I already sort of suspected the Go allocator or its consumers. This behavior appears consistent with that.
  • GODEBUG=madvdontneed=0: Appears to have no effect (continues to reproduce after a few iterations). Tracing with DTrace, I'm only seeing MADV_FREE (not MADV_DONTNEED) even without this flag, which is consistent with the documentation's implication that this flag changes the behavior "on Linux".
  • GODEBUG=efence=1: Appears to have no effect (continues to reproduce after a few iterations).
  • GODEBUG=clobberfree=1: Appears to have no effect (continues to reproduce after a few iterations).
  • GODEBUG=gcstoptheworld=2: No failure seen after 4 minutes.
  • GODEBUG=asyncpreemptoff=1: No failure seen after 5.5 minutes.

I also ran the Go test suite on 1.17.13 (that is, ran ./all.sh) on this system without issue. But I note that @jmpesp did see some issues with it that have not been addressed.

@davepacheco
Copy link
Collaborator Author

davepacheco commented Oct 26, 2022

After updating to Helios helios-1.0.21316, two more failure modes here: #1876, and this different error from the memory allocator:

runtime: nelems=1024 nalloc=133 previous allocCount=1 nfreed=65404
fatal error: sweep increased allocation count

runtime stack:
runtime.throw({0x60b2b2b, 0x20})
	/opt/ooce/go-1.17/src/runtime/panic.go:1198 +0x74
runtime.(*sweepLocked).sweep(0xfffffc7fe7bffe20, 0x0)
	/opt/ooce/go-1.17/src/runtime/mgcsweep.go:536 +0x99e
runtime.(*mcentral).uncacheSpan(0xb3dbae8, 0xfffffc7fed89dd30)
	/opt/ooce/go-1.17/src/runtime/mcentral.go:223 +0xcf
runtime.(*mcache).releaseAll(0xfffffc7fef1a3fe8)
	/opt/ooce/go-1.17/src/runtime/mcache.go:279 +0x134
runtime.(*mcache).prepareForSweep(0xfffffc7fef1a3fe8)
	/opt/ooce/go-1.17/src/runtime/mcache.go:317 +0x46
runtime.gcMarkTermination.func4.1(0xc00009f000)
	/opt/ooce/go-1.17/src/runtime/mgc.go:1052 +0x2f
runtime.forEachP(0x747b708)
	/opt/ooce/go-1.17/src/runtime/proc.go:1602 +0x12a
runtime.gcMarkTermination.func4()
	/opt/ooce/go-1.17/src/runtime/mgc.go:1051 +0x2d
runtime.systemstack()
	/opt/ooce/go-1.17/src/runtime/asm_amd64.s:383 +0x52

goroutine 55 [running]:
runtime.systemstack_switch()
	/opt/ooce/go-1.17/src/runtime/asm_amd64.s:350 fp=0xc00050ad50 sp=0xc00050ad48 pc=0x12b4b40
runtime.gcMarkTermination(0x3ff06be7b0564ff0)
	/opt/ooce/go-1.17/src/runtime/mgc.go:1050 +0x525 fp=0xc00050af08 sp=0xc00050ad50 pc=0x125ea85
runtime.gcMarkDone()
	/opt/ooce/go-1.17/src/runtime/mgc.go:902 +0x2d5 fp=0xc00050af60 sp=0xc00050af08 pc=0x125e435
runtime.gcBgMarkWorker()
	/opt/ooce/go-1.17/src/runtime/mgc.go:1330 +0x30c fp=0xc00050afe0 sp=0xc00050af60 pc=0x125f7ac
runtime.goexit()
	/opt/ooce/go-1.17/src/runtime/asm_amd64.s:1581 +0x1 fp=0xc00050afe8 sp=0xc00050afe0 pc=0x12b6d41
created by runtime.gcBgMarkStartWorkers
	/opt/ooce/go-1.17/src/runtime/mgc.go:1124 +0x37

goroutine 1 [runnable, locked to thread]:
regexp/syntax.(*parser).checkHeight(0xc000f24000, 0xc000f242a0)
	/opt/ooce/go-1.17/src/regexp/syntax/parse.go:125 +0x117
regexp/syntax.(*parser).push(0xc000f24000, 0xc000f242a0)
	/opt/ooce/go-1.17/src/regexp/syntax/parse.go:192 +0x369
regexp/syntax.parse({0x604fa12, 0xe}, 0xd4)
	/opt/ooce/go-1.17/src/regexp/syntax/parse.go:939 +0xa1b
regexp/syntax.Parse(...)
	/opt/ooce/go-1.17/src/regexp/syntax/parse.go:750
regexp.compile({0x604fa12, 0xe}, 0xd4, 0x0)
	/opt/ooce/go-1.17/src/regexp/regexp.go:170 +0x5a
regexp.Compile(...)
	/opt/ooce/go-1.17/src/regexp/regexp.go:133
github.com/aws/aws-sdk-go/aws/endpoints.glob..func2()
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go:7845 +0x45
github.com/aws/aws-sdk-go/aws/endpoints.init()
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go:7847 +0xa617f

goroutine 18 [chan receive]:
github.com/cockroachdb/cockroach/pkg/util/log.flushDaemon()
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:75 +0x76
created by github.com/cockroachdb/cockroach/pkg/util/log.init.5
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:41 +0x35

goroutine 19 [chan receive]:
github.com/cockroachdb/cockroach/pkg/util/log.signalFlusher()
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:98 +0x145
created by github.com/cockroachdb/cockroach/pkg/util/log.init.5
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:42 +0x4d

goroutine 34 [syscall]:
os/signal.signal_recv()
	/opt/ooce/go-1.17/src/runtime/sigqueue.go:169 +0xab
os/signal.loop()
	/opt/ooce/go-1.17/src/os/signal/signal_unix.go:24 +0x25
created by os/signal.Notify.func1.1
	/opt/ooce/go-1.17/src/os/signal/signal.go:151 +0x3a

goroutine 25 [chan receive]:
github.com/cockroachdb/cockroach/pkg/util/goschedstats.init.0.func1()
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/goschedstats/runnable.go:165 +0x1de
created by github.com/cockroachdb/cockroach/pkg/util/goschedstats.init.0
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/goschedstats/runnable.go:157 +0x35

@davepacheco
Copy link
Collaborator Author

Another run of the above test suite, another failure mode. (I probably need a better way to catalog these, but for now I just don't want to lose them.)

runtime: marked free object in span 0xfffffc7feea3b228, elemsize=48 freeindex=3 (bad use of unsafe.Pointer? try -d=checkptr)
0xc000c66000 alloc marked  
0xc000c66030 alloc marked  
0xc000c66060 alloc marked  
0xc000c66090 free  unmarked
0xc000c660c0 free  unmarked
0xc000c660f0 free  unmarked
0xc000c66120 free  unmarked
0xc000c66150 free  unmarked
0xc000c66180 free  unmarked
0xc000c661b0 free  unmarked
0xc000c661e0 free  unmarked
0xc000c66210 free  unmarked
0xc000c66240 free  unmarked
0xc000c66270 free  unmarked
0xc000c662a0 free  unmarked
0xc000c662d0 free  unmarked
0xc000c66300 free  unmarked
0xc000c66330 free  unmarked
0xc000c66360 free  unmarked
0xc000c66390 free  unmarked
0xc000c663c0 free  unmarked
0xc000c663f0 free  unmarked
0xc000c66420 free  unmarked
0xc000c66450 free  unmarked
0xc000c66480 free  unmarked
0xc000c664b0 free  unmarked
0xc000c664e0 free  unmarked
0xc000c66510 free  unmarked
0xc000c66540 free  unmarked
0xc000c66570 free  unmarked
0xc000c665a0 free  unmarked
0xc000c665d0 free  unmarked
0xc000c66600 free  unmarked
0xc000c66630 free  unmarked
0xc000c66660 free  unmarked
0xc000c66690 free  unmarked
0xc000c666c0 free  unmarked
0xc000c666f0 free  unmarked
0xc000c66720 free  unmarked
0xc000c66750 free  unmarked
0xc000c66780 free  unmarked
0xc000c667b0 free  unmarked
0xc000c667e0 free  unmarked
0xc000c66810 free  unmarked
0xc000c66840 free  unmarked
0xc000c66870 free  unmarked
0xc000c668a0 free  unmarked
0xc000c668d0 free  unmarked
0xc000c66900 free  unmarked
0xc000c66930 free  unmarked
0xc000c66960 free  unmarked
0xc000c66990 free  unmarked
0xc000c669c0 free  unmarked
0xc000c669f0 free  unmarked
0xc000c66a20 free  unmarked
0xc000c66a50 free  unmarked
0xc000c66a80 free  unmarked
0xc000c66ab0 free  unmarked
0xc000c66ae0 free  unmarked
0xc000c66b10 free  unmarked
0xc000c66b40 free  unmarked
0xc000c66b70 free  unmarked
0xc000c66ba0 free  unmarked
0xc000c66bd0 free  unmarked
0xc000c66c00 free  unmarked
0xc000c66c30 free  unmarked
0xc000c66c60 free  unmarked
0xc000c66c90 free  unmarked
0xc000c66cc0 free  unmarked
0xc000c66cf0 free  unmarked
0xc000c66d20 free  unmarked
0xc000c66d50 free  unmarked
0xc000c66d80 free  unmarked
0xc000c66db0 free  unmarked
0xc000c66de0 free  unmarked
0xc000c66e10 free  unmarked
0xc000c66e40 free  unmarked
0xc000c66e70 free  unmarked
0xc000c66ea0 free  unmarked
0xc000c66ed0 free  unmarked
0xc000c66f00 free  unmarked
0xc000c66f30 free  unmarked
0xc000c66f60 free  unmarked
0xc000c66f90 free  unmarked
0xc000c66fc0 free  unmarked
0xc000c66ff0 free  unmarked
0xc000c67020 free  unmarked
0xc000c67050 free  unmarked
0xc000c67080 free  unmarked
0xc000c670b0 free  unmarked
0xc000c670e0 free  unmarked
0xc000c67110 free  unmarked
0xc000c67140 free  unmarked
0xc000c67170 free  unmarked
0xc000c671a0 free  unmarked
0xc000c671d0 free  unmarked
0xc000c67200 free  unmarked
0xc000c67230 free  unmarked
0xc000c67260 free  unmarked
0xc000c67290 free  unmarked
0xc000c672c0 free  unmarked
0xc000c672f0 free  unmarked
0xc000c67320 free  unmarked
0xc000c67350 free  unmarked
0xc000c67380 free  unmarked
0xc000c673b0 free  unmarked
0xc000c673e0 free  unmarked
0xc000c67410 free  unmarked
0xc000c67440 free  unmarked
0xc000c67470 free  unmarked
0xc000c674a0 free  unmarked
0xc000c674d0 free  unmarked
0xc000c67500 free  unmarked
0xc000c67530 free  unmarked
0xc000c67560 free  unmarked
0xc000c67590 free  unmarked
0xc000c675c0 free  unmarked
0xc000c675f0 free  unmarked
0xc000c67620 free  unmarked
0xc000c67650 free  unmarked
0xc000c67680 free  unmarked
0xc000c676b0 free  unmarked
0xc000c676e0 free  unmarked
0xc000c67710 free  unmarked
0xc000c67740 free  unmarked
0xc000c67770 free  unmarked
0xc000c677a0 free  unmarked
0xc000c677d0 free  unmarked
0xc000c67800 free  marked   zombie
0x000000c000c67800:  0x0000000000000000  0x0000000000000000 
0x000000c000c67810:  0x0000000000000000  0x0000000000000000 
0x000000c000c67820:  0x0000000000000000  0x0000000000000000 
0xc000c67830 free  unmarked
0xc000c67860 free  unmarked
0xc000c67890 free  unmarked
0xc000c678c0 free  marked   zombie
0x000000c000c678c0:  0x0000000000000000  0x0000000000000000 
0x000000c000c678d0:  0x0000000000000000  0x0000000000000000 
0x000000c000c678e0:  0x0000000000000000  0x0000000000000000 
0xc000c678f0 free  unmarked
0xc000c67920 free  marked   zombie
0x000000c000c67920:  0x0000000000000000  0x0000000000000000 
0x000000c000c67930:  0x0000000000000000  0x0000000000000000 
0x000000c000c67940:  0x0000000000000000  0x0000000000000000 
0xc000c67950 free  marked   zombie
0x000000c000c67950:  0x0000000000000000  0x0000000000000000 
0x000000c000c67960:  0x0000000000000000  0x0000000000000000 
0x000000c000c67970:  0x0000000000000000  0x0000000000000000 
0xc000c67980 free  unmarked
0xc000c679b0 free  unmarked
0xc000c679e0 free  marked   zombie
0x000000c000c679e0:  0x0000000000000000  0x0000000000000000 
0x000000c000c679f0:  0x0000000000000000  0x0000000000000000 
0x000000c000c67a00:  0x0000000000000000  0x0000000000000000 
0xc000c67a10 free  marked   zombie
0x000000c000c67a10:  0x0000000000000000  0x0000000000000000 
0x000000c000c67a20:  0x0000000000000000  0x0000000000000000 
0x000000c000c67a30:  0x0000000000000000  0x0000000000000000 
0xc000c67a40 free  unmarked
0xc000c67a70 free  unmarked
0xc000c67aa0 free  marked   zombie
0x000000c000c67aa0:  0x0000000000000000  0x0000000000000000 
0x000000c000c67ab0:  0x0000000000000000  0x0000000000000000 
0x000000c000c67ac0:  0x0000000000000000  0x0000000000000000 
0xc000c67ad0 free  marked   zombie
0x000000c000c67ad0:  0x0000000000000000  0x0000000000000000 
0x000000c000c67ae0:  0x0000000000000000  0x0000000000000000 
0x000000c000c67af0:  0x0000000000000000  0x0000000000000000 
0xc000c67b00 free  marked   zombie
0x000000c000c67b00:  0x0000000000000000  0x0000000000000000 
0x000000c000c67b10:  0x0000000000000000  0x0000000000000000 
0x000000c000c67b20:  0x0000000000000000  0x0000000000000000 
0xc000c67b30 free  marked   zombie
0x000000c000c67b30:  0x0000000000000000  0x0000000000000000 
0x000000c000c67b40:  0x0000000000000000  0x0000000000000000 
0x000000c000c67b50:  0x0000000000000000  0x0000000000000000 
0xc000c67b60 free  marked   zombie
0x000000c000c67b60:  0x0000000000000000  0x0000000000000000 
0x000000c000c67b70:  0x0000000000000000  0x0000000000000000 
0x000000c000c67b80:  0x0000000000000000  0x0000000000000000 
0xc000c67b90 free  marked   zombie
0x000000c000c67b90:  0x0000000000000000  0x0000000000000000 
0x000000c000c67ba0:  0x0000000000000000  0x0000000000000000 
0x000000c000c67bb0:  0x0000000000000000  0x0000000000000000 
0xc000c67bc0 free  unmarked
0xc000c67bf0 free  marked   zombie
0x000000c000c67bf0:  0x0000000000000000  0x0000000000000000 
0x000000c000c67c00:  0x0000000000000000  0x0000000000000000 
0x000000c000c67c10:  0x0000000000000000  0x0000000000000000 
0xc000c67c20 free  unmarked
0xc000c67c50 free  unmarked
0xc000c67c80 free  marked   zombie
0x000000c000c67c80:  0x0000000000000000  0x0000000000000000 
0x000000c000c67c90:  0x0000000000000000  0x0000000000000000 
0x000000c000c67ca0:  0x0000000000000000  0x0000000000000000 
0xc000c67cb0 free  unmarked
0xc000c67ce0 free  unmarked
0xc000c67d10 free  marked   zombie
0x000000c000c67d10:  0x0000000000000000  0x0000000000000000 
0x000000c000c67d20:  0x0000000000000000  0x0000000000000000 
0x000000c000c67d30:  0x0000000000000000  0x0000000000000000 
0xc000c67d40 free  unmarked
0xc000c67d70 free  marked   zombie
0x000000c000c67d70:  0x0000000000000000  0x0000000000000000 
0x000000c000c67d80:  0x0000000000000000  0x0000000000000000 
0x000000c000c67d90:  0x0000000000000000  0x0000000000000000 
0xc000c67da0 free  marked   zombie
0x000000c000c67da0:  0x0000000000000000  0x0000000000000000 
0x000000c000c67db0:  0x0000000000000000  0x0000000000000000 
0x000000c000c67dc0:  0x0000000000000000  0x0000000000000000 
0xc000c67dd0 free  marked   zombie
0x000000c000c67dd0:  0x0000000000000000  0x0000000000000000 
0x000000c000c67de0:  0x0000000000000000  0x0000000000000000 
0x000000c000c67df0:  0x0000000000000000  0x0000000000000000 
0xc000c67e00 free  marked   zombie
0x000000c000c67e00:  0x0000000000000000  0x0000000000000000 
0x000000c000c67e10:  0x0000000000000000  0x0000000000000000 
0x000000c000c67e20:  0x0000000000000000  0x0000000000000000 
0xc000c67e30 free  marked   zombie
0x000000c000c67e30:  0x0000000000000000  0x0000000000000000 
0x000000c000c67e40:  0x0000000000000000  0x0000000000000000 
0x000000c000c67e50:  0x0000000000000000  0x0000000000000000 
0xc000c67e60 free  unmarked
0xc000c67e90 free  unmarked
0xc000c67ec0 free  unmarked
0xc000c67ef0 free  marked   zombie
0x000000c000c67ef0:  0x0000000000000000  0x0000000000000000 
0x000000c000c67f00:  0x0000000000000000  0x0000000000000000 
0x000000c000c67f10:  0x0000000000000000  0x0000000000000000 
0xc000c67f20 free  marked   zombie
0x000000c000c67f20:  0x0000000000000000  0x0000000000000000 
0x000000c000c67f30:  0x0000000000000000  0x0000000000000000 
0x000000c000c67f40:  0x0000000000000000  0x0000000000000000 
0xc000c67f50 free  unmarked
0xc000c67f80 free  unmarked
0xc000c67fb0 free  marked   zombie
0x000000c000c67fb0:  0x0000000000000000  0x0000000000000000 
0x000000c000c67fc0:  0x0000000000000000  0x0000000000000000 
0x000000c000c67fd0:  0x0000000000000000  0x0000000000000000 
fatal error: found pointer to free object

runtime stack:
runtime.throw({0x6097e1e, 0x1c})
	/opt/ooce/go-1.17/src/runtime/panic.go:1198 +0x74
runtime.(*mspan).reportZombies(0xfffffc7feea3b228)
	/opt/ooce/go-1.17/src/runtime/mgcsweep.go:691 +0x345
runtime.(*sweepLocked).sweep(0xfffffc7fe9fffe20, 0x0)
	/opt/ooce/go-1.17/src/runtime/mgcsweep.go:524 +0x9dd
runtime.(*mcentral).uncacheSpan(0xb3dc0e8, 0xfffffc7feea3b228)
	/opt/ooce/go-1.17/src/runtime/mcentral.go:223 +0xcf
runtime.(*mcache).releaseAll(0xfffffc7fef188d28)
	/opt/ooce/go-1.17/src/runtime/mcache.go:279 +0x134
runtime.(*mcache).prepareForSweep(0xfffffc7fef188d28)
	/opt/ooce/go-1.17/src/runtime/mcache.go:317 +0x46
runtime.gcMarkTermination.func4.1(0xc000095000)
	/opt/ooce/go-1.17/src/runtime/mgc.go:1052 +0x2f
runtime.forEachP(0x747b708)
	/opt/ooce/go-1.17/src/runtime/proc.go:1602 +0x12a
runtime.gcMarkTermination.func4()
	/opt/ooce/go-1.17/src/runtime/mgc.go:1051 +0x2d
runtime.systemstack()
	/opt/ooce/go-1.17/src/runtime/asm_amd64.s:383 +0x52

goroutine 29 [running]:
runtime.systemstack_switch()
	/opt/ooce/go-1.17/src/runtime/asm_amd64.s:350 fp=0xc000503d50 sp=0xc000503d48 pc=0x12b4b40
runtime.gcMarkTermination(0x3ff09a390c01744d)
	/opt/ooce/go-1.17/src/runtime/mgc.go:1050 +0x525 fp=0xc000503f08 sp=0xc000503d50 pc=0x125ea85
runtime.gcMarkDone()
	/opt/ooce/go-1.17/src/runtime/mgc.go:902 +0x2d5 fp=0xc000503f60 sp=0xc000503f08 pc=0x125e435
runtime.gcBgMarkWorker()
	/opt/ooce/go-1.17/src/runtime/mgc.go:1330 +0x30c fp=0xc000503fe0 sp=0xc000503f60 pc=0x125f7ac
runtime.goexit()
	/opt/ooce/go-1.17/src/runtime/asm_amd64.s:1581 +0x1 fp=0xc000503fe8 sp=0xc000503fe0 pc=0x12b6d41
created by runtime.gcBgMarkStartWorkers
	/opt/ooce/go-1.17/src/runtime/mgc.go:1124 +0x37

goroutine 1 [running, locked to thread]:
	goroutine running on other thread; stack unavailable

goroutine 18 [chan receive]:
github.com/cockroachdb/cockroach/pkg/util/log.flushDaemon()
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:75 +0x76
created by github.com/cockroachdb/cockroach/pkg/util/log.init.5
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:41 +0x35

goroutine 19 [chan receive]:
github.com/cockroachdb/cockroach/pkg/util/log.signalFlusher()
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:98 +0x145
created by github.com/cockroachdb/cockroach/pkg/util/log.init.5
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:42 +0x4d

goroutine 22 [syscall]:
os/signal.signal_recv()
	/opt/ooce/go-1.17/src/runtime/sigqueue.go:169 +0xab
os/signal.loop()
	/opt/ooce/go-1.17/src/os/signal/signal_unix.go:24 +0x25
created by os/signal.Notify.func1.1
	/opt/ooce/go-1.17/src/os/signal/signal.go:151 +0x3a

goroutine 8 [chan receive]:
github.com/cockroachdb/cockroach/pkg/util/goschedstats.init.0.func1()
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/goschedstats/runnable.go:165 +0x1de
created by github.com/cockroachdb/cockroach/pkg/util/goschedstats.init.0
	/home/dap/garbage-compactor/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/goschedstats/runnable.go:157 +0x35

This one looks like golang/go#53289 (comment).

@davepacheco
Copy link
Collaborator Author

I wanted to rule out some quirk of this particular machine so I ran this repro script on atrium: time while time cargo test -p omicron-nexus --lib -- db:: ; do :; done. It took about 15 minutes and 20 iterations but did reproduce the same family of issue:

$ time while time cargo test -p omicron-nexus --lib -- db:: ; do :; done
...
failures:

---- db::queries::external_ip::tests::test_next_external_ip_is_restricted_to_projects stdout ----
log file: "/tmp/omicron_nexus-598f187aac60c458-test_next_external_ip_is_restricted_to_projects.23695.56.log"
note: configured to log to "/tmp/omicron_nexus-598f187aac60c458-test_next_external_ip_is_restricted_to_projects.23695.56.log"
thread 'db::queries::external_ip::tests::test_next_external_ip_is_restricted_to_projects' panicked at 'failed to start CockroachDB: cockroach exited unexpectedly with status 2 (see error output above)', /home/dap/omicron/test-utils/src/dev/mod.rs:143:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    db::queries::external_ip::tests::test_next_external_ip_is_restricted_to_projects

test result: FAILED. 84 passed; 1 failed; 0 ignored; 0 measured; 50 filtered out; finished in 10.94s

error: test failed, to rerun pass `-p omicron-nexus --lib`

real    0m11.576s
user    2m9.129s
sys     1m7.285s

real    16m15.843s
user    79m27.341s
sys     29m4.964s

$ cat "/tmp/omicron_nexus-598f187aac60c458-test_next_external_ip_is_restricted_to_projects.23695.56.log"
{"msg":"cockroach temporary directory: /tmp/.tmpMdQdVk","v":0,"name":"test_next_external_ip_is_restricted_to_projects","level":30,"time":"2022-11-02T19:28:05.971785575Z","hostname":"atrium","pid":23695}
{"msg":"cockroach: copying from seed directory (/home/dap/omicron/target/debug/build/nexus-test-utils-bf5ed8b79de388df/out/crdb-base) to storage directory (/tmp/.tmpMdQdVk/data)","v":0,"name":"test_next_external_ip_is_restricted_to_projects","level":30,"time":"2022-11-02T19:28:05.971868328Z","hostname":"atrium","pid":23695}
{"msg":"cockroach command line: cockroach start-single-node --insecure --http-addr=:0 --store=path=/tmp/.tmpMdQdVk/data,ballast-size=0 --listen-addr 127.0.0.1:0 --listening-url-file /tmp/.tmpMdQdVk/listen-url","v":0,"name":"test_next_external_ip_is_restricted_to_projects","level":30,"time":"2022-11-02T19:28:05.991412308Z","hostname":"atrium","pid":23695}

$ $ cat /tmp/.tmpMdQdVk/cockroachdb_stderr 
runtime: s.allocCount= 38 s.nelems= 73
fatal error: s.allocCount != s.nelems && freeIndex == s.nelems

goroutine 1 [running, locked to thread]:
runtime.throw({0x612f80e, 0x31})
        /opt/ooce/go-1.17/src/runtime/panic.go:1198 +0x74 fp=0xc000b83be0 sp=0xc000b83bb0 pc=0x127d7f4
runtime.(*mcache).nextFree(0xfffffc7fef1b9b38, 0x12)
        /opt/ooce/go-1.17/src/runtime/malloc.go:884 +0x228 fp=0xc000b83c20 sp=0xc000b83be0 pc=0x124e828
runtime.mallocgc(0x68, 0x5e5afc0, 0x1)
        /opt/ooce/go-1.17/src/runtime/malloc.go:1077 +0x530 fp=0xc000b83ca0 sp=0xc000b83c20 pc=0x124ed70
runtime.newobject(0x5e5afc0)
        /opt/ooce/go-1.17/src/runtime/malloc.go:1234 +0x38 fp=0xc000b83cd0 sp=0xc000b83ca0 pc=0x124f318
regexp/syntax.parse({0x60eb740, 0x29}, 0xd4)
        /opt/ooce/go-1.17/src/regexp/syntax/parse.go:775 +0xcc fp=0xc000b83e10 sp=0xc000b83cd0 pc=0x149d1ac
regexp/syntax.Parse(...)
        /opt/ooce/go-1.17/src/regexp/syntax/parse.go:750
regexp.compile({0x60eb740, 0x29}, 0xd4, 0x0)
        /opt/ooce/go-1.17/src/regexp/regexp.go:170 +0x5a fp=0xc000b83eb0 sp=0xc000b83e10 pc=0x14af25a
regexp.Compile(...)
        /opt/ooce/go-1.17/src/regexp/regexp.go:133
regexp.MustCompile({0x60eb740, 0x29})
        /opt/ooce/go-1.17/src/regexp/regexp.go:309 +0x4b fp=0xc000b83f38 sp=0xc000b83eb0 pc=0x14affcb
github.com/aws/aws-sdk-go/aws/endpoints.init()
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model.go:15 +0xdf557 fp=0xc000b977a8 sp=0xc000b83f38 pc=0x4ec1b37
runtime.doInit(0xaf42440)
        /opt/ooce/go-1.17/src/runtime/proc.go:6498 +0x129 fp=0xc000b978f8 sp=0xc000b977a8 pc=0x128ea89
runtime.doInit(0xaf4b660)
        /opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc000b97a48 sp=0xc000b978f8 pc=0x128e9de
runtime.doInit(0xaf60ba0)
        /opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc000b97b98 sp=0xc000b97a48 pc=0x128e9de
runtime.doInit(0xaf40340)
        /opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc000b97ce8 sp=0xc000b97b98 pc=0x128e9de
runtime.doInit(0xaf98dc0)
        /opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc000b97e38 sp=0xc000b97ce8 pc=0x128e9de
runtime.doInit(0xaf38680)
        /opt/ooce/go-1.17/src/runtime/proc.go:6475 +0x7e fp=0xc000b97f88 sp=0xc000b97e38 pc=0x128e9de
runtime.main()
        /opt/ooce/go-1.17/src/runtime/proc.go:238 +0x205 fp=0xc000b97fe0 sp=0xc000b97f88 pc=0x1280305
runtime.goexit()
        /opt/ooce/go-1.17/src/runtime/asm_amd64.s:1581 +0x1 fp=0xc000b97fe8 sp=0xc000b97fe0 pc=0x12b6e81

goroutine 6 [chan receive]:
github.com/cockroachdb/cockroach/pkg/util/log.flushDaemon()
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:75 +0x76
created by github.com/cockroachdb/cockroach/pkg/util/log.init.5
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:41 +0x35

goroutine 7 [chan receive]:
github.com/cockroachdb/cockroach/pkg/util/log.signalFlusher()
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:98 +0x145
created by github.com/cockroachdb/cockroach/pkg/util/log.init.5
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/log/log_flush.go:42 +0x4d

goroutine 10 [syscall]:
os/signal.signal_recv()
        /opt/ooce/go-1.17/src/runtime/sigqueue.go:169 +0xab
os/signal.loop()
        /opt/ooce/go-1.17/src/os/signal/signal_unix.go:24 +0x25
created by os/signal.Notify.func1.1
        /opt/ooce/go-1.17/src/os/signal/signal.go:151 +0x3a

goroutine 115 [chan receive]:
github.com/cockroachdb/cockroach/pkg/util/goschedstats.init.0.func1()
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/goschedstats/runnable.go:165 +0x1de
created by github.com/cockroachdb/cockroach/pkg/util/goschedstats.init.0
        /ws/gc/cockroach/cache/gopath/src/github.com/cockroachdb/cockroach/pkg/util/goschedstats/runnable.go:157 +0x35

@davepacheco
Copy link
Collaborator Author

Many of the failure modes described above seem readily explainable by the issue described under #1146. See this comment in particular.

I suspect the SIGSEGVs are also possible from that bug, both from first principles (supposedly-zero'd memory that's not zero'd could easily cause something to try to dereference it, even though it may be garbage) and because a similar underlying issue on Linux also resulted in segfaults. Without core files, I don't think we can confirm or eliminate this explanation for the failures here. I think I'll suggest we set GOTRACEBACK=crash in the environment whenever we run cockroach from the test suite. Then we can consider closing this until/unless we see it again with the data we need to make progress. The only other thing to do is try harder to reproduce it without the underlying issue that causes #1146 fixed and then try to confirm or disprove it's the same issue from the resulting core files.

@davepacheco
Copy link
Collaborator Author

From Omicron as of 6fa27a3, I have been running the test suite in a loop using a binary of Cockroach v22.1.9 that's been patched as described in #1146. This has run successfully 557 times (just over 2d 21h). I'm running it with:

export TMP=$PWD/tmpdir
export TMPDIR=$TMP
export PATH=$PATH:$PWD/out/clickhouse:$PWD/out/cockroachdb/bin
export PATH=$PWD/maybefixed-bin/bin:$PATH
id=$$
exec nohup bash -c "env; time while time cargo test ; do :; done" > run-$id.out 2>&1

That seems pretty good. As I mentioned above the only other thing I can think to do is reproduce this without the bug fixed, but in all my work on these issues I've only seen 2-3 SIGSEGVs that I remember (compared with a few dozen of the other failure modes) so that doesn't seem worthwhile. Let's make sure we enable core dumps and plan to reopen this if we see it again organically.

@davepacheco
Copy link
Collaborator Author

I'm on the fence about whether it's worth leaving this open or closed given the current state. (I kind of wish we had a substate or tag for "believed-resolved" so that we could use that in various queries, like searching for open test flakes.)

@davepacheco davepacheco reopened this Dec 21, 2022
@davepacheco
Copy link
Collaborator Author

Closing for the reasons mentioned above. We can reopen if we start seeing it again.

leftwo added a commit that referenced this issue Mar 29, 2024
Propolis changes:
Add `IntrPin::import_state` and migrate LPC UART pin states (#669)
Attempt to set WCE for raw file backends
Fix clippy/lint nits for rust 1.77.0

Crucible changes:
Correctly (and robustly) count bytes (#1237)
test-replay.sh fix name of DTrace script (#1235)
BlockReq -> BlockOp (#1234)
Simplify `BlockReq` (#1218)
DTrace, cmon, cleanup, retry downstairs connections at 10 seconds.
(#1231)
Remove `MAX_ACTIVE_COUNT` flow control system (#1217)

Crucible changes that were in Omicron but not in Propolis before this commit.
Return *410 Gone* if volume is inactive (#1232)
Update Rust crate opentelemetry to 0.22.0 (#1224)
Update Rust crate base64 to 0.22.0 (#1222)
Update Rust crate async-recursion to 1.1.0 (#1221)
Minor cleanups to extent implementations (#1230)
Update Rust crate http to 0.2.12 (#1220)
Update Rust crate reedline to 0.30.0 (#1227)
Update Rust crate rayon to 1.9.0 (#1226)
Update Rust crate nix to 0.28 (#1223)
Update Rust crate async-trait to 0.1.78 (#1219)
Various buffer optimizations (#1211)
Add low-level test for message encoding (#1214)
Don't let df failures ruin the buildomat tests (#1213)
Activate the NBD server's psuedo file (#1209)

---------

Co-authored-by: Alan Hanson <alan@oxide.computer>
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

4 participants