Thread: Regression failure with PostgreSQL 8beta1 and Intel Itanium 2 C compiler

Regression failure with PostgreSQL 8beta1 and Intel Itanium 2 C compiler

From
"Robert E. Bruccoleri"
Date:
Dear All,I built PG 8.0 beta1 on an Itanium 2 platform using the Intel compilers
version 8, and got one real difference in the regression tests that affected
int2, int4, union, and numerology. Here's the key difference:

horta postgres 177 > diff -c int4.out ../expected/
*** int4.out    Tue Aug 10 18:41:48 2004
--- ../expected/int4.out        Wed Mar 10 21:11:13 2004
***************
*** 22,27 ****
--- 22,28 ---- INSERT INTO INT4_TBL(f1) VALUES ('   asdf   '); ERROR:  invalid input syntax for integer: "   asdf   "
INSERTINTO INT4_TBL(f1) VALUES ('- 1234');
 
+ ERROR:  invalid input syntax for integer: "- 1234" INSERT INTO INT4_TBL(f1) VALUES ('123       5'); ERROR:  invalid
inputsyntax for integer: "123       5" INSERT INTO INT4_TBL(f1) VALUES ('');
 

PG 8.0 beta1 is accepting "- 1234" as a valid integer. Further investigation
reveals that this is a peculiarity of the Intel compilers. The following
program,

#include <stdio.h>
#include <stdlib.h>

main() { char st[] = "- 1234"; int l; char *endp;
 l = strtol(st, &endp, 10); printf("l = %d  st = %lx  endp = %lx\n", l, st, endp);
}

using the Intel compiler provided libraries prints

l = -1234  st = 60000fffffffb720  endp = 60000fffffffb726

whereas gcc and glibc yields

l = 0  st = 60000fffffffb710  endp = 60000fffffffb710

Boo hiss...

+-----------------------------+------------------------------------+
| Robert E. Bruccoleri, Ph.D. | email: bruc@acm.org                |
| President, Congenair LLC    | URL:   http://www.congen.com/~bruc |
| P.O. Box 314                | Phone: 609 818 7251                | 
| Pennington, NJ 08534        |                                    |
+-----------------------------+------------------------------------+


Re: Regression failure with PostgreSQL 8beta1 and Intel

From
Hans-Jürgen Schönig
Date:
Robert,

Are you planning to use Intel's C compiler in production?
We tried that some time ago and corrupted our database cluster almost 
instantly (for some reason we have not investigated any further).
I highly recommend to do some stress testing to see if everything works 
nicely.
I'd be pleased to get some feedback.
Regard,
    Hans



Robert E. Bruccoleri wrote:
> Dear All,
>     I built PG 8.0 beta1 on an Itanium 2 platform using the Intel compilers
> version 8, and got one real difference in the regression tests that affected
> int2, int4, union, and numerology. Here's the key difference:
> 
> horta postgres 177 > diff -c int4.out ../expected/
> *** int4.out    Tue Aug 10 18:41:48 2004
> --- ../expected/int4.out        Wed Mar 10 21:11:13 2004
> ***************
> *** 22,27 ****
> --- 22,28 ----
>   INSERT INTO INT4_TBL(f1) VALUES ('   asdf   ');
>   ERROR:  invalid input syntax for integer: "   asdf   "
>   INSERT INTO INT4_TBL(f1) VALUES ('- 1234');
> + ERROR:  invalid input syntax for integer: "- 1234"
>   INSERT INTO INT4_TBL(f1) VALUES ('123       5');
>   ERROR:  invalid input syntax for integer: "123       5"
>   INSERT INTO INT4_TBL(f1) VALUES ('');
> 
> PG 8.0 beta1 is accepting "- 1234" as a valid integer. Further investigation
> reveals that this is a peculiarity of the Intel compilers. The following
> program,
> 
> #include <stdio.h>
> #include <stdlib.h>
> 
> main() {
>   char st[] = "- 1234";
>   int l;
>   char *endp;
> 
>   l = strtol(st, &endp, 10);
>   printf("l = %d  st = %lx  endp = %lx\n", l, st, endp);
> }
> 
> using the Intel compiler provided libraries prints
> 
> l = -1234  st = 60000fffffffb720  endp = 60000fffffffb726
> 
> whereas gcc and glibc yields
> 
> l = 0  st = 60000fffffffb710  endp = 60000fffffffb710
> 
> Boo hiss...
> 
> +-----------------------------+------------------------------------+
> | Robert E. Bruccoleri, Ph.D. | email: bruc@acm.org                |
> | President, Congenair LLC    | URL:   http://www.congen.com/~bruc |
> | P.O. Box 314                | Phone: 609 818 7251                | 
> | Pennington, NJ 08534        |                                    |
> +-----------------------------+------------------------------------+
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 8: explain analyze is your friend


-- 
Cybertec Geschwinde u Schoenig
Schoengrabern 134, A-2020 Hollabrunn, Austria
Tel: +43/720/10 1234567 or +43/660/816 40 77
www.cybertec.at, www.postgresql.at, kernel.cybertec.at




Re: Regression failure with PostgreSQL 8beta1 and Intel

From
"Robert E. Bruccoleri"
Date:
Dear Hans,
> 
> Robert,
> 
> Are you planning to use Intel's C compiler in production?
> We tried that some time ago and corrupted our database cluster almost 
> instantly (for some reason we have not investigated any further).
> I highly recommend to do some stress testing to see if everything works 
> nicely.
> I'd be pleased to get some feedback.

We're using the Intel C compiler for all our code on the Altix. We
have encountered a few bugs with optimization, but on the whole, it
works pretty well, and it generates code that runs about 30% faster
than gcc (depending on the application of course). With regard to
PostgreSQL, we are not having massive problems with data
corruption. We have had problems with 7.4.3, and I'm currently testing
8.0.0beta1. I don't believe the problem with 7.4.3 is a compiler issue --
it only happens when we have multiple backends running at the same time.
Other people like Hubert Froehlich
(http://archives.postgresql.org/pgsql-general/2004-07/msg00670.php)
have run into the same problem using a completely different environment.
I'll report on 8.0.0beta1 when our testing is complete. --Bob

+-----------------------------+------------------------------------+
| Robert E. Bruccoleri, Ph.D. | email: bruc@acm.org                |
| President, Congenair LLC    | URL:   http://www.congen.com/~bruc |
| P.O. Box 314                | Phone: 609 818 7251                | 
| Pennington, NJ 08534        |                                    |
+-----------------------------+------------------------------------+