afaik the eBPF vm used by the linux kernel can run programs that never complete, those programs are representable in eBPF bytecode just like they are in WASM bytecode. To prevent running eBPF programs that never terminate the linux kernel runs static analysis over the eBPF bytecode when its loaded, I would think similar analysis could be run over WASM bytecode to ensure it terminates.