dbTalk Databases Forums  

Re: [BUGS] [PORTS] Bug Report with Postgres 7.4 on AIX 5.3

mailing.database.pgsql-bugs mailing.database.pgsql-bugs


Discuss Re: [BUGS] [PORTS] Bug Report with Postgres 7.4 on AIX 5.3 in the mailing.database.pgsql-bugs forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Vincent Vanwynsberghe
 
Posts: n/a

Default Re: [BUGS] [PORTS] Bug Report with Postgres 7.4 on AIX 5.3 - 05-19-2005 , 08:29 AM






This is a multi-part message in MIME format.

--Boundary_(ID_+pa53jE2GCeIQ31ihum1RA)
Content-type: text/plain; charset=iso-8859-1
Content-transfer-encoding: 7BIT

Hi,

We opened a call to IBM also, but until now we didn't receive anything (see
the attached mail).
In order to take into account the RFC 3943, we find a way to fixed the
problem by modifying the file socket.h :

#define _SS_MAXSIZE 128 /* Implementation specific max size */

SHOULD BE REPLACED BY

#define _SS_MAXSIZE (sizeof(struct sockaddr_un)) /* Implementation
specific max size */

With this modification, Postgres 7.4 run on AIX5.3.
This is really an AIX problem.

An other's proposal done by Bull (our provider of the AIX system) is the
following :
Reduce the size of the field sun_path in the structure sockaddr_un (un.h)
and not increase the size of the structure sockaddr_storage.

char sun_path[PATH_MAX]; /* changed from 104 to PATH_MAX to support
long user names */

SHOULD BE REPLACED BY

char sun_path[104]; /* changed from 104 to PATH_MAX to support long
user names */

With this modification, Postgres 7.4 run also on AIX5.3.

Both modification can have an impact on the AIX5.3 OS and IBM should be
confirm if a fixed is needed for that problem ?

Kind Regards,
Vincent Vanwynsberghe

Quote:
-----Original Message-----
From: Mohan, Ross [mailto:RMohan (AT) arbinet (DOT) com]
Sent: jeudi 19 mai 2005 2:23
To: vvanwynsberghe (AT) ccncsi (DOT) net
Subject: RE: [PORTS] Bug Report with Postgres 7.4 on AIX 5.3


Vincent,

1) I am having the exact same problem: I cannot even do a
CREATEDB in 8.0.2 on AIX5.3

2) You sent your mail to the PG lists, but not to IBM, possibly?

3) If you think it will help, I can call support as well.



If you get ANY word on this, whether a fix, a tweak, or a
workaround, please Please PLEASE
post to the list rapidly.

We're dead in the water on this and the IT environment around
here is such that if I can't
get PG working on AIX, it'll be marked for death. And I really
wanted to start
using PG around here.

Thanks!!!!!


-- Ross Mohan



-----Original Message-----
From: pgsql-ports-owner (AT) postgresql (DOT) org
[mailtogsql-ports-owner (AT) postgresql (DOT) org] On Behalf Of Vincent
Vanwynsberghe
Sent: Tuesday, May 10, 2005 4:08 AM
To: pgsql-ports (AT) postgresql (DOT) org; pgsql-bugs (AT) postgresql (DOT) org
Subject: [PORTS] Bug Report with Postgres 7.4 on AIX 5.3


Dear Support,

We try to install Postgres 7.4 on AIX 5.3 (IBM,9111-520).
The compilation is good and we are able to start the postmaster.
When we try to start the psql we got the following error :
FATAL: unsupported frontend protocol 0.0: server supports 1.0 to 3.0

We run the psql under the AIX debugger dbx and our conclusions
are the following :

In the file fe-connect.c we try to copy a area of 1025 in the
conn->raddr.addr area but the size of that area is only 144.
The result is a corruption of the pg_conn structure

+1175 /* Remember
current address
for possible error msg */
+1176 memcpy(&conn->raddr.addr,
addr_cur->ai_addr,
+1177
addr_cur->ai_addrlen);


The addr_cur->ai_addrlen is set with the sizeof(struct
sockaddr_un) in the file ip.c.

In the file libpq-int.h the structure pg_conn contains 2 fields SockAddr
* PGconn stores all the state data associated with a single connection
* to a backend.
*/
struct pg_conn
{
...
SockAddr laddr; /* Local address */
SockAddr raddr;
...
}

The structure SockAddr is defined in the file pqcomm.h

typedef struct
{
struct sockaddr_storage addr;
ACCEPT_TYPE_ARG3 salen;
} SockAddr;


On Our AIX 5.3 the sockaddr_un is defined in the file
/usr/include/sys/un.h

#if defined(COMPAT_43) && !defined(_KERNEL)
struct sockaddr_un {
ushort_t sun_family; /* AF_UNIX */
char sun_path[PATH_MAX]; /* changed from 104 to PATH_MAX to
support long user names */
};
#else
struct sockaddr_un {
uchar_t sun_len; /* sockaddr len including null */
sa_family_t sun_family; /* AF_UNIX */
char sun_path[PATH_MAX]; /* changed from 104 to PATH_MAX to
support long user names */
};
#endif /* COMPAT_43 && !_KERNEL */

PATH_MAX is defined in the file /usr/include/sys/limits.h

#if _POSIX_C_SOURCE >= 200112L && !(defined _ALL_SOURCE) ||
defined(_PATHMAX_HAS_NULL)
#define PATH_MAX 1024 /* max number of bytes in a
pathname.
includes a terminating
null */ #else
#define PATH_MAX 1023
#endif

In our platform the sizeof of struct sockaddr_un is 1025 and the
sizeof of SockAddr is 144. In conclusion the instructions done in
the function PQconnectPoll cause a memory overflow !!!

+1175 /* Remember current address
for possible error msg */
+1176 memcpy(&conn->raddr.addr,
addr_cur->ai_addr,
+1177
addr_cur->ai_addrlen);

Are you aware about this problem ?
Could you give us a way to solve the problem ?

Kind Regards,
Vincent Vanwynsberghe


---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings
--Boundary_(ID_+pa53jE2GCeIQ31ihum1RA)
Content-type: message/rfc822

Date: Thu, 12 May 2005 10:13:36 +0200
From: Vincent Vanwynsberghe <vvanwynsberghe (AT) ccncsi (DOT) net>
Subject: Implementation of the sockaddr_storage structure on AIX5.3
To: aixnews (AT) cc (DOT) ysu.edu
Reply-to: vvanwynsberghe (AT) ccncsi (DOT) net
Message-id: <IKEPJJEJDCJPKMLEECEDAEJGCCAA.vvanwynsberghe (AT) ccncsi (DOT) net>
MIME-version: 1.0
X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2900.2180
X-Mailer: Microsoft Outlook IMO, Build 9.0.6604 (9.0.2911.0)
Content-type: text/plain; charset=iso-8859-1
Content-transfer-encoding: 7BIT
Importance: Normal
X-Priority: 3 (Normal)
X-MSMail-priority: Normal

Dear all,

During the installation of the Database PostgresSQL 7.4.7 on AIX5.3, we have
encountered the following problem :
The definition of the sockaddr_storage structure in the file socket.h do not
respect the RFC 3493 - Basic Socket Interface Extensions for IPv6.
Abstract of the RFC 3493 :
One simple addition to the sockets API that can help application
writers is the "struct sockaddr_storage". This data structure can
simplify writing code that is portable across multiple address
families and platforms. This data structure is designed with the
following goals.

- Large enough to accommodate all supported protocol-specific address
structures.

It's not the case on AIX5.3 because the size of struct sockaddr_storage is
136 and is less than the size of the structure sockaddr_un (1025).
As PostgresSQL implement the RFC3943, the result is a memory overflow when
Postgress try to copy the sockaddr_un structure on the target
sockaddr_storage structure.

In order to take into account the RFC 3943, the file socket.h must be
modified :

#define _SS_MAXSIZE 128 /* Implementation specific max size */

SHOULD BE REPLACED BY

#define _SS_MAXSIZE (sizeof(struct sockaddr_un)) /* Implementation
specific max size */


Is the sockaddr_storage structure used in the internal of AIX5.3 ?
If the OS used that structure it means that a patch is needed ?

Somebody has an idea on the subject ?

Kind Regards,
Vincent Vanwynsberghe



--Boundary_(ID_+pa53jE2GCeIQ31ihum1RA)
Content-Type: text/plain
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0


---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend

--Boundary_(ID_+pa53jE2GCeIQ31ihum1RA)--


Reply With Quote
  #2  
Old   
Mohan, Ross
 
Posts: n/a

Default Re: [BUGS] [PORTS] Bug Report with Postgres 7.4 on AIX 5.3 - 05-19-2005 , 08:31 AM






Vincent,=20

1) I am having the exact same problem: I cannot even do a CREATEDB in 8.0.=
2 on AIX5.3

2) You sent your mail to the PG lists, but not to IBM, possibly?

3) If you think it will help, I can call support as well.=20



If you get ANY word on this, whether a fix, a tweak, or a workaround, pleas=
e Please PLEASE
post to the list rapidly.=20

We're dead in the water on this and the IT environment around here is such =
that if I can't
get PG working on AIX, it'll be marked for death. And I really wanted to st=
art
using PG around here.=20

Thanks!!!!!


-- Ross Mohan



-----Original Message-----
From: pgsql-ports-owner (AT) postgresql (DOT) org [mailtogsql-ports-owner@postgresql=
..org] On Behalf Of Vincent Vanwynsberghe
Sent: Tuesday, May 10, 2005 4:08 AM
To: pgsql-ports (AT) postgresql (DOT) org; pgsql-bugs (AT) postgresql (DOT) org
Subject: [PORTS] Bug Report with Postgres 7.4 on AIX 5.3


Dear Support,

We try to install Postgres 7.4 on AIX 5.3 (IBM,9111-520).
The compilation is good and we are able to start the postmaster. When we tr=
y to start the psql we got the following error :
FATAL: unsupported frontend protocol 0.0: server supports 1.0 to 3.0

We run the psql under the AIX debugger dbx and our conclusions are the foll=
owing :

In the file fe-connect.c we try to copy a area of 1025 in the
conn->raddr.addr area but the size of that area is only 144.
The result is a corruption of the pg_conn structure

+1175 /* Remember current address
for possible error msg */
+1176 memcpy(&conn->raddr.addr,
addr_cur->ai_addr,
+1177
addr_cur->ai_addrlen);


The addr_cur->ai_addrlen is set with the sizeof(struct sockaddr_un) in the =
file ip.c.

In the file libpq-int.h the structure pg_conn contains 2 fields SockAddr
* PGconn stores all the state data associated with a single connection
* to a backend.
*/
struct pg_conn
{
....
SockAddr laddr; /* Local address */
SockAddr raddr;
....
}

The structure SockAddr is defined in the file pqcomm.h

typedef struct
{
struct sockaddr_storage addr;
ACCEPT_TYPE_ARG3 salen;
} SockAddr;


On Our AIX 5.3 the sockaddr_un is defined in the file /usr/include/sys/un.h

#if defined(COMPAT_43) && !defined(_KERNEL)
struct sockaddr_un {
ushort_t sun_family; /* AF_UNIX */
char sun_path[PATH_MAX]; /* changed from 104 to PATH_MAX to
support long user names */
};
#else
struct sockaddr_un {
uchar_t sun_len; /* sockaddr len including null */
sa_family_t sun_family; /* AF_UNIX */
char sun_path[PATH_MAX]; /* changed from 104 to PATH_MAX to
support long user names */
};
#endif /* COMPAT_43 && !_KERNEL */

PATH_MAX is defined in the file /usr/include/sys/limits.h

#if _POSIX_C_SOURCE >=3D 200112L && !(defined _ALL_SOURCE) ||
defined(_PATHMAX_HAS_NULL)
#define PATH_MAX 1024 /* max number of bytes in a
pathname.
includes a terminating null */ #=
else
#define PATH_MAX 1023
#endif

In our platform the sizeof of struct sockaddr_un is 1025 and the sizeof of=
SockAddr is 144. In conclusion the instructions done in the function PQcon=
nectPoll cause a memory overflow !!!

+1175 /* Remember current address
for possible error msg */
+1176 memcpy(&conn->raddr.addr,
addr_cur->ai_addr,
+1177
addr_cur->ai_addrlen);

Are you aware about this problem ?
Could you give us a way to solve the problem ?

Kind Regards,
Vincent Vanwynsberghe


---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to majordomo (AT) postgresql (DOT) org

Reply With Quote
  #3  
Old   
Mohan, Ross
 
Posts: n/a

Default Re: [BUGS] [PORTS] Bug Report with Postgres 7.4 on AIX 5.3 - 05-19-2005 , 09:56 AM



Vincent,

Thanks for this, I'll run this by our SAs. Should
be funny to watch their reaction.=20

Meanwhile, I've requested that we file a bug w/IBM
as well.=20

Thanks again for sharing your information!

-- Ross Mohan


-----Original Message-----
From: Vincent Vanwynsberghe [mailto:vvanwynsberghe (AT) ccncsi (DOT) net]
Sent: Thu 5/19/2005 8:49 AM
To: pgsql-ports (AT) postgresql (DOT) org; pgsql-bugs (AT) postgresql (DOT) org
Cc: Mohan, Ross
Subject: RE: [PORTS] Bug Report with Postgres 7.4 on AIX 5.3
Hi,

We opened a call to IBM also, but until now we didn't receive anything (see
the attached mail).
In order to take into account the RFC 3943, we find a way to fixed the
problem by modifying the file socket.h :

#define _SS_MAXSIZE 128 /* Implementation specific max size */

SHOULD BE REPLACED BY

#define _SS_MAXSIZE (sizeof(struct sockaddr_un)) /* Implementation
specific max size */

With this modification, Postgres 7.4 run on AIX5.3.
This is really an AIX problem.

An other's proposal done by Bull (our provider of the AIX system) is the
following :
Reduce the size of the field sun_path in the structure sockaddr_un (un.h)
and not increase the size of the structure sockaddr_storage.

char sun_path[PATH_MAX]; /* changed from 104 to PATH_MAX to support
long user names */

SHOULD BE REPLACED BY

char sun_path[104]; /* changed from 104 to PATH_MAX to support long
user names */

With this modification, Postgres 7.4 run also on AIX5.3.

Both modification can have an impact on the AIX5.3 OS and IBM should be
confirm if a fixed is needed for that problem ?

Kind Regards,
Vincent Vanwynsberghe

Quote:
-----Original Message-----
From: Mohan, Ross [mailto:RMohan (AT) arbinet (DOT) com]
Sent: jeudi 19 mai 2005 2:23
To: vvanwynsberghe (AT) ccncsi (DOT) net
Subject: RE: [PORTS] Bug Report with Postgres 7.4 on AIX 5.3


Vincent,

1) I am having the exact same problem: I cannot even do a
CREATEDB in 8.0.2 on AIX5.3

2) You sent your mail to the PG lists, but not to IBM, possibly?

3) If you think it will help, I can call support as well.



If you get ANY word on this, whether a fix, a tweak, or a
workaround, please Please PLEASE
post to the list rapidly.

We're dead in the water on this and the IT environment around
here is such that if I can't
get PG working on AIX, it'll be marked for death. And I really
wanted to start
using PG around here.

Thanks!!!!!


-- Ross Mohan



-----Original Message-----
From: pgsql-ports-owner (AT) postgresql (DOT) org
[mailtogsql-ports-owner (AT) postgresql (DOT) org] On Behalf Of Vincent
Vanwynsberghe
Sent: Tuesday, May 10, 2005 4:08 AM
To: pgsql-ports (AT) postgresql (DOT) org; pgsql-bugs (AT) postgresql (DOT) org
Subject: [PORTS] Bug Report with Postgres 7.4 on AIX 5.3


Dear Support,

We try to install Postgres 7.4 on AIX 5.3 (IBM,9111-520).
The compilation is good and we are able to start the postmaster.
When we try to start the psql we got the following error :
FATAL: unsupported frontend protocol 0.0: server supports 1.0 to 3.0

We run the psql under the AIX debugger dbx and our conclusions
are the following :

In the file fe-connect.c we try to copy a area of 1025 in the
conn->raddr.addr area but the size of that area is only 144.
The result is a corruption of the pg_conn structure

+1175 /* Remember
current address
for possible error msg */
+1176 memcpy(&conn->raddr.addr,
addr_cur->ai_addr,
+1177
addr_cur->ai_addrlen);


The addr_cur->ai_addrlen is set with the sizeof(struct
sockaddr_un) in the file ip.c.

In the file libpq-int.h the structure pg_conn contains 2 fields SockAddr
* PGconn stores all the state data associated with a single connection
* to a backend.
*/
struct pg_conn
{
...
SockAddr laddr; /* Local address */
SockAddr raddr;
...
}

The structure SockAddr is defined in the file pqcomm.h

typedef struct
{
struct sockaddr_storage addr;
ACCEPT_TYPE_ARG3 salen;
} SockAddr;


On Our AIX 5.3 the sockaddr_un is defined in the file
/usr/include/sys/un.h

#if defined(COMPAT_43) && !defined(_KERNEL)
struct sockaddr_un {
ushort_t sun_family; /* AF_UNIX */
char sun_path[PATH_MAX]; /* changed from 104 to PATH_MAX to
support long user names */
};
#else
struct sockaddr_un {
uchar_t sun_len; /* sockaddr len including null */
sa_family_t sun_family; /* AF_UNIX */
char sun_path[PATH_MAX]; /* changed from 104 to PATH_MAX to
support long user names */
};
#endif /* COMPAT_43 && !_KERNEL */

PATH_MAX is defined in the file /usr/include/sys/limits.h

#if _POSIX_C_SOURCE >=3D 200112L && !(defined _ALL_SOURCE) ||
defined(_PATHMAX_HAS_NULL)
#define PATH_MAX 1024 /* max number of bytes in a
pathname.
includes a terminating
null */ #else
#define PATH_MAX 1023
#endif

In our platform the sizeof of struct sockaddr_un is 1025 and the
sizeof of SockAddr is 144. In conclusion the instructions done in
the function PQconnectPoll cause a memory overflow !!!

+1175 /* Remember current address
for possible error msg */
+1176 memcpy(&conn->raddr.addr,
addr_cur->ai_addr,
+1177
addr_cur->ai_addrlen);

Are you aware about this problem ?
Could you give us a way to solve the problem ?

Kind Regards,
Vincent Vanwynsberghe


---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings



---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

http://archives.postgresql.org


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.3
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.