Wireguard Causing Kernel Oops

Unfortunately, lm-sensors doesn’t find any sensors to monitor.

$ sudo sensors-detect
# sensors-detect version 3.6.0
# System: libre-computer aml-s905x-cc-v2
# Kernel: 6.12.42-gfed5d838bb74 aarch64
# Cannot show processor info on aarch64 architecture.

This program will help you determine which kernel modules you need
to load to use lm_sensors most effectively. It is generally safe
and recommended to accept the default answers to all questions,
unless you know what you're doing.

Some south bridges, CPUs or memory controllers contain embedded sensors.
Do you want to scan for them? This is totally safe. (YES/no): YES
modprobe: FATAL: Module cpuid not found in directory /lib/modules/6.12.42-gfed5d838bb74
Failed to load module cpuid.
Silicon Integrated Systems SIS5595...                       No
VIA VT82C686 Integrated Sensors...                          No
VIA VT8231 Integrated Sensors...                            No
AMD K8 thermal sensors...                                   No
AMD Family 10h thermal sensors...                           No
AMD Family 11h thermal sensors...                           No
AMD Family 12h and 14h thermal sensors...                   No
AMD Family 15h thermal sensors...                           No
AMD Family 16h thermal sensors...                           No
AMD Family 17h thermal sensors...                           No
AMD Family 15h power sensors...                             No
AMD Family 16h power sensors...                             No
Hygon Family 18h thermal sensors...                         No
Intel digital thermal sensor...                             No
Intel AMB FB-DIMM thermal sensor...                         No
Intel 5500/5520/X58 thermal sensor...                       No
VIA C7 thermal sensor...                                    No
VIA Nano thermal sensor...                                  No

Lastly, we can probe the I2C/SMBus adapters for connected hardware
monitoring devices. This is the most risky part, and while it works
reasonably well on most systems, it has been reported to cause trouble
on some systems.
Do you want to probe the I2C/SMBus adapters now? (YES/no): YES
Sorry, no supported PCI bus adapters found.

Next adapter: DesignWare HDMI (i2c-0)
Do you want to scan it? (YES/no/selectively): YES

Sorry, no sensors were detected.
Either your system has no sensors, or they are not supported, or
they are connected to an I2C or SMBus adapter that is not
supported. If you find out what chips are on your board, check
https://hwmon.wiki.kernel.org/device_support_status for driver status.

When I can get in front of it, I’ll stress test it.

The sensors command should return at least one temperature. You do not need to run sensors-detect.

I got physical access to the Sweet Potato and loaded a “clean” base image of Debian 13 (Trixie). I ran $ sudo stress-ng -a 4 –class cpu,memory for 24 hours and seemingly had no issues. No reboots or kernel panics at least. There were some warnings about finishing “prematurely,” but I don’t know how to interpret that. Here’s the log file:

stress-ng: info: [602] ioport stressor will be skipped, it is not implemented on this system: aarch64 Linux 6.12.42-gfed5d838bb74 gcc 14.2.0 (not x86 CPU and/or not built with ioport() support)
stress-ng: info: [602] ipsec-mb: stressor will be skipped, CPU needs to be an x86-64 and a recent IPSec MB library is required.
stress-ng: info: [602] plugin: no plugin-so specified, skipping stressor
stress-ng: info: [602] rdrand stressor will be skipped, CPU does not support the rdrand instruction.
stress-ng: info: [602] smi stressor will be skipped, it is not implemented on this system: aarch64 Linux 6.12.42-gfed5d838bb74 gcc 14.2.0 (built for non-x86 target without sys/io.h or ioperm() or out op-code)
stress-ng: info: [602] tsc stressor will be skipped, CPU does not support the rdtsc instruction.
stress-ng: info: [602] x86cpuid stressor will be skipped, it is not implemented on this system: aarch64 Linux 6.12.42-gfed5d838bb74 gcc 14.2.0 (built without x86 cpuid instruction support)
stress-ng: info: [602] disabled ‘cpu-online’ as it may hang or reboot the machine (enable it with the --pathological option)
stress-ng: info: [602] disabled ‘oom-pipe’ as it may hang or reboot the machine (enable it with the --pathological option)
stress-ng: info: [602] setting to a 1 day run per stressor
stress-ng: info: [602] dispatching hogs: 4 af-alg, 4 atomic, 4 bad-altstack, 4 besselmath, 4 bitonicsort, 4 bitops, 4 branch, 4 bsearch, 4 bubblesort, 4 context, 4 cpu, 4 crypt, 4 dfp, 4 easy-opcode, 4 eigen, 4 expmath, 4 factor, 4 fibsearch, 4 fma, 4 fp, 4 fp-error, 4 fractal, 4 full, 4 funccall, 4 funcret, 4 getrandom, 4 goto, 4 hash, 4 heapsort, 4 hsearch, 4 hyperbolic, 4 insertionsort, 4 intmath, 4 jpeg, 4 judy, 4 list, 4 lockbus, 4 logmath, 4 longjmp, 4 lsearch, 4 malloc, 4 matrix, 4 matrix-3d, 4 mcontend, 4 membarrier, 4 memcpy, 4 memfd, 4 memrate, 4 memthrash, 4 mergesort, 4 mincore, 4 misaligned, 4 monte-carlo, 4 mpfr, 4 nop, 4 null, 4 numa, 4 opcode, 4 pipe, 4 pipeherd, 4 powmath, 4 prefetch, 4 prime, 4 priv-instr, 4 ptr-chase, 4 qsort, 4 radixsort, 4 randlist, 4 regex, 4 regs, 4 remap, 4 resources, 4 rmap, 4 rotate, 4 rseq, 4 secretmem, 4 shellsort, 4 skiplist, 4 sparsematrix, 4 spinmem, 4 stack, 4 stackmmap, 4 str, 4 stream, 4 syncload, 4 tlb-shootdown, 4 tmpfs, 4 tree, 4 trig, 4 tsearch, 4 uprobe, 4 veccmp, 4 vecfp, 4 vecmath, 4 vecshuf, 4 vecwide, 4 vm, 4 vm-addr, 4 vm-rw, 4 vm-segv, 4 vnni, 4 waitcpu, 4 wcs, 4 zero, 4 zlib
stress-ng: info: [603] af-alg: 43 cryptographic algorithms found in /proc/crypto
stress-ng: info: [603] af-alg: 172 cryptographic algorithms in total (with defconfigs)
stress-ng: info: [680] bubblesort: using method ‘bubblesort-fast’
stress-ng: info: [1457] fractal: mandelbrot, 1024 x 1024, 256 iterations, (-2.00, -1.15i) .. (0.47, 1.15i)
stress-ng: info: [1548] heapsort: using method ‘heapsort-libc’
stress-ng: info: [2069] memrate: using 256M per stressor instance (total 256M of 1.24G available memory)
stress-ng: info: [2069] memrate: cache flushing disabled, cache flushing can be enabled with --memrate-flush option
stress-ng: info: [2123] memthrash: starting 1 thread on each of the 4 stressors on a 4 CPU system
stress-ng: info: [2123] memthrash: using 256M per stressor instance (total 1G of 982.48M available memory)
stress-ng: info: [2188] mergesort: using method ‘mergesort-libc’
stress-ng: info: [2238] misaligned: skipping method int16atomic, misaligned operations tripped signal 7 ‘SIGBUS’
stress-ng: info: [2238] misaligned: skipping method int32atomic, misaligned operations tripped signal 7 ‘SIGBUS’
stress-ng: info: [2238] misaligned: skipping method int64atomic, misaligned operations tripped signal 7 ‘SIGBUS’
stress-ng: info: [2238] misaligned: skipping method int128atomic, misaligned operations tripped signal 7 ‘SIGBUS’
stress-ng: info: [2390] null: exercising /dev/null with writes, lseek, ioctl, fcntl, fallocate, fdatasync and mmap; for just write benchmarking use --null-write
stress-ng: info: [2405] numa: using 1M per stressor instance (total 4M of 352.11M available memory)
stress-ng: info: [2405] numa: system has 1 of a maximum 4 memory NUMA nodes. Using 1M mappings for each instance.
stress-ng: info: [2549] prefetch: using built-in defaults as no suitable cache found
stress-ng: info: [2549] prefetch: using a 4096K L3 cache with prefetch method ‘builtin’
stress-ng: info: [2891] qsort: using method ‘qsort-libc’
stress-ng: info: [2945] radixsort: using method ‘radixsort-libc’
stress-ng: info: [1536] hash: hash hashes/sec chi squared
stress-ng: info: [1536] hash: adler32 14785.92 0.95
stress-ng: info: [1536] hash: coffin 6219146.05 0.97
stress-ng: info: [1536] hash: coffin32 47107.93 1.07
stress-ng: info: [1536] hash: crc32c 27304.54 0.93
stress-ng: info: [1536] hash: djb2a 104032.06 0.99
stress-ng: info: [1536] hash: fnv1a 54823.28 1.00
stress-ng: info: [1536] hash: jenkin 67512.74 1.01
stress-ng: info: [1536] hash: kandr 229025.66 1.03
stress-ng: info: [1536] hash: knuth 83013.77 1.00
stress-ng: info: [1536] hash: loselose 39271.26 0.95
stress-ng: info: [1536] hash: mid5 75112.48 0.98
stress-ng: info: [1536] hash: muladd32 107183.65 0.96
stress-ng: info: [1536] hash: muladd64 20391.93 0.96
stress-ng: info: [1536] hash: mulxror32 67948.06 1.00
stress-ng: info: [1536] hash: mulxror64 65785.24 0.98
stress-ng: info: [1536] hash: murmur3_32 89868.03 0.96
stress-ng: info: [1536] hash: nhash 29721.77 0.91
stress-ng: info: [1536] hash: pjw 33452.38 0.96
stress-ng: info: [1536] hash: sdbm 68148.13 0.97
stress-ng: info: [1536] hash: sedgwick 106542.44 1.04
stress-ng: info: [1536] hash: sobel 53387.81 1.09
stress-ng: info: [1536] hash: x17 68687.74 0.98
stress-ng: info: [1536] hash: xor 50643.46 1.05
stress-ng: info: [1536] hash: xorror32 81054.72 1.00
stress-ng: info: [1536] hash: xorror64 18704102.71 0.99
stress-ng: info: [1536] hash: xxh64 24878.37 1.00
stress-ng: warn: [1474] full: WARNING: finished prematurely after just 43.47 secs
stress-ng: info: [2238] misaligned: exercised all int16rd int16wr int16inc int32rd int32wr int32inc int64rd int64wr int64inc int128rd int128wr int128inc
stress-ng: warn: [1602] intmath: WARNING: finished prematurely after just 41.69 secs
stress-ng: warn: [1696] longjmp: WARNING: finished prematurely after just 40.12 secs
stress-ng: warn: [1535] goto: WARNING: finished prematurely after just 42.70 secs
stress-ng: warn: [3069] regs: WARNING: finished prematurely after just 23.22 secs
stress-ng: warn: [640] bitops: WARNING: finished prematurely after just 46.99 secs
stress-ng: warn: [3076] regs: WARNING: finished prematurely after just 23.21 secs
stress-ng: info: [3756] sparsematrix: 10000 items in 500 x 500 sparse matrix (4.00% full)
stress-ng: info: [3824] stream: using built-in defaults as no suitable cache found
stress-ng: info: [3824] stream: stressor loosely based on a variant of the STREAM benchmark code
stress-ng: info: [3824] stream: do NOT submit any of these results to the STREAM benchmark results
stress-ng: info: [3824] stream: Using cache size of 2048K
stress-ng: info: [3824] stream: run duration too short to reliably determine memory rate
stress-ng: info: [3896] vm: using 64M per stressor instance (total 256M of 265.07M available memory)
stress-ng: info: [3911] vm-rw: using 4M per stressor instance (total 16M of 201.41M available memory)
stress-ng: info: [3928] vnni: no vector neural network instructions available, using generic optimized versions
stress-ng: info: [3943] waitcpu: exercising instructions: nop yield
stress-ng: info: [3983] zero: exercising /dev/zero with reads, mmap, lseek, and ioctl; for just read benchmarking use --zero-read
stress-ng: error: [3870] tmpfs: gave up trying to mmap, no available memory
stress-ng: error: [3872] tmpfs: gave up trying to mmap, no available memory
stress-ng: error: [3849] tmpfs: gave up trying to mmap, no available memory
stress-ng: error: [3847] tmpfs: gave up trying to mmap, no available memory
stress-ng: info: [3827] stream: memory rate: 30.87 MB read/sec, 20.58 MB write/sec, 2.70 double precision Mflop/sec (instance 3)
stress-ng: info: [602] skipped: 36: cpu-online (4) ioport (4) ipsec-mb (4) oom-pipe (4) plugin (4) rdrand (4) smi (4) tsc (4) x86cpuid (4)
stress-ng: info: [602] passed: 420: af-alg (4) atomic (4) bad-altstack (4) besselmath (4) bitonicsort (4) bitops (4) branch (4) bsearch (4) bubblesort (4) context (4) cpu (4) crypt (4) dfp (4) easy-opcode (4) eigen (4) expmath (4) factor (4) fibsearch (4) fma (4) fp (4) fp-error (4) fractal (4) full (4) funccall (4) funcret (4) getrandom (4) goto (4) hash (4) heapsort (4) hsearch (4) hyperbolic (4) insertionsort (4) intmath (4) jpeg (4) judy (4) list (4) lockbus (4) logmath (4) longjmp (4) lsearch (4) malloc (4) matrix (4) matrix-3d (4) mcontend (4) membarrier (4) memcpy (4) memfd (4) memrate (4) memthrash (4) mergesort (4) mincore (4) misaligned (4) monte-carlo (4) mpfr (4) nop (4) null (4) numa (4) opcode (4) pipe (4) pipeherd (4) powmath (4) prefetch (4) prime (4) priv-instr (4) ptr-chase (4) qsort (4) radixsort (4) randlist (4) regex (4) regs (4) remap (4) resources (4) rmap (4) rotate (4) rseq (4) secretmem (4) shellsort (4) skiplist (4) sparsematrix (4) spinmem (4) stack (4) stackmmap (4) str (4) stream (4) syncload (4) tlb-shootdown (4) tmpfs (4) tree (4) trig (4) tsearch (4) uprobe (4) veccmp (4) vecfp (4) vecmath (4) vecshuf (4) vecwide (4) vm (4) vm-addr (4) vm-rw (4) vm-segv (4) vnni (4) waitcpu (4) wcs (4) zero (4) zlib (4)
stress-ng: info: [602] failed: 0
stress-ng: info: [602] metrics untrustworthy: 0
stress-ng: info: [602] successful run completed in 1 day, 1 min, 6.23 secs

Based on the addresses 0x0000, 0xffdf, 0xefdf, etc you posted, they’re randomly targeted in memory which suggest some code is trying to reference a corrupted pointer. The corruption is most likely a code bug somewhere in your application or how the kernel module is handling a pointer. This could also be a bug in tcl. Based on GitHub · Where software is built, there seems to be some reports of buffer overflows when IPv6 is disabled but it doesn’t seem to match your issue. Best to compile the program yourself with debug turned on and appropriate debug messages added to see where the trigger is occurring.