No, it's very common. It's widely used in garbage collectors (instead of write barriers) and JIT compilers (for changing the code and also just for halting code execution) among other places. It's so common that userfaultfd was added as a better approach:
http://man7.org/linux/man-pages/man2/userfaultfd.2.html…
it seems like a crap design though. we don't want to handle every SIGSEGV, but rather only those that come from regions we've mmaped for very specific purposes.
They still end up handling the signals for them if they're using the traditional signal handling approach though. They end up seeing that it's not inside one of their regions in their signal handler and passing it through. It's also tied to why Firefox is monkey patching libc.
The userfaultfd approach avoids this, among other ways that it's substantially less ugly and more efficient. It also means you don't have issues with overlapping uses of this functionality which is why Firefox is messes with libc rather than solving their internal code conflicts.