On Thursday, December 06, 2012 09:02:29 Russel Winder wrote: > What is the right idiom for testing that a function call does segfault > when you want it to?
Why would you _want_ a function to segfault? That's like asking how to write a function which tests that a computer is off after you pull the plug. Regardless, since segfaults pretty much just kill the program, I don't think that you can do much. You could install a signal handler to catch the segfault, but segfaults aren't exceptions, and AFAIK, it's not possible to continue the program (or at least that thread) in any meaningful way at that point. It's also the case that the signal handler is completely separate from the function being called or the code which is testing that function, making it so that you can't continue the execution of your test code, and you have no way of really knowing whether than segfault came from where you wanted it to. You could set a variable before the function and unset it afterwards so that the signal handler could test its state (with the idea that if that variable has been set, the segfault came from that code), but if any other threads are running, _they_ could have caused any segfaults which occur (regardless of the state of that variable), and even if you have only one thread, there's no way to know that the segfault was generated from the exact spot that you intended rather than a stray null pointer or whatnot in the code being tested. - Jonathan M Davis