The architecture doesn't matter, the root cause is, that when kernel encounters a segmentation fault or an illegal instruction in the process it calls the process' signal handler. If the signal handler is itself faulty it causes infinite loop of putting signal context onto the process stack. After the stack is filled, and ussually all data and text is overridden, kernel tries to put signal context into unmapped memory.
This program setting signal handler to a function causing segmentation fault results in kernel crashing.
Run on: armv8r52-mps3an536-qemu
Exception log
lr points to: https://github.com/phoenix-rtos/phoenix-rtos-kernel/blob/6624da07bc3e92b83ac0124375dc83565e6516a3/hal/armv8r/cpu.c#L114
The architecture doesn't matter, the root cause is, that when kernel encounters a segmentation fault or an illegal instruction in the process it calls the process' signal handler. If the signal handler is itself faulty it causes infinite loop of putting signal context onto the process stack. After the stack is filled, and ussually all data and text is overridden, kernel tries to put signal context into unmapped memory.