This here happens when using sync/atomic instead of internal/runtime/atomic
within the Go runtime (just use the internal things!):
runtime: newstack at sync/atomic.(*Bool).Load+0x40 sp=0x835730 stack=[0x835000, 0x835800]
morebuf={pc:0x5e430 sp:0x835730 lr:0x0}
sched={pc:0xa6910 sp:0x835730 lr:0x5e430 ctxt:0x0}
runtime.futex(0x698130, 0x80, 0x0, 0x0, 0x0, 0x0)
runtime/os_linux_futex32.go:31 +0x10 fp=0x835758 sp=0x835730 pc=0x5e430
runtime.futexsleep(0x698130, 0x0, 0xffffffffffffffff)
runtime/os_linux.go:73 +0x44 fp=0x835788 sp=0x835758 pc=0x5caf0
runtime.notetsleep_internal(0x698130, 0xffffffffffffffff)
runtime/lock_futex.go:70 +0x290 fp=0x8357b0 sp=0x835788 pc=0x2bc94
runtime.notetsleepg(0x698130, 0xffffffffffffffff)
runtime/lock_futex.go:124 +0x40 fp=0x8357c8 sp=0x8357b0 pc=0x2bd94
os/signal.signal_recv()
runtime/sigqueue.go:152 +0xdc fp=0x8357e0 sp=0x8357c8 pc=0x9f160
os/signal.loop()
os/signal/signal_unix.go:23 +0x14 fp=0x8357ec sp=0x8357e0 pc=0x1dc69c
runtime.goexit({})
runtime/asm_arm.s:873 +0x4 fp=0x8357ec sp=0x8357ec pc=0xa32dc
created by os/signal.Notify.func1.1 in goroutine 1
os/signal/signal.go:152 +0x28
fatal error: runtime: stack split at bad time
runtime stack:
runtime.throw({0x40cd53, 0x20})
runtime/panic.go:1227 +0x34 fp=0x84bf44 sp=0x84bf30 pc=0x9d1d8
runtime.newstack()
runtime/stack.go:1048 +0xaa4 fp=0x84bfdc sp=0x84bf44 pc=0x80a24
runtime.morestack()
runtime/asm_arm.s:406 +0x60 fp=0x84bfe0 sp=0x84bfdc pc=0xa1cf0
goroutine 8 gp=0x803448 m=3 mp=0x837008 [syscall]:
runtime.futex(0x698130, 0x80, 0x0, 0x0, 0x0, 0x0)
runtime/os_linux_futex32.go:31 +0x10 fp=0x835758 sp=0x835730 pc=0x5e430
runtime.futexsleep(0x698130, 0x0, 0xffffffffffffffff)
runtime/os_linux.go:73 +0x44 fp=0x835788 sp=0x835758 pc=0x5caf0
runtime.notetsleep_internal(0x698130, 0xffffffffffffffff)
runtime/lock_futex.go:70 +0x290 fp=0x8357b0 sp=0x835788 pc=0x2bc94
runtime.notetsleepg(0x698130, 0xffffffffffffffff)
runtime/lock_futex.go:124 +0x40 fp=0x8357c8 sp=0x8357b0 pc=0x2bd94
os/signal.signal_recv()
runtime/sigqueue.go:152 +0xdc fp=0x8357e0 sp=0x8357c8 pc=0x9f160
os/signal.loop()
os/signal/signal_unix.go:23 +0x14 fp=0x8357ec sp=0x8357e0 pc=0x1dc69c
runtime.goexit({})
runtime/asm_arm.s:873 +0x4 fp=0x8357ec sp=0x8357ec pc=0xa32dc
created by os/signal.Notify.func1.1 in goroutine 1
os/signal/signal.go:152 +0x28
goroutine 1 gp=0x802128 m=nil [runnable]:
runtime.mapassign_faststr(0x399688, 0x8e62a0, {0x404715, 0x14})
internal/runtime/maps/runtime_faststr.go:263 +0x67c fp=0x8e3b7c sp=0x8e3b7c pc=0x21728
runtime.initMetrics()
runtime/metrics.go:89 +0x134c fp=0x8e3bec sp=0x8e3b7c pc=0x37564
internal/godebug.registerMetric({0x85c380, 0x33}, 0x816dd8)
runtime/metrics.go:574 +0x18 fp=0x8e3c18 sp=0x8e3bec pc=0x9bb1c
internal/godebug.(*Setting).register(0x85e348)
internal/godebug/godebug.go:130 +0xe8 fp=0x8e3c4c sp=0x8e3c18 pc=0xdbe34
internal/godebug.(*Setting).register-fm()
<autogenerated>:1 +0x1c fp=0x8e3c54 sp=0x8e3c4c pc=0xdca88
sync.(*Once).doSlow(0x8283e4, 0x8e3ca4)
sync/once.go:78 +0xa8 fp=0x8e3c80 sp=0x8e3c54 pc=0xbd678
sync.(*Once).Do(0x8283e4, 0x8e3ca4)
sync/once.go:69 +0x40 fp=0x8e3c8c sp=0x8e3c80 pc=0xbd5c0
internal/godebug.(*Setting).IncNonDefault(0x85e348)
internal/godebug/godebug.go:122 +0x3c fp=0x8e3cac sp=0x8e3c8c pc=0xdbd0c
time.syncTimer(0x853a40)
time/sleep.go:26 +0x4c fp=0x8e3cbc sp=0x8e3cac pc=0xea1d4
time.NewTicker(0xfe502a)
time/tick.go:44 +0x94 fp=0x8e3cf0 sp=0x8e3cbc pc=0xea8c8
github.com/charmbracelet/bubbletea.(*standardRenderer).start(0x8dad20)
github.com/charmbracelet/bubbletea/standard_renderer.go:75 +0x54 fp=0x8e3d00 sp=0x8e3cf0 pc=0x208540
github.com/charmbracelet/bubbletea.(*Program).Run(0x86acc0)
github.com/charmbracelet/bubbletea/tea.go:484 +0x4f4 fp=0x8e3dd4 sp=0x8e3d00 pc=0x20c670
github.com/knz/bubbline.(*Editor).GetLine(0x80cd10)
github.com/knz/bubbline/getline.go:74 +0x1d4 fp=0x8e3e2c sp=0x8e3dd4 pc=0x2406c4
github.com/u-root/u-root/cmds/core/gosh.runInteractive(0x8b6828, 0x8d6008, {0x450dec, 0x8162c0}, {0x450dec, 0x8162c8})
github.com/u-root/u-root/cmds/core/gosh/completer.go:117 +0x254 fp=0x8e3eb8 sp=0x8e3e2c pc=0x28dd74
github.com/u-root/u-root/cmds/core/gosh.run({0x450e7c, 0x8162b8}, {0x450dec, 0x8162c0}, {0x450dec, 0x8162c8}, {0x0, 0x0}, {0x8162e8, 0x0, ...})
github.com/u-root/u-root/cmds/core/gosh/gosh.go:56 +0x15c fp=0x8e3eec sp=0x8e3eb8 pc=0x28ef00
github.com/u-root/u-root/cmds/core/gosh.registeredMain()
github.com/u-root/u-root/cmds/core/gosh/gosh.go:34 +0x84 fp=0x8e3f34 sp=0x8e3eec pc=0x28ecfc
bb.u-root.com/bb/pkg/bbmain.Run({0x80e606, 0x4})
bb.u-root.com/bb/pkg/bbmain/register.go:77 +0x90 fp=0x8e3f70 sp=0x8e3f34 pc=0x12b318
main.run()
bb.u-root.com/bb/main.go:117 +0x50 fp=0x8e3fa4 sp=0x8e3f70 pc=0x34cc24
main.main()
bb.u-root.com/bb/main.go:144 +0x88 fp=0x8e3fb8 sp=0x8e3fa4 pc=0x34cfc0
runtime.main()
runtime/proc.go:289 +0x2bc fp=0x8e3fec sp=0x8e3fb8 pc=0x631c4
runtime.goexit({})
runtime/asm_arm.s:873 +0x4 fp=0x8e3fec sp=0x8e3fec pc=0xa32dc
goroutine 2 gp=0x8026c8 m=nil [force gc (idle)]:
runtime.gopark(0x42c788, 0x68aa70, 0x11, 0xa, 0x1)
runtime/proc.go:464 +0xd8 fp=0x832fc0 sp=0x832fac pc=0x9d2e8
runtime.goparkunlock(0x68aa70, 0x11, 0xa, 0x1)
runtime/proc.go:470 +0x3c fp=0x832fd4 sp=0x832fc0 pc=0x63748
runtime.forcegchelper()
runtime/proc.go:377 +0xe0 fp=0x832fec sp=0x832fd4 pc=0x63614
runtime.goexit({})
runtime/asm_arm.s:873 +0x4 fp=0x832fec sp=0x832fec pc=0xa32dc
created by runtime.init.6 in goroutine 1
runtime/proc.go:365 +0x1c
goroutine 3 gp=0x8027e8 m=nil [GC sweep wait]:
runtime.gopark(0x42c788, 0x68acb0, 0xc, 0x9, 0x1)
runtime/proc.go:464 +0xd8 fp=0x8337b4 sp=0x8337a0 pc=0x9d2e8
runtime.goparkunlock(0x68acb0, 0xc, 0x9, 0x1)
runtime/proc.go:470 +0x3c fp=0x8337c8 sp=0x8337b4 pc=0x63748
runtime.bgsweep(0x850000)
runtime/mgcsweep.go:279 +0xa8 fp=0x8337e4 sp=0x8337c8 pc=0x4a54c
runtime.gcenable.gowrap1()
runtime/mgc.go:212 +0x1c fp=0x8337ec sp=0x8337e4 pc=0x3a418
runtime.goexit({})
runtime/asm_arm.s:873 +0x4 fp=0x8337ec sp=0x8337ec pc=0xa32dc
created by runtime.gcenable in goroutine 1
runtime/mgc.go:212 +0x74
goroutine 4 gp=0x802908 m=nil [GC scavenge wait]:
runtime.gopark(0x42c788, 0x68b150, 0xd, 0xa, 0x2)
runtime/proc.go:464 +0xd8 fp=0x833fa4 sp=0x833f90 pc=0x9d2e8
runtime.goparkunlock(0x68b150, 0xd, 0xa, 0x2)
runtime/proc.go:470 +0x3c fp=0x833fb8 sp=0x833fa4 pc=0x63748
runtime.(*scavengerState).park(0x68b150)
runtime/mgcscavenge.go:425 +0x58 fp=0x833fc8 sp=0x833fb8 pc=0x47650
runtime.bgscavenge(0x850000)
runtime/mgcscavenge.go:653 +0x3c fp=0x833fe4 sp=0x833fc8 pc=0x47d28
runtime.gcenable.gowrap2()
runtime/mgc.go:213 +0x1c fp=0x833fec sp=0x833fe4 pc=0x3a3ec
runtime.goexit({})
runtime/asm_arm.s:873 +0x4 fp=0x833fec sp=0x833fec pc=0xa32dc
created by runtime.gcenable in goroutine 1
runtime/mgc.go:213 +0xbc
goroutine 5 gp=0x802c68 m=nil [finalizer wait]:
runtime.gopark(0x42c60c, 0x697b90, 0x10, 0xa, 0x1)
runtime/proc.go:464 +0xd8 fp=0x832790 sp=0x83277c pc=0x9d2e8
runtime.runFinalizers()
runtime/mfinal.go:210 +0xf4 fp=0x8327ec sp=0x832790 pc=0x39184
runtime.goexit({})
runtime/asm_arm.s:873 +0x4 fp=0x8327ec sp=0x8327ec pc=0xa32dc
created by runtime.createfing in goroutine 1
runtime/mfinal.go:172 +0x5c
goroutine 6 gp=0x802ea8 m=nil [cleanup wait]:
runtime.gopark(0x42c788, 0x68b2a8, 0x2e, 0xa, 0x1)
runtime/proc.go:464 +0xd8 fp=0x83479c sp=0x834788 pc=0x9d2e8
runtime.goparkunlock(0x68b2a8, 0x2e, 0xa, 0x1)
runtime/proc.go:470 +0x3c fp=0x8347b0 sp=0x83479c pc=0x63748
runtime.(*cleanupQueue).dequeue(0x68b248)
runtime/mcleanup.go:439 +0x100 fp=0x8347c8 sp=0x8347b0 pc=0x34cf0
runtime.runCleanups()
runtime/mcleanup.go:635 +0x78 fp=0x8347ec sp=0x8347c8 pc=0x355ec
runtime.goexit({})
runtime/asm_arm.s:873 +0x4 fp=0x8347ec sp=0x8347ec pc=0xa32dc
created by runtime.(*cleanupQueue).createGs in goroutine 1
runtime/mcleanup.go:589 +0xd8
goroutine 7 gp=0x8030e8 m=nil [select, locked to thread]:
runtime.gopark(0x42c7b8, 0x0, 0x9, 0x3, 0x1)
runtime/proc.go:464 +0xd8 fp=0x834ed0 sp=0x834ebc pc=0x9d2e8
runtime.selectgo(0x834fd8, 0x834fb8, 0x0, 0x0, 0x2, 0x1)
runtime/select.go:351 +0xc9c fp=0x834f90 sp=0x834ed0 pc=0x791a4
runtime.ensureSigM.func1()
runtime/signal_unix.go:1085 +0x144 fp=0x834fec sp=0x834f90 pc=0x981dc
runtime.goexit({})
runtime/asm_arm.s:873 +0x4 fp=0x834fec sp=0x834fec pc=0xa32dc
created by runtime.ensureSigM in goroutine 1
runtime/signal_unix.go:1068 +0xf8
goroutine 9 gp=0x803568 m=nil [chan receive]:
runtime.gopark(0x42c5e8, 0x8538b8, 0xe, 0x7, 0x2)
runtime/proc.go:464 +0xd8 fp=0x835f88 sp=0x835f74 pc=0x9d2e8
runtime.chanrecv(0x853880, 0x0, 0x1)
runtime/chan.go:667 +0x3c4 fp=0x835fc4 sp=0x835f88 pc=0x25dec
runtime.chanrecv1(0x853880, 0x0)
runtime/chan.go:509 +0x20 fp=0x835fd8 sp=0x835fc4 pc=0x259f8
github.com/u-root/u-root/cmds/core/gosh.runInteractive.func1(0x853880)
github.com/u-root/u-root/cmds/core/gosh/completer.go:107 +0x24 fp=0x835fe4 sp=0x835fd8 pc=0x28f920
github.com/u-root/u-root/cmds/core/gosh.runInteractive.gowrap1()
github.com/u-root/u-root/cmds/core/gosh/completer.go:109 +0x24 fp=0x835fec sp=0x835fe4 pc=0x28e368
runtime.goexit({})
runtime/asm_arm.s:873 +0x4 fp=0x835fec sp=0x835fec pc=0xa32dc
created by github.com/u-root/u-root/cmds/core/gosh.runInteractive in goroutine 1
github.com/u-root/u-root/cmds/core/gosh/completer.go:105 +0x19c
goroutine 10 gp=0x803688 m=nil [select]:
runtime.gopark(0x42c7b8, 0x0, 0x9, 0x3, 0x1)
runtime/proc.go:464 +0xd8 fp=0x82e6dc sp=0x82e6c8 pc=0x9d2e8
runtime.selectgo(0x82e7d0, 0x82e7c0, 0x0, 0x0, 0x2, 0x1)
runtime/select.go:351 +0xc9c fp=0x82e79c sp=0x82e6dc pc=0x791a4
github.com/knz/bubbline.(*Editor).GetLine.func1()
github.com/knz/bubbline/getline.go:65 +0xa8 fp=0x82e7ec sp=0x82e79c pc=0x2408ec
runtime.goexitinit: 1970/04/09 16:51:20 Waiting for orphaned children
init: 1970/04/08 04:32:48 All commands exited
init: 1970/04/15 17:11:36 Syncing filesystems
init: 1970/04/15 17:11:36 Exiting...
Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000
CPU: 0 UID: 0 PID: 64 Comm: init Not tainted 6.12.27 #2
Hardware name: ARM-Versatile Express
Call trace:
unwind_backtrace from show_stack+0x10/0x14
show_stack from dump_stack_lvl+0x54/0x68
dump_stack_lvl from panic+0x10c/0x350
panic from make_task_dead+0x0/0x16c
---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000 ]---
Turns out, I have to use
internal/runtime/atomicinstead of sync/atomic`` for theatomic.Bool.