On Mon, Jan 3, 2011 at 12:14 PM, Paul Goyette <696...@bugs.launchpad.net>wrote:

> Public bug reported:
>
> I recognize that NetBSD is not one of the officially supported host OS.
> However, qemu 0.13.0 is available in the NetBSD pkgsrc collection, and
> works quite well.  Well, with one exception (pun intended): It seems
> that Floating Point exceptions don't get reported properly.
>
> The following code-snippet demonstrates the problem:
>
>
> volatile int flt_signal = 0;
>
> static sigjmp_buf sigfpe_flt_env;
> static void
> sigfpe_flt_action(int signo, siginfo_t *info, void *ptr)
> {
>        flt_signal++;
> }
>
> void trigger(void)
> {
>        struct sigaction sa;
>        double d = strtod("0", NULL);
>
>        if (sigsetjmp(sigfpe_flt_env, 0) == 0) {
>                sa.sa_flags = SA_SIGINFO;
>                sa.sa_sigaction = sigfpe_flt_action;
>                sigemptyset(&sa.sa_mask);
>                sigaction(SIGFPE, &sa, NULL);
>                fpsetmask(FP_X_INV|FP_X_DZ|FP_X_OFL|FP_X_UFL|FP_X_IMP);
>                printf("%g\n", 1 / d);
>        }
>        printf("FPE signal handler invoked %d times.\n");
>

this printf() does miss an argument :-)


> }
>
> ** Affects: qemu
>     Importance: Undecided
>         Status: New
>
> --
> You received this bug notification because you are a member of qemu-
> devel-ml, which is subscribed to QEMU.
> https://bugs.launchpad.net/bugs/696834
>
> Title:
>  FP exception reporting not working on NetBSD host
>
> Status in QEMU:
>  New
>
> Bug description:
>  I recognize that NetBSD is not one of the officially supported host OS.
>  However, qemu 0.13.0 is available in the NetBSD pkgsrc collection, and
> works quite well.  Well, with one exception (pun intended): It seems that
> Floating Point exceptions don't get reported properly.
>
> The following code-snippet demonstrates the problem:
>
>
> volatile int flt_signal = 0;
>
> static sigjmp_buf sigfpe_flt_env;
> static void
> sigfpe_flt_action(int signo, siginfo_t *info, void *ptr)
> {
>        flt_signal++;
> }
>
> void trigger(void)
> {
>        struct sigaction sa;
>        double d = strtod("0", NULL);
>
>        if (sigsetjmp(sigfpe_flt_env, 0) == 0) {
>                sa.sa_flags = SA_SIGINFO;
>                sa.sa_sigaction = sigfpe_flt_action;
>                sigemptyset(&sa.sa_mask);
>                sigaction(SIGFPE, &sa, NULL);
>                fpsetmask(FP_X_INV|FP_X_DZ|FP_X_OFL|FP_X_UFL|FP_X_IMP);
>                printf("%g\n", 1 / d);
>        }
>        printf("FPE signal handler invoked %d times.\n");
>

this printf() does miss an argument :-)


> }
>
>
>
>

Reply via email to