AIX FAQ Updates - Mailing list pgsql-patches
From | Chris Browne |
---|---|
Subject | AIX FAQ Updates |
Date | |
Msg-id | 607jfsjcal.fsf_-_@dba2.int.libertyrms.com Whole thread Raw |
Responses |
Re: AIX FAQ Updates
|
List | pgsql-patches |
I believe this change will apply equally to 7.4, 8.0, and CVS HEAD. Index: FAQ_AIX =================================================================== RCS file: /projects/cvsroot/pgsql/doc/FAQ_AIX,v retrieving revision 1.11 diff -c -u -r1.11 FAQ_AIX --- FAQ_AIX 12 Nov 2002 20:02:32 -0000 1.11 +++ FAQ_AIX 15 Jul 2005 15:51:10 -0000 @@ -18,3 +18,79 @@ You need libm.a that is in the fileset bos.adt.libm. (Try the following command.) $ lslpp -l bos.adt.libm + + +--- +From: Christopher Browne <cbbrowne@ca.afilias.info> +Date: 2005-07-15 + +On AIX 5.3, there have been some problems getting PostgreSQL to +compile and run using GCC. + +1. You will want to use a version of GCC subsequent to 3.3.2, + particularly if you use a prepackaged version. We had good + success with 4.0.1. + + Problems with earlier versions seem to have more to do with the + way IBM packaged GCC than with actual issues with GCC, so that if + you compile GCC yourself, you might well have success with an + earlier version of GCC. + +2. AIX 5.3 has a problem where sockadr_storage is not defined to be + large enough. In version 5.3, IBM increased the size of + sockaddr_un, the address structure for UNIX Domain Sockets, but + did not correspondingly increase the size of sockadr_storage. + + The result of this is that attempts to use UDS with PostgreSQL + lead to libpq overflowing the data structure. TCP/IP connections + work OK, but not UDS, which prevents the regression tests from + working. + + The nonconformance may be readily demonstrated by compiling and + running the following C program which calculates and compares the + sizes of the various structures: + +test_size.c +------------ + +---------- snip here - test_size.c ---------------------------- +#include <stdio.h> +#include <sys/un.h> +#include <sys/socket.h> +int main (int argc, char *argv[]) { + struct sockaddr_storage a; + struct sockaddr_un b; + printf("Size of sockadr_storage: %d\n", sizeof(a)); + printf ("Size of sockaddr_un:%d\n", sizeof(b)); + + if (sizeof(a) >= sizeof(b)) + printf ("Conformant to RFC 3493\n"); + else + printf ("Non-conformant to RFC 3493\n"); +} +---------- snip here - test_size.c ---------------------------- + + +The problem was reported to IBM, and is recorded as bug report +PMR29657. + +An immediate resolution is to alter _SS_MAXSIZE to = 1025 in +/usr/include/sys/socket.h, which will resolve the immediate problem. + +It appears that the "final" resolution will be to alter _SS_MAXSIZE to +1280, making the size nicely align with page boundaries. + +IBM will be providing a fix in the next maintenance release (expected +in October 2005) with an updated socket.h. +--- +From: Christopher Browne <cbbrowne@ca.afilias.info> +Date: 2005-07-15 + +Some of the AIX tools may be "a little different" from what you may be +accustomed to on other platforms. If you are looking for a version of +ldd, useful for determining what object code depends on what +libraries, the following URLs may help you... + +http://www.faqs.org/faqs/aix-faq/part4/section-22.html + +http://www.han.de/~jum/aix/ldd.c \ No newline at end of file -- (format nil "~S@~S" "cbbrowne" "acm.org") http://www.ntlug.org/~cbbrowne/sap.html Rules of the Evil Overlord #78. "I will not tell my Legions of Terror "And he must be taken alive!" The command will be: ``And try to take him alive if it is reasonably practical.''" <http://www.eviloverlord.com/>
pgsql-patches by date: