BUG()
itself is not supposed to hang the box, so the behaviour of your system is OK.
On x86, BUG()
eventually tries to execute ud2
machine instruction which leads to "Invalid opcode" exception. It is up to the kernel how to handle that, whether to output a message and continue working or to stop. Different kernels may react in different ways here.