Mac Intel

Joel Reymont <>
Sat Aug 12 13:16:07 CEST 2006


Something trivial like this does raise SIGFPE:

#include <signal.h>
#include <stdlib.h>

static void handler(int sig)
{
   _Exit(sig);
}

int main(int argc, char *argv[]) {
         signal(SIGFPE, handler);
         return argc / (argc - 1);
}

This program does _not_ raise SIGFPE at all!

#include <signal.h>
#include <stdlib.h>
#include <string.h>
#include <ucontext.h>
#include <stdio.h>

static void fpe_sig_action(int sig, siginfo_t *si, void *puc)
{
	printf("We are here!\n");
	_Exit(sig);
}

double a = 3.23e133;
double b = 3.57e257;
double res;

int main(int argc, char *argv[]) {
	struct sigaction act;
	memset(&act, 0, sizeof act);
	act.sa_sigaction = fpe_sig_action;
	act.sa_flags = SA_SIGINFO;
	sigaction(SIGFPE, &act, NULL);
   	return a * b;
}






More information about the erlang-questions mailing list