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

Reply via email to