I recently came across this bug report:
  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=616180

This relates to a gcc optimisation bug affecting postgresql error
handling.  (It was reported there in Debian on Sparc in gcc 4.x.)

Assumign that the ereport function/macro used there doesn't return, I
agree that this is a gcc bug not a postgresql bug.

Alex Deiter appears to have tried to report this to gcc upstream:
  http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29968
However, the test program in that bugzilla report is indeed broken.
The gcc maintainers were right to reject the bug.

I have tried to reproduce the original problem with a smaller test
program (see below) than postgresql, but failed (on 32-bit sparc with
gcc 4.4.5-8, Debian squeeze).

(AIUI we don't have a sparc64 porter box or chroot that I could try.)

Regards,
Ian.


/* t.c */
#include <stdio.h>
#include "t.h"
int main(int argc, char **argv) {
    int divisor = atoi(argv[1]);
    if (!divisor)
        quit_program();
    printf("%d\n", 42/divisor);
    return 0;
}

/* u.c */
#include <stdlib.h>
void x(void) { strtoul('-1',0,0); }

/* t.h */
#include <stdio.h>
#include <stdlib.h>
void quit_program(void);


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to