Hello Kevin,
I put together a Python script to do a full symbolication based on your instructions.
I'm having trouble computing addresses of functions given in the actual stack frames.
First off, the symbolication of the frame of the thread that panicked does succeed as the function addresses come precomputed by the system:
% ./symbolicate.py
TEXT_EXEC 0xfffffe00072d4000
TEXT 0xfffffe0007004000
ktext_exec_base 0xfffffe002c900000
load_address: 0xfffffe002c630000
panicked_thread_faddrs: ['0xfffffe002c95d93c', '0xfffffe002cacd124', '0xfffffe002cacb31c', '0xfffffe002c903b88', '0xfffffe002c95dc08', '0xfffffe002d264898', '0xfffffe002d2700f8', '0xfffffe002caccf80', '0xfffffe002cacb490', '0xfffffe002c903b88', '0xfffffe002cb7f820', '0xfffffe002cba8538', '0xfffffe002cb8fd00', '0xfffffe002cb905c0', '0xfffffe002d05eb5c', '0xfffffe002cacb3a4', '0xfffffe002c903b88', '0x19d82a2b0']
['atos', '-o', 'Kernel_Debug_Kit_26_build_25A353.dmg_extracted/KDK.pkg/Payload/System/Library/Kernels/kernel.release.t8103.dSYM/Contents/Resources/DWARF/kernel.release.t8103', '-arch', 'arm64e', '-l', '0xfffffe002c630000', '0xfffffe002c95d93c', '0xfffffe002cacd124', '0xfffffe002cacb31c', '0xfffffe002c903b88', '0xfffffe002c95dc08', '0xfffffe002d264898', '0xfffffe002d2700f8', '0xfffffe002caccf80', '0xfffffe002cacb490', '0xfffffe002c903b88', '0xfffffe002cb7f820', '0xfffffe002cba8538', '0xfffffe002cb8fd00', '0xfffffe002cb905c0', '0xfffffe002d05eb5c', '0xfffffe002cacb3a4', '0xfffffe002c903b88', '0x19d82a2b0']
handle_debugger_trap (in kernel.release.t8103) (debug.c:1863)
handle_uncategorized (in kernel.release.t8103) (sleh.c:1818)
sleh_synchronous (in kernel.release.t8103) (sleh.c:1698)
fleh_synchronous (in kernel.release.t8103) + 24
DebuggerTrapWithState (in kernel.release.t8103) (debug.c:830)
Assert (in kernel.release.t8103) (debug.c:841)
sleh_synchronous_sp1 (in kernel.release.t8103) (sleh.c:1191)
handle_kernel_abort (in kernel.release.t8103) (sleh.c:3960)
sleh_synchronous (in kernel.release.t8103) (sleh.c:1698)
fleh_synchronous (in kernel.release.t8103) + 24
vn_create (in kernel.release.t8103) (vfs_subr.c:8079)
vn_open_auth (in kernel.release.t8103) (vfs_vnops.c:483)
open1 (in kernel.release.t8103) (vfs_syscalls.c:0)
open_extended (in kernel.release.t8103) (vfs_syscalls.c:5273)
unix_syscall (in kernel.release.t8103) (systemcalls.c:181)
sleh_synchronous (in kernel.release.t8103) (sleh.c:1484)
fleh_synchronous (in kernel.release.t8103) + 24
0x19d82a2b0
Here's the output generated for the very first kernel frame that fails to symbolicate:
kernelFrames: tid:110 IOServiceTerminateThread
UUID: 8502a040-9cf9-35f5-b8a2-84b0e48d379e
[1, 622608]
funcaddr: 0xfffffe0008774000+0x98010 -> 0xfffffe000880c010
[1, 617372]
funcaddr: 0xfffffe0008774000+0x96b9c -> 0xfffffe000880ab9c
[1, 509108]
funcaddr: 0xfffffe0008774000+0x7c4b4 -> 0xfffffe00087f04b4
[1, 8496472]
funcaddr: 0xfffffe0008774000+0x81a558 -> 0xfffffe0008f8e558
[1, 53004]
funcaddr: 0xfffffe0008774000+0xcf0c -> 0xfffffe0008780f0c
['atos', '-o', 'Kernel_Debug_Kit_26_build_25A353.dmg_extracted/KDK.pkg/Payload/System/Library/Kernels/kernel.release.t8103.dSYM/Contents/Resources/DWARF/kernel.release.t8103', '-arch', 'arm64e', '-l', '0xfffffe002c630000', '0xfffffe000880c010', '0xfffffe000880ab9c', '0xfffffe00087f04b4', '0xfffffe0008f8e558', '0xfffffe0008780f0c']
0xfffffe000880c010
0xfffffe000880ab9c
0xfffffe00087f04b4
0xfffffe0008f8e558
0xfffffe0008780f0c
UUID: 8502a040-9cf9-35f5-b8a2-84b0e48d379e is that of the kernel as referenced in the panic log Kernel UUID: 8502A040-9CF9-35F5-B8A2-84B0E48D379E and given in the binaryImages lookup table located at index 1:
"binaryImages": [
[
"fbe15ad4-ea36-3c07-81be-460a8240c1d4",
18446741874887413328,
"T"
],
[
"8502a040-9cf9-35f5-b8a2-84b0e48d379e",
18446741874828328960,
"T"
],
Function addresses are computed as follows:
faddr=binaryImages[loadaddr]+kernelFrames[offset].
Given the diagnostics above [1, 622608] funcaddr: 0xfffffe0008774000+0x98010 -> 0xfffffe000880c010, where 0xfffffe0008774000 is the load address of the kernel 18446741874828328960, and 0x98010 is the offset from the load address 622608,
atos(1) fails to perform symbolication.
Your second suggestion to use the value of the offset+ the load address of 0 doesn't succeed either.
Your clarifying how function addresses given in kernel stack frames are to be computed so they result in a successful symbolication would be greatly appreciated.