It is possible to check if the signal was synchronous or was sent from an external process. You can check siginfo->si_pid to see who sent you the signal. I'm not sure checking that and handling it at check_for_interrupts if it's asynchronous is the best solution or not though.
I'm a bit confused. Didn't Tom do the laborious process of checking the whole source tree for situations where there's shared memory cleanup to be done in and arrange for it to happen? That was the blocking factor to get pg_cancel_backend() to work. Is the problem that the sigfpe handler doesn't invoke atexit() handlers? -- greg -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers