Maybe. There is no guarantee that write(2) from an invalid address wouldn't cause a SIGSEGV instead of returning EFAULT. I could be mistaken, but I believe Linux has actually behaved that way before. msync(2) seems to be more tolerant in general.
Another interesting use of libunwind is for profiling, for which performance is attractive. (Yes, there are alternatives, but libunwind is fairly portable.)