On 14/12/10 12:35, H.Merijn Brand wrote: > I have postgres running on most my HP-UX varieties, ranging from HP-UX > 10.20/32bit through 11.31/64bit. It works fine everywhere, except on > HP-UX 11.31-ipf in 64bit mode. Note that this is Itanium architecture. > > postgres' own test suite passes, but all connects fail with DBD::Pg. > The compiled psql works fine. Same for 8.4.5 and 9.0.1. I'm working > with 8.4.5 now to make it as stable as possible to compare to my other > architectures. > > Everything is a success when I use the same perl built in 32bit mode > > I've run truss (HP-UX' version of trace, and narrowed the fail part to > 141 lines by being as explicit as possible (e.g setting PGHOST to an IP > address to prevent calls to the resolver). Or to 56 lines for the > version ran with gcc compiled perl5.12. > > I now need guidance or help to nail down where things actually cause > these failures. > > Here are two traces. The first for perl-5.10.1 compiled with HP's > C-ANSI-C, the second for perl-5.12.2 compiled with gcc-4.2.4 > > This is perl, v5.10.1 (*) built for IA64.ARCHREV_0-LP64 > > open ("/pro/pgsql/lib/libpq.so.5", O_RDONLY|0x800, 0) > = 3 > fstat (3, 0x9fffffffffffdd70) > = 0 > read (3, "7f454c46020201010100 | ELF ".., 64) > = 64 > pread (3, "7f454c46020201010100 | ELF ".., 1024, 0) > = 1024 > stat ("/usr/lib/hpux64/dpd", 0x9fffffffffffd3d0) > = 0 > open ("/usr/lib/hpux64/dpd/libpq.so.5.bpd", O_RDONLY|0x800, 0) > ERR#2 ENOENT > getuid () > = 203 (203) > getgid () > = 200 (200) > mmap (NULL, 428816, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_SHLIB, 3, 0) > = 0xc000000009d28000 > mmap (NULL, 9860, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_SHLIB, 3, 458752) > = 0x9fffffffbf764000 > close (3) > = 0 > getuid () > = 203 (203) > getgid () > = 200 (200) > mmap (NULL, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, > -1, 0) = 0x9fffffffbf76c000 > getuid () > = 203 (203) > getgid () > = 200 (200) > open ("/pro/local/lib/libcrypto.so", O_RDONLY|0x800, 0) > ERR#2 ENOENT > open ("/usr/local/ssl/lib/libcrypto.so", O_RDONLY|0x800, 0) > = 3 > fstat (3, 0x9fffffffffffdd20) > = 0 > read (3, "7f454c46020201010100 | ELF ".., 64) > = 64 > pread (3, "7f454c46020201010100 | ELF ".., 1024, 0) > = 1024 > stat ("/usr/lib/hpux64/dpd", 0x9fffffffffffd380) > = 0 > open ("/usr/lib/hpux64/dpd/libcrypto.so.bpd", O_RDONLY|0x800, 0) > ERR#2 ENOENT > getuid () > = 203 (203) > getgid () > = 200 (200) > mmap (NULL, 3530960, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_SHLIB, 3, 0) > = 0xc000000006fe8000 > mmap (NULL, 11552, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_SHLIB, > -1, 0) = 0x9fffffffbf760000 > mmap (0x9fffffffbf731000, 191296, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_SHLIB, 3, 3538944) = 0x9fffffffbf731000 > close (3) > = 0 > getuid () > = 203 (203) > getgid () > = 200 (200) > mmap (NULL, 32768, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, > -1, 0) = 0x9fffffffbf728000 > getuid () > = 203 (203) > getgid () > = 200 (200) > open ("/pro/local/lib/libssl.so", O_RDONLY|0x800, 0) > ERR#2 ENOENT > open ("/usr/local/ssl/lib/libssl.so", O_RDONLY|0x800, 0) > = 3 > fstat (3, 0x9fffffffffffdd20) > = 0 > read (3, "7f454c46020201010100 | ELF ".., 64) > = 64 > pread (3, "7f454c46020201010100 | ELF ".., 1024, 0) > = 1024 > stat ("/usr/lib/hpux64/dpd", 0x9fffffffffffd380) > = 0 > open ("/usr/lib/hpux64/dpd/libssl.so.bpd", O_RDONLY|0x800, 0) > ERR#2 ENOENT > getuid () > = 203 (203) > getgid () > = 200 (200) > mmap (NULL, 659104, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_SHLIB, 3, 0) > = 0xc000000008bc0000 > mmap (NULL, 29584, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_SHLIB, 3, 720896) > = 0x9fffffffbf720000 > close (3) > = 0 > getuid () > = 203 (203) > getgid () > = 200 (200) > mmap (NULL, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, > -1, 0) = 0x9fffffffbf71e000 > mmap (NULL, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, > -1, 0) = 0x9fffffffbf71c000 > mmap (NULL, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, > -1, 0) = 0x9fffffffbf71a000 > brk (0x6000000000940000) > = 0 > getpid () > = 28317 (28316) > getpid () > = 28317 (28316) > getuid () > = 203 (203) > open ("/var/spool/pwgr/status", O_RDONLY|0x800, 0) > = 3 > mmap (NULL, 532, PROT_READ, MAP_SHARED|MAP_VARIABLE|MAP_FILE|MAP_ADDR32, 3, > 0) = 0xc0001000 > close (3) > = 0 > socket (AF_UNIX, SOCK_DGRAM, 0) > = 3 > getpid () > = 28317 (28316) > unlink ("/var/spool/sockets/pwgr/client28317") > ERR#2 ENOENT > bind (3, 0x9fffffffbf7b1510, 38) > ERR#2 ENOENT > munmap (0xc0001000, 532) > = 0 > close (3) > = 0 > open ("/etc/nsswitch.conf", O_RDONLY|0x800, 0666) > = 3 > ioctl (3, TCGETA, 0x9fffffffffffcee0) > ERR#25 ENOTTY > read (3, "230a23202f6574632f6e | # # /etc/n".., 8192) > = 500 > read (3, 0x600000000093a218, 8192) > = 0 > close (3) > = 0 > open ("/usr/lib/hpux64/libnss_files.so.1", O_RDONLY|0x800, 0) > = 3 > fstat (3, 0x9fffffffffffc950) > = 0 > pread (3, "7f454c46020201010100 | ELF ".., 1024, 0) > = 1024 > stat ("/usr/lib/hpux64/dpd", 0x9fffffffffffbf10) > = 0 > open ("/usr/lib/hpux64/dpd/libnss_files.so.1.bpd", O_RDONLY|0x800, 0) > ERR#2 ENOENT > getuid () > = 203 (203) > getgid () > = 200 (200) > mmap (NULL, 85872, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_SHLIB, 3, 0) > = 0xc0000000001e0000 > mmap (NULL, 3159, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_SHLIB, 3, 131072) > = 0x9fffffffbf767000 > close (3) > = 0 > getuid () > = 203 (203) > getgid () > = 200 (200) > open ("/etc/passwd", O_RDONLY|0x800, 0666) > = 3 > ioctl (3, TCGETA, 0x9fffffffffffcf10) > ERR#25 ENOTTY > read (3, "726f6f743a3250465250 | root:2PFRP".., 8192) > = 1495 > lseek (3, 18446744073709551032, SEEK_CUR) > = 911 > close (3) > = 0 > getuid () > = 203 (203) > open ("/var/spool/pwgr/status", O_RDONLY|0x800, 0) > = 3 > mmap (NULL, 532, PROT_READ, MAP_SHARED|MAP_VARIABLE|MAP_FILE|MAP_ADDR32, 3, > 0) = 0xc0001000 > close (3) > = 0 > socket (AF_UNIX, SOCK_DGRAM, 0) > = 3 > getpid () > = 28317 (28316) > unlink ("/var/spool/sockets/pwgr/client28317") > ERR#2 ENOENT > bind (3, 0x9fffffffbf7b1510, 38) > ERR#2 ENOENT > munmap (0xc0001000, 532) > = 0 > close (3) > = 0 > open ("/etc/passwd", O_RDONLY|0x800, 0666) > = 3 > ioctl (3, TCGETA, 0x9fffffffffffc540) > ERR#25 ENOTTY > read (3, "726f6f743a3250465250 | root:2PFRP".., 8192) > = 1495 > lseek (3, 18446744073709551032, SEEK_CUR) > = 911 > close (3) > = 0 > stat ("/u/usr/merijn/.pgpass", 0x9fffffffffffd2c0) > ERR#2 ENOENT > socket (AF_INET, SOCK_STREAM, 0) > = 3 > setsockopt (3, 0x6, TCP_NODELAY, 0x9fffffffffffd9b0, 4) > = 0 > fcntl (3, F_SETFL, 65536) > = 0 > fcntl (3, F_SETFD, 1) > = 0 > connect (3, 0x6000000000849290, 16) > ERR#245 EINPROGRESS
Connect is not finished yet - wait for it to finish. > poll (0x9fffffffffffdb90, 1, -1) > = 1 wait forever for the 1 file descriptor in that structure and it returns so the connect has completed or errored? The structure contains requested events and returned events. > getsockopt (3, SOL_SOCKET, SO_ERROR, 0x9fffffffffffdb84, 0x9fffffffffffdb98) > ERR#22 EINVAL failed here. The 3 looks ok (as it is the socket fd) as do the next 2 args so it must be the last two args which I think are supposed to be void * option value and socklen_t * length. I'd bet socklen_t is bigger on a 64 bit platform than a 32 bit one. Is a ptr to a socklen_t passed as that arg? > getpid () > = 28317 (28316) > pstat (PSTAT_PROC, 0x9fffffffffffca10, 720, 0, 28317) > = 1 > getpid () > = 28317 (28316) > pstat (PSTAT_PROC, 0x9fffffffffffca10, 720, 0, 28317) > = 1 > open ("/usr/share/locale/C/LC_MESSAGES/strerror.cat", O_RDONLY|0x800, 02415) > ERR#2 ENOENT > open ("/usr/lib/nls/msg/C/strerror.cat", O_RDONLY|0x800, 02415) > = 4 > fstat (4, 0x9fffffffffffce30) > = 0 > fcntl (4, F_SETFD, 1) > = 0 > lseek (4, 0, SEEK_SET) > = 0 > read (4, "6d736763617430310000 | msgcat01 ".., 1212) > = 1212 > lseek (4, 3383, SEEK_SET) > = 3383 > read (4, "496e76616c6964206172 | Invalid ar".., 16) > = 16 > close (4) > = 0 > close (3) > = 0 > sigsetstatemask (0x17, NULL, -6917529027641091920) > = 0 > sigsetstatemask (0x17, NULL, -6917529027641091920) > = 0 > sigsetstatemask (0x17, NULL, -6917529027641091920) > = 0 > getpid () > = 28317 (28316) > pstat (PSTAT_PROC, 0x9fffffffffffd310, 720, 0, 28317) > = 1 > getpid () > = 28317 (28316) > pstat (PSTAT_PROC, 0x9fffffffffffd310, 720, 0, 28317) > = 1 > open ("/usr/share/locale/C/LC_MESSAGES/strerror.cat", O_RDONLY|0x800, 02415) > ERR#2 ENOENT > open ("/usr/lib/nls/msg/C/strerror.cat", O_RDONLY|0x800, 02415) > = 3 > fstat (3, 0x9fffffffffffd730) > = 0 > fcntl (3, F_SETFD, 1) > = 0 > lseek (3, 0, SEEK_SET) > = 0 > read (3, "6d736763617430310000 | msgcat01 ".., 1212) > = 1212 > lseek (3, 3383, SEEK_SET) > = 3383 > read (3, "496e76616c6964206172 | Invalid ar".., 16) > = 16 > close (3) > = 0 > DBI connect ('','',...) failed: could not get socket error status: Invalid > argument at > /pro/lib/perl5/site_perl/5.10.1/IA64.ARCHREV_0-LP64/PROCURA/DBD.pm line 339 > write (2, "44424920636f6e6e6563 | DBI connec".., 162) > = 162 > > This is perl 5, version 12, subversion 2 (v5.12.2) built for > IA64.ARCHREV_0-LP64-ld > > open ("/pro/pgsql/lib/libpq.so.5", O_RDONLY|0x800, 0) > = 3 > fstat (3, 0x9fffffffffffdd80) > = 0 > read (3, "7f454c46020201010100 | ELF ".., 64) > = 64 > pread (3, "7f454c46020201010100 | ELF ".., 1024, 0) > = 1024 > stat ("/usr/lib/hpux64/dpd", 0x9fffffffffffd3e0) > = 0 > open ("/usr/lib/hpux64/dpd/libpq.so.5.bpd", O_RDONLY|0x800, 0) > ERR#2 ENOENT > getuid () > = 203 (203) > getgid () > = 200 (200) > mmap (NULL, 428816, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_SHLIB, 3, 0) > = 0xc000000009e68000 > mmap (NULL, 9860, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_SHLIB, 3, 458752) > = 0x9fffffffbf764000 > close (3) > = 0 > getuid () > = 203 (203) > getgid () > = 200 (200) > mmap (NULL, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, > -1, 0) = 0x9fffffffbf762000 > getuid () > = 203 (203) > getgid () > = 200 (200) > open ("/pro/local/lib/libcrypto.so", O_RDONLY|0x800, 0) > ERR#2 ENOENT > open ("/usr/local/ssl/lib/libcrypto.so", O_RDONLY|0x800, 0) > = 3 > fstat (3, 0x9fffffffffffdd30) > = 0 > read (3, "7f454c46020201010100 | ELF ".., 64) > = 64 > pread (3, "7f454c46020201010100 | ELF ".., 1024, 0) > = 1024 > stat ("/usr/lib/hpux64/dpd", 0x9fffffffffffd390) > = 0 > open ("/usr/lib/hpux64/dpd/libcrypto.so.bpd", O_RDONLY|0x800, 0) > ERR#2 ENOENT > getuid () > = 203 (203) > getgid () > = 200 (200) > mmap (NULL, 3530960, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_SHLIB, 3, 0) > = 0xc000000006fe8000 > mmap (NULL, 11552, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_SHLIB, > -1, 0) = 0x9fffffffbf75e000 > mmap (0x9fffffffbf72f000, 191296, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_SHLIB, 3, 3538944) = 0x9fffffffbf72f000 > close (3) > = 0 > getuid () > = 203 (203) > getgid () > = 200 (200) > mmap (NULL, 32768, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, > -1, 0) = 0x9fffffffbf724000 > getuid () > = 203 (203) > getgid () > = 200 (200) > open ("/pro/local/lib/libssl.so", O_RDONLY|0x800, 0) > ERR#2 ENOENT > open ("/usr/local/ssl/lib/libssl.so", O_RDONLY|0x800, 0) > = 3 > fstat (3, 0x9fffffffffffdd30) > = 0 > read (3, "7f454c46020201010100 | ELF ".., 64) > = 64 > pread (3, "7f454c46020201010100 | ELF ".., 1024, 0) > = 1024 > stat ("/usr/lib/hpux64/dpd", 0x9fffffffffffd390) > = 0 > open ("/usr/lib/hpux64/dpd/libssl.so.bpd", O_RDONLY|0x800, 0) > ERR#2 ENOENT > getuid () > = 203 (203) > getgid () > = 200 (200) > mmap (NULL, 659104, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_SHLIB, 3, 0) > = 0xc000000008bc0000 > mmap (NULL, 29584, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_SHLIB, 3, 720896) > = 0x9fffffffbf71c000 > close (3) > = 0 > getuid () > = 203 (203) > getgid () > = 200 (200) > mmap (NULL, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, > -1, 0) = 0x9fffffffbf72c000 > mmap (NULL, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, > -1, 0) = 0x9fffffffbf71a000 > mmap (NULL, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, > -1, 0) = 0x9fffffffbf718000 > brk (0x6000000000940000) > = 0 > Received signal 4, SIGILL, in user mode, [SIG_DFL], partial siginfo > Siginfo: si_code: ILL_ILLOPC, faulting address: 0x60000000000ab620, > si_errno: 0 > PC: 00000001000000a0.0 > exit (4) [implicit] > WIFSIGNALED(SIGILL)|WCOREDUMP > > Doubt I've added much to what you already knew Merijn but heres hoping. no comment on the coredump. Martin -- Martin J. Evans Easysoft Limited http://www.easysoft.com