Also, on a somewhat related note, does catching SIGSEGV not work for some reason?
I can see no reason for why it would not work for this specific purpose.
Still, doing the checks that are done now in mmap does not in any way provide protection against sigsegvs.