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