Pretty strange. The only thing that profiling uses is to start up (before main is called) the timer after having set the signal handler which just gets the program counter and increments a location. I don't know what is different with your handler. My suspicion is that it has something to do with the use of the stack pointer. Ah, did you put in the code we talked about to set up an alternate signal stack?