Обсуждение: pthreads issue when compiling 7.4.8 on AIX 5.3

Поиск
Список
Период
Сортировка

pthreads issue when compiling 7.4.8 on AIX 5.3

От
Andrew Hammond
Дата:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I'm seeing the following errors when compiling postgres 7.4.8 (vanilla)
on AIX 5.3

make[2]: Entering directory `/opt/src/postgresql-7.4.8/src/port'
gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
- -Wmissing-declarations -I../../src/include -I/opt/dbs/readline/include
- -I/opt/dbs/zlib/include -I/opt/freeware/include  -c thread.c
In file included from thread.c:25:
/usr/include/pthread.h:652: error: parse error before '*' token
/usr/include/pthread.h:655: error: parse error before '*' token
/usr/include/pthread.h:658: error: parse error before '*' token
/usr/include/pthread.h:661: error: parse error before '*' token
/usr/include/pthread.h:664: error: parse error before '*' token
/usr/include/pthread.h:672: error: parse error before '*' token
/usr/include/pthread.h:675: error: parse error before '*' token
/usr/include/pthread.h:678: error: parse error before '*' token
/usr/include/pthread.h:681: error: parse error before '*' token
/usr/include/pthread.h:689: error: parse error before '*' token
/usr/include/pthread.h:693: error: parse error before '*' token
/usr/include/pthread.h:696: error: parse error before '*' token
make[2]: *** [thread.o] Error 1
make[2]: Leaving directory `/opt/src/postgresql-7.4.8/src/port'

I've looked into pthread.h and it's refereing to pthread_barrier_t,
pthread_barrierattr_t and pthread_spinlock_t. These do not exist in
pthread.h on our 5.1 box. However they are defined in sys/types.h which
is included up near the top pthread.h.

I'm somewhat at a loss about where this could be going wrong.

Configure options follow

./configure --prefix=/opt/dbs/pgsql748-slony105-AIX53-2005-06-13
-

--with-includes=/opt/dbs/readline/include:/opt/dbs/zlib/include:/usr/ccs/include:/opt/freeware/include:/usr/local/include
-
--with-libraries=/opt/dbs/readline/lib:/opt/dbs/zlib/lib:/usr/ccs/lib:/opt/freeware/lib:/usr/local/lib
- --enable-thread-safety --enable-debug --enable-aix64

Note that this binary will need to have slony support which is why the
- --enable-thread-safety. We've had success compiling postgres on AIX 5.1
with identical settings. We're using gcc 3.3.2

The thread_test program fails identically:

- -bash-2.05b$ make
gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
- -Wmissing-declarations  -I../../../src/include
- -I/opt/dbs/readline/include -I/opt/dbs/zlib/include
- -I/opt/freeware/include  -c -o thread_test.o thread_test.c
In file included from thread_test.c:23:
/usr/include/pthread.h:652: error: parse error before '*' token
/usr/include/pthread.h:655: error: parse error before '*' token
/usr/include/pthread.h:658: error: parse error before '*' token
/usr/include/pthread.h:661: error: parse error before '*' token
/usr/include/pthread.h:664: error: parse error before '*' token
/usr/include/pthread.h:672: error: parse error before '*' token
/usr/include/pthread.h:675: error: parse error before '*' token
/usr/include/pthread.h:678: error: parse error before '*' token
/usr/include/pthread.h:681: error: parse error before '*' token
/usr/include/pthread.h:689: error: parse error before '*' token
/usr/include/pthread.h:693: error: parse error before '*' token
/usr/include/pthread.h:696: error: parse error before '*' token
make: *** [thread_test.o] Error 1

- --
Andrew Hammond    416-673-4138    ahammond@ca.afilias.info
Database Administrator, Afilias Canada Corp.
CB83 2838 4B67 D40F D086 3568 81FC E7E5 27AF 4A9A
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)

iD8DBQFCsd5bgfzn5SevSpoRAhKzAKC0m1lTZ96bzkpDB4grSGfOTbh3QACggNjo
E0PIJkYA5zSTD3Q3z7LQMmM=
=ax+Z
-----END PGP SIGNATURE-----

Re: pthreads issue when compiling 7.4.8 on AIX 5.3

От
"Mohan, Ross"
Дата:
Sorry to be dull-minded, but since PG is not threaded (at least on AIX)
and works fine, why would Slony (threaded or not) have a problem? There
aren't likely to be thread-to-thread interactions, eg.


-----Original Message-----
From: pgsql-ports-owner@postgresql.org [mailto:pgsql-ports-owner@postgresql.org] On Behalf Of Andrew Hammond
Sent: Thursday, June 16, 2005 4:18 PM
To: pgsql-ports@postgresql.org
Subject: [PORTS] pthreads issue when compiling 7.4.8 on AIX 5.3


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I'm seeing the following errors when compiling postgres 7.4.8 (vanilla) on AIX 5.3

make[2]: Entering directory `/opt/src/postgresql-7.4.8/src/port'
gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
- -Wmissing-declarations -I../../src/include -I/opt/dbs/readline/include
- -I/opt/dbs/zlib/include -I/opt/freeware/include  -c thread.c In file included from thread.c:25:
/usr/include/pthread.h:652: error: parse error before '*' token
/usr/include/pthread.h:655: error: parse error before '*' token
/usr/include/pthread.h:658: error: parse error before '*' token
/usr/include/pthread.h:661: error: parse error before '*' token
/usr/include/pthread.h:664: error: parse error before '*' token
/usr/include/pthread.h:672: error: parse error before '*' token
/usr/include/pthread.h:675: error: parse error before '*' token
/usr/include/pthread.h:678: error: parse error before '*' token
/usr/include/pthread.h:681: error: parse error before '*' token
/usr/include/pthread.h:689: error: parse error before '*' token
/usr/include/pthread.h:693: error: parse error before '*' token
/usr/include/pthread.h:696: error: parse error before '*' token
make[2]: *** [thread.o] Error 1
make[2]: Leaving directory `/opt/src/postgresql-7.4.8/src/port'

I've looked into pthread.h and it's refereing to pthread_barrier_t, pthread_barrierattr_t and pthread_spinlock_t. These
donot exist in pthread.h on our 5.1 box. However they are defined in sys/types.h which is included up near the top
pthread.h.

I'm somewhat at a loss about where this could be going wrong.

Configure options follow

./configure --prefix=/opt/dbs/pgsql748-slony105-AIX53-2005-06-13
-
--with-includes=/opt/dbs/readline/include:/opt/dbs/zlib/include:/usr/ccs/include:/opt/freeware/include:/usr/local/include
- --with-libraries=/opt/dbs/readline/lib:/opt/dbs/zlib/lib:/usr/ccs/lib:/opt/freeware/lib:/usr/local/lib
- --enable-thread-safety --enable-debug --enable-aix64

Note that this binary will need to have slony support which is why the
- --enable-thread-safety. We've had success compiling postgres on AIX 5.1 with identical settings. We're using gcc
3.3.2

The thread_test program fails identically:

- -bash-2.05b$ make
gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
- -Wmissing-declarations  -I../../../src/include
- -I/opt/dbs/readline/include -I/opt/dbs/zlib/include
- -I/opt/freeware/include  -c -o thread_test.o thread_test.c
In file included from thread_test.c:23:
/usr/include/pthread.h:652: error: parse error before '*' token
/usr/include/pthread.h:655: error: parse error before '*' token
/usr/include/pthread.h:658: error: parse error before '*' token
/usr/include/pthread.h:661: error: parse error before '*' token
/usr/include/pthread.h:664: error: parse error before '*' token
/usr/include/pthread.h:672: error: parse error before '*' token
/usr/include/pthread.h:675: error: parse error before '*' token
/usr/include/pthread.h:678: error: parse error before '*' token
/usr/include/pthread.h:681: error: parse error before '*' token
/usr/include/pthread.h:689: error: parse error before '*' token
/usr/include/pthread.h:693: error: parse error before '*' token
/usr/include/pthread.h:696: error: parse error before '*' token
make: *** [thread_test.o] Error 1

- --
Andrew Hammond    416-673-4138    ahammond@ca.afilias.info
Database Administrator, Afilias Canada Corp.
CB83 2838 4B67 D40F D086 3568 81FC E7E5 27AF 4A9A
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)

iD8DBQFCsd5bgfzn5SevSpoRAhKzAKC0m1lTZ96bzkpDB4grSGfOTbh3QACggNjo
E0PIJkYA5zSTD3Q3z7LQMmM=
=ax+Z
-----END PGP SIGNATURE-----

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

Re: pthreads issue when compiling 7.4.8 on AIX 5.3

От
Bruce Momjian
Дата:
I would look around in sys/types.h to see if there is a #define that is
preventing the symbol from being exported.

---------------------------------------------------------------------------

Andrew Hammond wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> I'm seeing the following errors when compiling postgres 7.4.8 (vanilla)
> on AIX 5.3
>
> make[2]: Entering directory `/opt/src/postgresql-7.4.8/src/port'
> gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
> - -Wmissing-declarations -I../../src/include -I/opt/dbs/readline/include
> - -I/opt/dbs/zlib/include -I/opt/freeware/include  -c thread.c
> In file included from thread.c:25:
> /usr/include/pthread.h:652: error: parse error before '*' token
> /usr/include/pthread.h:655: error: parse error before '*' token
> /usr/include/pthread.h:658: error: parse error before '*' token
> /usr/include/pthread.h:661: error: parse error before '*' token
> /usr/include/pthread.h:664: error: parse error before '*' token
> /usr/include/pthread.h:672: error: parse error before '*' token
> /usr/include/pthread.h:675: error: parse error before '*' token
> /usr/include/pthread.h:678: error: parse error before '*' token
> /usr/include/pthread.h:681: error: parse error before '*' token
> /usr/include/pthread.h:689: error: parse error before '*' token
> /usr/include/pthread.h:693: error: parse error before '*' token
> /usr/include/pthread.h:696: error: parse error before '*' token
> make[2]: *** [thread.o] Error 1
> make[2]: Leaving directory `/opt/src/postgresql-7.4.8/src/port'
>
> I've looked into pthread.h and it's refereing to pthread_barrier_t,
> pthread_barrierattr_t and pthread_spinlock_t. These do not exist in
> pthread.h on our 5.1 box. However they are defined in sys/types.h which
> is included up near the top pthread.h.
>
> I'm somewhat at a loss about where this could be going wrong.
>
> Configure options follow
>
> ./configure --prefix=/opt/dbs/pgsql748-slony105-AIX53-2005-06-13
> -
>
--with-includes=/opt/dbs/readline/include:/opt/dbs/zlib/include:/usr/ccs/include:/opt/freeware/include:/usr/local/include
> -
> --with-libraries=/opt/dbs/readline/lib:/opt/dbs/zlib/lib:/usr/ccs/lib:/opt/freeware/lib:/usr/local/lib
> - --enable-thread-safety --enable-debug --enable-aix64
>
> Note that this binary will need to have slony support which is why the
> - --enable-thread-safety. We've had success compiling postgres on AIX 5.1
> with identical settings. We're using gcc 3.3.2
>
> The thread_test program fails identically:
>
> - -bash-2.05b$ make
> gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
> - -Wmissing-declarations  -I../../../src/include
> - -I/opt/dbs/readline/include -I/opt/dbs/zlib/include
> - -I/opt/freeware/include  -c -o thread_test.o thread_test.c
> In file included from thread_test.c:23:
> /usr/include/pthread.h:652: error: parse error before '*' token
> /usr/include/pthread.h:655: error: parse error before '*' token
> /usr/include/pthread.h:658: error: parse error before '*' token
> /usr/include/pthread.h:661: error: parse error before '*' token
> /usr/include/pthread.h:664: error: parse error before '*' token
> /usr/include/pthread.h:672: error: parse error before '*' token
> /usr/include/pthread.h:675: error: parse error before '*' token
> /usr/include/pthread.h:678: error: parse error before '*' token
> /usr/include/pthread.h:681: error: parse error before '*' token
> /usr/include/pthread.h:689: error: parse error before '*' token
> /usr/include/pthread.h:693: error: parse error before '*' token
> /usr/include/pthread.h:696: error: parse error before '*' token
> make: *** [thread_test.o] Error 1
>
> - --
> Andrew Hammond    416-673-4138    ahammond@ca.afilias.info
> Database Administrator, Afilias Canada Corp.
> CB83 2838 4B67 D40F D086 3568 81FC E7E5 27AF 4A9A
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.1 (GNU/Linux)
>
> iD8DBQFCsd5bgfzn5SevSpoRAhKzAKC0m1lTZ96bzkpDB4grSGfOTbh3QACggNjo
> E0PIJkYA5zSTD3Q3z7LQMmM=
> =ax+Z
> -----END PGP SIGNATURE-----
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Re: pthreads issue when compiling 7.4.8 on AIX 5.3

От
Bruce Momjian
Дата:
Mohan, Ross wrote:
> Sorry to be dull-minded, but since PG is not threaded (at least on AIX)
> and works fine, why would Slony (threaded or not) have a problem? There
> aren't likely to be thread-to-thread interactions, eg.

Slony uses a threaded libpq, which is what --enable-thread-safety does.

---------------------------------------------------------------------------


>
>
> -----Original Message-----
> From: pgsql-ports-owner@postgresql.org [mailto:pgsql-ports-owner@postgresql.org] On Behalf Of Andrew Hammond
> Sent: Thursday, June 16, 2005 4:18 PM
> To: pgsql-ports@postgresql.org
> Subject: [PORTS] pthreads issue when compiling 7.4.8 on AIX 5.3
>
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> I'm seeing the following errors when compiling postgres 7.4.8 (vanilla) on AIX 5.3
>
> make[2]: Entering directory `/opt/src/postgresql-7.4.8/src/port'
> gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
> - -Wmissing-declarations -I../../src/include -I/opt/dbs/readline/include
> - -I/opt/dbs/zlib/include -I/opt/freeware/include  -c thread.c In file included from thread.c:25:
> /usr/include/pthread.h:652: error: parse error before '*' token
> /usr/include/pthread.h:655: error: parse error before '*' token
> /usr/include/pthread.h:658: error: parse error before '*' token
> /usr/include/pthread.h:661: error: parse error before '*' token
> /usr/include/pthread.h:664: error: parse error before '*' token
> /usr/include/pthread.h:672: error: parse error before '*' token
> /usr/include/pthread.h:675: error: parse error before '*' token
> /usr/include/pthread.h:678: error: parse error before '*' token
> /usr/include/pthread.h:681: error: parse error before '*' token
> /usr/include/pthread.h:689: error: parse error before '*' token
> /usr/include/pthread.h:693: error: parse error before '*' token
> /usr/include/pthread.h:696: error: parse error before '*' token
> make[2]: *** [thread.o] Error 1
> make[2]: Leaving directory `/opt/src/postgresql-7.4.8/src/port'
>
> I've looked into pthread.h and it's refereing to pthread_barrier_t, pthread_barrierattr_t and pthread_spinlock_t.
Thesedo not exist in pthread.h on our 5.1 box. However they are defined in sys/types.h which is included up near the
toppthread.h. 
>
> I'm somewhat at a loss about where this could be going wrong.
>
> Configure options follow
>
> ./configure --prefix=/opt/dbs/pgsql748-slony105-AIX53-2005-06-13
> -
--with-includes=/opt/dbs/readline/include:/opt/dbs/zlib/include:/usr/ccs/include:/opt/freeware/include:/usr/local/include
> - --with-libraries=/opt/dbs/readline/lib:/opt/dbs/zlib/lib:/usr/ccs/lib:/opt/freeware/lib:/usr/local/lib
> - --enable-thread-safety --enable-debug --enable-aix64
>
> Note that this binary will need to have slony support which is why the
> - --enable-thread-safety. We've had success compiling postgres on AIX 5.1 with identical settings. We're using gcc
3.3.2
>
> The thread_test program fails identically:
>
> - -bash-2.05b$ make
> gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
> - -Wmissing-declarations  -I../../../src/include
> - -I/opt/dbs/readline/include -I/opt/dbs/zlib/include
> - -I/opt/freeware/include  -c -o thread_test.o thread_test.c
> In file included from thread_test.c:23:
> /usr/include/pthread.h:652: error: parse error before '*' token
> /usr/include/pthread.h:655: error: parse error before '*' token
> /usr/include/pthread.h:658: error: parse error before '*' token
> /usr/include/pthread.h:661: error: parse error before '*' token
> /usr/include/pthread.h:664: error: parse error before '*' token
> /usr/include/pthread.h:672: error: parse error before '*' token
> /usr/include/pthread.h:675: error: parse error before '*' token
> /usr/include/pthread.h:678: error: parse error before '*' token
> /usr/include/pthread.h:681: error: parse error before '*' token
> /usr/include/pthread.h:689: error: parse error before '*' token
> /usr/include/pthread.h:693: error: parse error before '*' token
> /usr/include/pthread.h:696: error: parse error before '*' token
> make: *** [thread_test.o] Error 1
>
> - --
> Andrew Hammond    416-673-4138    ahammond@ca.afilias.info
> Database Administrator, Afilias Canada Corp.
> CB83 2838 4B67 D40F D086 3568 81FC E7E5 27AF 4A9A
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.1 (GNU/Linux)
>
> iD8DBQFCsd5bgfzn5SevSpoRAhKzAKC0m1lTZ96bzkpDB4grSGfOTbh3QACggNjo
> E0PIJkYA5zSTD3Q3z7LQMmM=
> =ax+Z
> -----END PGP SIGNATURE-----
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Re: pthreads issue when compiling 7.4.8 on AIX 5.3

От
"Mohan, Ross"
Дата:
Wow...<light dawning on marble head>....so this means..if I want to
do replication, I'll need to rebuild PG with --enable-thread-safety?

that's unpleasant news, since, IIRC, it didn't like it at all, first
time through.

<sigh>

Thanks for heads up.


-----Original Message-----
From: Bruce Momjian [mailto:pgman@candle.pha.pa.us]
Sent: Thursday, June 16, 2005 4:29 PM
To: Mohan, Ross
Cc: pgsql-ports@postgresql.org
Subject: Re: [PORTS] pthreads issue when compiling 7.4.8 on AIX 5.3


Mohan, Ross wrote:
> Sorry to be dull-minded, but since PG is not threaded (at least on
> AIX) and works fine, why would Slony (threaded or not) have a problem?
> There aren't likely to be thread-to-thread interactions, eg.

Slony uses a threaded libpq, which is what --enable-thread-safety does.

---------------------------------------------------------------------------


>
>
> -----Original Message-----
> From: pgsql-ports-owner@postgresql.org
> [mailto:pgsql-ports-owner@postgresql.org] On Behalf Of Andrew Hammond
> Sent: Thursday, June 16, 2005 4:18 PM
> To: pgsql-ports@postgresql.org
> Subject: [PORTS] pthreads issue when compiling 7.4.8 on AIX 5.3
>
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> I'm seeing the following errors when compiling postgres 7.4.8
> (vanilla) on AIX 5.3
>
> make[2]: Entering directory `/opt/src/postgresql-7.4.8/src/port'
> gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
> - -Wmissing-declarations -I../../src/include
> -I/opt/dbs/readline/include
> - -I/opt/dbs/zlib/include -I/opt/freeware/include  -c thread.c In file included from thread.c:25:
> /usr/include/pthread.h:652: error: parse error before '*' token
> /usr/include/pthread.h:655: error: parse error before '*' token
> /usr/include/pthread.h:658: error: parse error before '*' token
> /usr/include/pthread.h:661: error: parse error before '*' token
> /usr/include/pthread.h:664: error: parse error before '*' token
> /usr/include/pthread.h:672: error: parse error before '*' token
> /usr/include/pthread.h:675: error: parse error before '*' token
> /usr/include/pthread.h:678: error: parse error before '*' token
> /usr/include/pthread.h:681: error: parse error before '*' token
> /usr/include/pthread.h:689: error: parse error before '*' token
> /usr/include/pthread.h:693: error: parse error before '*' token
> /usr/include/pthread.h:696: error: parse error before '*' token
> make[2]: *** [thread.o] Error 1
> make[2]: Leaving directory `/opt/src/postgresql-7.4.8/src/port'
>
> I've looked into pthread.h and it's refereing to pthread_barrier_t,
> pthread_barrierattr_t and pthread_spinlock_t. These do not exist in
> pthread.h on our 5.1 box. However they are defined in sys/types.h
> which is included up near the top pthread.h.
>
> I'm somewhat at a loss about where this could be going wrong.
>
> Configure options follow
>
> ./configure --prefix=/opt/dbs/pgsql748-slony105-AIX53-2005-06-13
> -
>
--with-includes=/opt/dbs/readline/include:/opt/dbs/zlib/include:/usr/ccs/include:/opt/freeware/include:/usr/local/include
> - --with-libraries=/opt/dbs/readline/lib:/opt/dbs/zlib/lib:/usr/ccs/lib:/opt/freeware/lib:/usr/local/lib
> - --enable-thread-safety --enable-debug --enable-aix64
>
> Note that this binary will need to have slony support which is why the
> - --enable-thread-safety. We've had success compiling postgres on AIX
> 5.1 with identical settings. We're using gcc 3.3.2
>
> The thread_test program fails identically:
>
> - -bash-2.05b$ make
> gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
> - -Wmissing-declarations  -I../../../src/include
> - -I/opt/dbs/readline/include -I/opt/dbs/zlib/include
> - -I/opt/freeware/include  -c -o thread_test.o thread_test.c In file
> included from thread_test.c:23:
> /usr/include/pthread.h:652: error: parse error before '*' token
> /usr/include/pthread.h:655: error: parse error before '*' token
> /usr/include/pthread.h:658: error: parse error before '*' token
> /usr/include/pthread.h:661: error: parse error before '*' token
> /usr/include/pthread.h:664: error: parse error before '*' token
> /usr/include/pthread.h:672: error: parse error before '*' token
> /usr/include/pthread.h:675: error: parse error before '*' token
> /usr/include/pthread.h:678: error: parse error before '*' token
> /usr/include/pthread.h:681: error: parse error before '*' token
> /usr/include/pthread.h:689: error: parse error before '*' token
> /usr/include/pthread.h:693: error: parse error before '*' token
> /usr/include/pthread.h:696: error: parse error before '*' token
> make: *** [thread_test.o] Error 1
>
> - --
> Andrew Hammond    416-673-4138    ahammond@ca.afilias.info
> Database Administrator, Afilias Canada Corp.
> CB83 2838 4B67 D40F D086 3568 81FC E7E5 27AF 4A9A
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.1 (GNU/Linux)
>
> iD8DBQFCsd5bgfzn5SevSpoRAhKzAKC0m1lTZ96bzkpDB4grSGfOTbh3QACggNjo
> E0PIJkYA5zSTD3Q3z7LQMmM=
> =ax+Z
> -----END PGP SIGNATURE-----
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Re: pthreads issue when compiling 7.4.8 on AIX 5.3

От
Andrew Hammond
Дата:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Sure enough, there's some _XOPEN_SOURCE magic around them:

#if (_XOPEN_SOURCE >= 600)
typedef struct
{
#ifdef __64BIT__
        long    __sp_word[3];
#else
        int     __sp_word[6];
#endif /* __64BIT__ */
}
pthread_spinlock_t;

typedef struct
{
#ifdef __64BIT__
        long    __br_word[5];
#else
        int     __br_word[8];
#endif /* __64BIT__ */
}
pthread_barrier_t;
#endif /* _XOPEN_SOURCE >= 600 */


#if (_XOPEN_SOURCE >= 600)
typedef void *pthread_barrierattr_t;
#endif


So... I went hunting to see where _XOPEN_SOURCE is defined and found it
in standards.h which is included all over the place, including sys/types.h


/* If _XOPEN_SOURCE is defined without a value, or with a value less
 * than 500 (UNIX98), then set a value, so that #if statements will
 * work properly.
 */
#ifdef _XOPEN_SOURCE
#if ((_XOPEN_SOURCE + 0) < 500)
#undef _XOPEN_SOURCE
#define _XOPEN_SOURCE   1
#endif
#endif

#if defined(_UNIX03) || (_XOPEN_SOURCE==600)
#undef _XOPEN_SOURCE
#define _XOPEN_SOURCE   600
#undef _XOPEN_SOURCE_EXTENDED
#define _XOPEN_SOURCE_EXTENDED     1
#undef _POSIX_C_SOURCE
#define _POSIX_C_SOURCE 200112L
#undef _THREAD_SAFE
#define _THREAD_SAFE
#endif

#if defined(_UNIX98) || (_XOPEN_SOURCE==500)
#undef _XOPEN_SOURCE
#define _XOPEN_SOURCE   500
#undef _XOPEN_SOURCE_EXTENDED
#define _XOPEN_SOURCE_EXTENDED     1
#endif

#ifdef _UNIX95
#undef _XOPEN_SOURCE_EXTENDED
#define _XOPEN_SOURCE_EXTENDED     1
#endif

#if (_XOPEN_SOURCE_EXTENDED==1)
#ifndef _XOPEN_SOURCE
#define _XOPEN_SOURCE   1
#endif /* _XOPEN_SOURCE */
#endif /* _XOPEN_SOURCE_EXTENDED */

#ifdef _XOPEN_SOURCE
#ifndef _POSIX_SOURCE
#define _POSIX_SOURCE
#endif
#endif


I also made sure that it's not being defined or undefined anywhere else
in the include paths. Then, I tried overriding the _XOPEN_SOURCE
variable on the command line for gcc, but, still no luck.

- -bash-2.05b$ gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
- -Wmissing-declarations  -I../../../src/include
- -I/opt/dbs/readline/include -I/opt/dbs/zlib/include
- -I/opt/freeware/include -D _XOPEN_SOURCE=600 -c -o thread_test.o
thread_test.c
In file included from thread_test.c:23:
/usr/include/pthread.h:652: error: parse error before '*' token
/usr/include/pthread.h:655: error: parse error before '*' token
/usr/include/pthread.h:658: error: parse error before '*' token
/usr/include/pthread.h:661: error: parse error before '*' token
/usr/include/pthread.h:664: error: parse error before '*' token
/usr/include/pthread.h:672: error: parse error before '*' token
/usr/include/pthread.h:675: error: parse error before '*' token
/usr/include/pthread.h:678: error: parse error before '*' token
/usr/include/pthread.h:681: error: parse error before '*' token
/usr/include/pthread.h:689: error: parse error before '*' token
/usr/include/pthread.h:693: error: parse error before '*' token
/usr/include/pthread.h:696: error: parse error before '*' token

I'd like to believe I'm missing something really obvious here... :)

- --
Andrew Hammond    416-673-4138    ahammond@ca.afilias.info
Database Administrator, Afilias Canada Corp.
CB83 2838 4B67 D40F D086 3568 81FC E7E5 27AF 4A9A


Bruce Momjian wrote:
> I would look around in sys/types.h to see if there is a #define that is
> preventing the symbol from being exported.
>
> ---------------------------------------------------------------------------
>
> Andrew Hammond wrote:
>
> I'm seeing the following errors when compiling postgres 7.4.8 (vanilla)
> on AIX 5.3
>
> make[2]: Entering directory `/opt/src/postgresql-7.4.8/src/port'
> gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
> -Wmissing-declarations -I../../src/include -I/opt/dbs/readline/include
> -I/opt/dbs/zlib/include -I/opt/freeware/include  -c thread.c
> In file included from thread.c:25:
> /usr/include/pthread.h:652: error: parse error before '*' token
> /usr/include/pthread.h:655: error: parse error before '*' token
> /usr/include/pthread.h:658: error: parse error before '*' token
> /usr/include/pthread.h:661: error: parse error before '*' token
> /usr/include/pthread.h:664: error: parse error before '*' token
> /usr/include/pthread.h:672: error: parse error before '*' token
> /usr/include/pthread.h:675: error: parse error before '*' token
> /usr/include/pthread.h:678: error: parse error before '*' token
> /usr/include/pthread.h:681: error: parse error before '*' token
> /usr/include/pthread.h:689: error: parse error before '*' token
> /usr/include/pthread.h:693: error: parse error before '*' token
> /usr/include/pthread.h:696: error: parse error before '*' token
> make[2]: *** [thread.o] Error 1
> make[2]: Leaving directory `/opt/src/postgresql-7.4.8/src/port'
>
> I've looked into pthread.h and it's refereing to pthread_barrier_t,
> pthread_barrierattr_t and pthread_spinlock_t. These do not exist in
> pthread.h on our 5.1 box. However they are defined in sys/types.h which
> is included up near the top pthread.h.
>
> I'm somewhat at a loss about where this could be going wrong.
>
> Configure options follow
>
> ./configure --prefix=/opt/dbs/pgsql748-slony105-AIX53-2005-06-13
> -
>
--with-includes=/opt/dbs/readline/include:/opt/dbs/zlib/include:/usr/ccs/include:/opt/freeware/include:/usr/local/include
> -
> --with-libraries=/opt/dbs/readline/lib:/opt/dbs/zlib/lib:/usr/ccs/lib:/opt/freeware/lib:/usr/local/lib
> --enable-thread-safety --enable-debug --enable-aix64
>
> Note that this binary will need to have slony support which is why the
> --enable-thread-safety. We've had success compiling postgres on AIX 5.1
> with identical settings. We're using gcc 3.3.2
>
> The thread_test program fails identically:
>
> -bash-2.05b$ make
> gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
> -Wmissing-declarations  -I../../../src/include
> -I/opt/dbs/readline/include -I/opt/dbs/zlib/include
> -I/opt/freeware/include  -c -o thread_test.o thread_test.c
> In file included from thread_test.c:23:
> /usr/include/pthread.h:652: error: parse error before '*' token
> /usr/include/pthread.h:655: error: parse error before '*' token
> /usr/include/pthread.h:658: error: parse error before '*' token
> /usr/include/pthread.h:661: error: parse error before '*' token
> /usr/include/pthread.h:664: error: parse error before '*' token
> /usr/include/pthread.h:672: error: parse error before '*' token
> /usr/include/pthread.h:675: error: parse error before '*' token
> /usr/include/pthread.h:678: error: parse error before '*' token
> /usr/include/pthread.h:681: error: parse error before '*' token
> /usr/include/pthread.h:689: error: parse error before '*' token
> /usr/include/pthread.h:693: error: parse error before '*' token
> /usr/include/pthread.h:696: error: parse error before '*' token
> make: *** [thread_test.o] Error 1
>
> --
> Andrew Hammond    416-673-4138    ahammond@ca.afilias.info
> Database Administrator, Afilias Canada Corp.
> CB83 2838 4B67 D40F D086 3568 81FC E7E5 27AF 4A9A

- ---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)



-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)

iD8DBQFCse6Rgfzn5SevSpoRArEsAKCho8z4L4A8YfQ4TiISO9bs5dGs6ACgxJB4
laP2NOg4EqlFUjgnscZzWB8=
=w6xE
-----END PGP SIGNATURE-----

Re: pthreads issue when compiling 7.4.8 on AIX 5.3

От
Bruce Momjian
Дата:
You are not missing something obvious. Keep hunting to see why you are
not getting to those defines.

---------------------------------------------------------------------------

Andrew Hammond wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Sure enough, there's some _XOPEN_SOURCE magic around them:
>
> #if (_XOPEN_SOURCE >= 600)
> typedef struct
> {
> #ifdef __64BIT__
>         long    __sp_word[3];
> #else
>         int     __sp_word[6];
> #endif /* __64BIT__ */
> }
> pthread_spinlock_t;
>
> typedef struct
> {
> #ifdef __64BIT__
>         long    __br_word[5];
> #else
>         int     __br_word[8];
> #endif /* __64BIT__ */
> }
> pthread_barrier_t;
> #endif /* _XOPEN_SOURCE >= 600 */
>
>
> #if (_XOPEN_SOURCE >= 600)
> typedef void *pthread_barrierattr_t;
> #endif
>
>
> So... I went hunting to see where _XOPEN_SOURCE is defined and found it
> in standards.h which is included all over the place, including sys/types.h
>
>
> /* If _XOPEN_SOURCE is defined without a value, or with a value less
>  * than 500 (UNIX98), then set a value, so that #if statements will
>  * work properly.
>  */
> #ifdef _XOPEN_SOURCE
> #if ((_XOPEN_SOURCE + 0) < 500)
> #undef _XOPEN_SOURCE
> #define _XOPEN_SOURCE   1
> #endif
> #endif
>
> #if defined(_UNIX03) || (_XOPEN_SOURCE==600)
> #undef _XOPEN_SOURCE
> #define _XOPEN_SOURCE   600
> #undef _XOPEN_SOURCE_EXTENDED
> #define _XOPEN_SOURCE_EXTENDED     1
> #undef _POSIX_C_SOURCE
> #define _POSIX_C_SOURCE 200112L
> #undef _THREAD_SAFE
> #define _THREAD_SAFE
> #endif
>
> #if defined(_UNIX98) || (_XOPEN_SOURCE==500)
> #undef _XOPEN_SOURCE
> #define _XOPEN_SOURCE   500
> #undef _XOPEN_SOURCE_EXTENDED
> #define _XOPEN_SOURCE_EXTENDED     1
> #endif
>
> #ifdef _UNIX95
> #undef _XOPEN_SOURCE_EXTENDED
> #define _XOPEN_SOURCE_EXTENDED     1
> #endif
>
> #if (_XOPEN_SOURCE_EXTENDED==1)
> #ifndef _XOPEN_SOURCE
> #define _XOPEN_SOURCE   1
> #endif /* _XOPEN_SOURCE */
> #endif /* _XOPEN_SOURCE_EXTENDED */
>
> #ifdef _XOPEN_SOURCE
> #ifndef _POSIX_SOURCE
> #define _POSIX_SOURCE
> #endif
> #endif
>
>
> I also made sure that it's not being defined or undefined anywhere else
> in the include paths. Then, I tried overriding the _XOPEN_SOURCE
> variable on the command line for gcc, but, still no luck.
>
> - -bash-2.05b$ gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
> - -Wmissing-declarations  -I../../../src/include
> - -I/opt/dbs/readline/include -I/opt/dbs/zlib/include
> - -I/opt/freeware/include -D _XOPEN_SOURCE=600 -c -o thread_test.o
> thread_test.c
> In file included from thread_test.c:23:
> /usr/include/pthread.h:652: error: parse error before '*' token
> /usr/include/pthread.h:655: error: parse error before '*' token
> /usr/include/pthread.h:658: error: parse error before '*' token
> /usr/include/pthread.h:661: error: parse error before '*' token
> /usr/include/pthread.h:664: error: parse error before '*' token
> /usr/include/pthread.h:672: error: parse error before '*' token
> /usr/include/pthread.h:675: error: parse error before '*' token
> /usr/include/pthread.h:678: error: parse error before '*' token
> /usr/include/pthread.h:681: error: parse error before '*' token
> /usr/include/pthread.h:689: error: parse error before '*' token
> /usr/include/pthread.h:693: error: parse error before '*' token
> /usr/include/pthread.h:696: error: parse error before '*' token
>
> I'd like to believe I'm missing something really obvious here... :)
>
> - --
> Andrew Hammond    416-673-4138    ahammond@ca.afilias.info
> Database Administrator, Afilias Canada Corp.
> CB83 2838 4B67 D40F D086 3568 81FC E7E5 27AF 4A9A
>
>
> Bruce Momjian wrote:
> > I would look around in sys/types.h to see if there is a #define that is
> > preventing the symbol from being exported.
> >
> > ---------------------------------------------------------------------------
> >
> > Andrew Hammond wrote:
> >
> > I'm seeing the following errors when compiling postgres 7.4.8 (vanilla)
> > on AIX 5.3
> >
> > make[2]: Entering directory `/opt/src/postgresql-7.4.8/src/port'
> > gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
> > -Wmissing-declarations -I../../src/include -I/opt/dbs/readline/include
> > -I/opt/dbs/zlib/include -I/opt/freeware/include  -c thread.c
> > In file included from thread.c:25:
> > /usr/include/pthread.h:652: error: parse error before '*' token
> > /usr/include/pthread.h:655: error: parse error before '*' token
> > /usr/include/pthread.h:658: error: parse error before '*' token
> > /usr/include/pthread.h:661: error: parse error before '*' token
> > /usr/include/pthread.h:664: error: parse error before '*' token
> > /usr/include/pthread.h:672: error: parse error before '*' token
> > /usr/include/pthread.h:675: error: parse error before '*' token
> > /usr/include/pthread.h:678: error: parse error before '*' token
> > /usr/include/pthread.h:681: error: parse error before '*' token
> > /usr/include/pthread.h:689: error: parse error before '*' token
> > /usr/include/pthread.h:693: error: parse error before '*' token
> > /usr/include/pthread.h:696: error: parse error before '*' token
> > make[2]: *** [thread.o] Error 1
> > make[2]: Leaving directory `/opt/src/postgresql-7.4.8/src/port'
> >
> > I've looked into pthread.h and it's refereing to pthread_barrier_t,
> > pthread_barrierattr_t and pthread_spinlock_t. These do not exist in
> > pthread.h on our 5.1 box. However they are defined in sys/types.h which
> > is included up near the top pthread.h.
> >
> > I'm somewhat at a loss about where this could be going wrong.
> >
> > Configure options follow
> >
> > ./configure --prefix=/opt/dbs/pgsql748-slony105-AIX53-2005-06-13
> > -
> >
--with-includes=/opt/dbs/readline/include:/opt/dbs/zlib/include:/usr/ccs/include:/opt/freeware/include:/usr/local/include
> > -
> > --with-libraries=/opt/dbs/readline/lib:/opt/dbs/zlib/lib:/usr/ccs/lib:/opt/freeware/lib:/usr/local/lib
> > --enable-thread-safety --enable-debug --enable-aix64
> >
> > Note that this binary will need to have slony support which is why the
> > --enable-thread-safety. We've had success compiling postgres on AIX 5.1
> > with identical settings. We're using gcc 3.3.2
> >
> > The thread_test program fails identically:
> >
> > -bash-2.05b$ make
> > gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
> > -Wmissing-declarations  -I../../../src/include
> > -I/opt/dbs/readline/include -I/opt/dbs/zlib/include
> > -I/opt/freeware/include  -c -o thread_test.o thread_test.c
> > In file included from thread_test.c:23:
> > /usr/include/pthread.h:652: error: parse error before '*' token
> > /usr/include/pthread.h:655: error: parse error before '*' token
> > /usr/include/pthread.h:658: error: parse error before '*' token
> > /usr/include/pthread.h:661: error: parse error before '*' token
> > /usr/include/pthread.h:664: error: parse error before '*' token
> > /usr/include/pthread.h:672: error: parse error before '*' token
> > /usr/include/pthread.h:675: error: parse error before '*' token
> > /usr/include/pthread.h:678: error: parse error before '*' token
> > /usr/include/pthread.h:681: error: parse error before '*' token
> > /usr/include/pthread.h:689: error: parse error before '*' token
> > /usr/include/pthread.h:693: error: parse error before '*' token
> > /usr/include/pthread.h:696: error: parse error before '*' token
> > make: *** [thread_test.o] Error 1
> >
> > --
> > Andrew Hammond    416-673-4138    ahammond@ca.afilias.info
> > Database Administrator, Afilias Canada Corp.
> > CB83 2838 4B67 D40F D086 3568 81FC E7E5 27AF 4A9A
>
> - ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
>
>
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.1 (GNU/Linux)
>
> iD8DBQFCse6Rgfzn5SevSpoRArEsAKCho8z4L4A8YfQ4TiISO9bs5dGs6ACgxJB4
> laP2NOg4EqlFUjgnscZzWB8=
> =w6xE
> -----END PGP SIGNATURE-----
>
> ---------------------------(end of broadcast)---------------------------
> TIP 9: the planner will ignore your desire to choose an index scan if your
>       joining column's datatypes do not match
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Re: pthreads issue when compiling 7.4.8 on AIX 5.3

От
Christopher Browne
Дата:
In an attempt to throw the authorities off his trail, RMohan@arbinet.com ("Mohan, Ross") transmitted:
> Sorry to be dull-minded, but since PG is not threaded (at least on AIX)
> and works fine, why would Slony (threaded or not) have a problem? There
> aren't likely to be thread-to-thread interactions, eg.

The "slon" application that performs replication *IS* a multi-threaded
application where each of those threads accesses libpq.

--enable-thread-safety is *most certainly* necessary in order for
libpq to be thread-safe so that slon can operate.

That is why "thread safety" is necessary.
--
"cbbrowne","@","gmail.com"
http://linuxdatabases.info/info/slony.html
When man stands on toilet, man is high on pot. -Confucius

Re: pthreads issue when compiling 7.4.8 on AIX 5.3

От
Andrew Hammond
Дата:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Mohan, Ross wrote:
> Wow...<light dawning on marble head>....so this means..if I want to
> do replication, I'll need to rebuild PG with --enable-thread-safety?
>
> that's unpleasant news, since, IIRC, it didn't like it at all, first
> time through.
>
> <sigh>
>
> Thanks for heads up.

No problem. I haven't had any luck tracking down this issue. If you do,
I'd be very glad to hear about it.

Drew


> -----Original Message-----
> From: Bruce Momjian [mailto:pgman@candle.pha.pa.us]
> Sent: Thursday, June 16, 2005 4:29 PM
> To: Mohan, Ross
> Cc: pgsql-ports@postgresql.org
> Subject: Re: [PORTS] pthreads issue when compiling 7.4.8 on AIX 5.3
>
>
> Mohan, Ross wrote:
>
>>Sorry to be dull-minded, but since PG is not threaded (at least on
>>AIX) and works fine, why would Slony (threaded or not) have a problem?
>>There aren't likely to be thread-to-thread interactions, eg.
>
>
> Slony uses a threaded libpq, which is what --enable-thread-safety does.
>
> ---------------------------------------------------------------------------
>
>
>
>>
>>-----Original Message-----
>>From: pgsql-ports-owner@postgresql.org
>>[mailto:pgsql-ports-owner@postgresql.org] On Behalf Of Andrew Hammond
>>Sent: Thursday, June 16, 2005 4:18 PM
>>To: pgsql-ports@postgresql.org
>>Subject: [PORTS] pthreads issue when compiling 7.4.8 on AIX 5.3
>>
>>
> I'm seeing the following errors when compiling postgres 7.4.8
> (vanilla) on AIX 5.3
>
> make[2]: Entering directory `/opt/src/postgresql-7.4.8/src/port'
> gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
> -Wmissing-declarations -I../../src/include
> -I/opt/dbs/readline/include
> -I/opt/dbs/zlib/include -I/opt/freeware/include  -c thread.c In file included from thread.c:25:
> /usr/include/pthread.h:652: error: parse error before '*' token
> /usr/include/pthread.h:655: error: parse error before '*' token
> /usr/include/pthread.h:658: error: parse error before '*' token
> /usr/include/pthread.h:661: error: parse error before '*' token
> /usr/include/pthread.h:664: error: parse error before '*' token
> /usr/include/pthread.h:672: error: parse error before '*' token
> /usr/include/pthread.h:675: error: parse error before '*' token
> /usr/include/pthread.h:678: error: parse error before '*' token
> /usr/include/pthread.h:681: error: parse error before '*' token
> /usr/include/pthread.h:689: error: parse error before '*' token
> /usr/include/pthread.h:693: error: parse error before '*' token
> /usr/include/pthread.h:696: error: parse error before '*' token
> make[2]: *** [thread.o] Error 1
> make[2]: Leaving directory `/opt/src/postgresql-7.4.8/src/port'
>
> I've looked into pthread.h and it's refereing to pthread_barrier_t,
> pthread_barrierattr_t and pthread_spinlock_t. These do not exist in
> pthread.h on our 5.1 box. However they are defined in sys/types.h
> which is included up near the top pthread.h.
>
> I'm somewhat at a loss about where this could be going wrong.
>
> Configure options follow
>
> ./configure --prefix=/opt/dbs/pgsql748-slony105-AIX53-2005-06-13
> -
>
--with-includes=/opt/dbs/readline/include:/opt/dbs/zlib/include:/usr/ccs/include:/opt/freeware/include:/usr/local/include
> --with-libraries=/opt/dbs/readline/lib:/opt/dbs/zlib/lib:/usr/ccs/lib:/opt/freeware/lib:/usr/local/lib
> --enable-thread-safety --enable-debug --enable-aix64
>
> Note that this binary will need to have slony support which is why the
> --enable-thread-safety. We've had success compiling postgres on AIX
> 5.1 with identical settings. We're using gcc 3.3.2
>
> The thread_test program fails identically:
>
> -bash-2.05b$ make
> gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
> -Wmissing-declarations  -I../../../src/include
> -I/opt/dbs/readline/include -I/opt/dbs/zlib/include
> -I/opt/freeware/include  -c -o thread_test.o thread_test.c In file
> included from thread_test.c:23:
> /usr/include/pthread.h:652: error: parse error before '*' token
> /usr/include/pthread.h:655: error: parse error before '*' token
> /usr/include/pthread.h:658: error: parse error before '*' token
> /usr/include/pthread.h:661: error: parse error before '*' token
> /usr/include/pthread.h:664: error: parse error before '*' token
> /usr/include/pthread.h:672: error: parse error before '*' token
> /usr/include/pthread.h:675: error: parse error before '*' token
> /usr/include/pthread.h:678: error: parse error before '*' token
> /usr/include/pthread.h:681: error: parse error before '*' token
> /usr/include/pthread.h:689: error: parse error before '*' token
> /usr/include/pthread.h:693: error: parse error before '*' token
> /usr/include/pthread.h:696: error: parse error before '*' token
> make: *** [thread_test.o] Error 1
>
> --
> Andrew Hammond    416-673-4138    ahammond@ca.afilias.info
> Database Administrator, Afilias Canada Corp.
> CB83 2838 4B67 D40F D086 3568 81FC E7E5 27AF 4A9A

- ---------------------------(end of
broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

- ---------------------------(end of
broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)





- --
Andrew Hammond    416-673-4138    ahammond@ca.afilias.info
Database Administrator, Afilias Canada Corp.
CB83 2838 4B67 D40F D086 3568 81FC E7E5 27AF 4A9A
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (Darwin)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFCuwElgfzn5SevSpoRAoEuAJ0b2YfR9qPz8zlOY5gIoW0e/lJM9gCcCG4F
rct4f2CzomdOM7gmKwOHA0Y=
=ICyX
-----END PGP SIGNATURE-----

Re: pthreads issue when compiling 7.4.8 on AIX 5.3

От
"Mohan, Ross"
Дата:
I can build PG now...use it a bit, but CANNOT make
the tsearch2 contrib module. Kind of a pain.

But whatever I can add/say to be of assistance, I am glad to offer.

- Ross

-----Original Message-----
From: Andrew Hammond [mailto:ahammond@ca.afilias.info]
Sent: Thursday, June 23, 2005 2:36 PM
To: Mohan, Ross
Cc: pgsql-ports@postgresql.org
Subject: Re: [PORTS] pthreads issue when compiling 7.4.8 on AIX 5.3


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Mohan, Ross wrote:
> Wow...<light dawning on marble head>....so this means..if I want to do
> replication, I'll need to rebuild PG with --enable-thread-safety?
>
> that's unpleasant news, since, IIRC, it didn't like it at all, first
> time through.
>
> <sigh>
>
> Thanks for heads up.

No problem. I haven't had any luck tracking down this issue. If you do, I'd be very glad to hear about it.

Drew


> -----Original Message-----
> From: Bruce Momjian [mailto:pgman@candle.pha.pa.us]
> Sent: Thursday, June 16, 2005 4:29 PM
> To: Mohan, Ross
> Cc: pgsql-ports@postgresql.org
> Subject: Re: [PORTS] pthreads issue when compiling 7.4.8 on AIX 5.3
>
>
> Mohan, Ross wrote:
>
>>Sorry to be dull-minded, but since PG is not threaded (at least on
>>AIX) and works fine, why would Slony (threaded or not) have a problem?
>>There aren't likely to be thread-to-thread interactions, eg.
>
>
> Slony uses a threaded libpq, which is what --enable-thread-safety
> does.
>
> ----------------------------------------------------------------------
> -----
>
>
>
>>
>>-----Original Message-----
>>From: pgsql-ports-owner@postgresql.org
>>[mailto:pgsql-ports-owner@postgresql.org] On Behalf Of Andrew Hammond
>>Sent: Thursday, June 16, 2005 4:18 PM
>>To: pgsql-ports@postgresql.org
>>Subject: [PORTS] pthreads issue when compiling 7.4.8 on AIX 5.3
>>
>>
> I'm seeing the following errors when compiling postgres 7.4.8
> (vanilla) on AIX 5.3
>
> make[2]: Entering directory `/opt/src/postgresql-7.4.8/src/port'
> gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
> -Wmissing-declarations -I../../src/include -I/opt/dbs/readline/include
> -I/opt/dbs/zlib/include -I/opt/freeware/include  -c thread.c In file included from thread.c:25:
> /usr/include/pthread.h:652: error: parse error before '*' token
> /usr/include/pthread.h:655: error: parse error before '*' token
> /usr/include/pthread.h:658: error: parse error before '*' token
> /usr/include/pthread.h:661: error: parse error before '*' token
> /usr/include/pthread.h:664: error: parse error before '*' token
> /usr/include/pthread.h:672: error: parse error before '*' token
> /usr/include/pthread.h:675: error: parse error before '*' token
> /usr/include/pthread.h:678: error: parse error before '*' token
> /usr/include/pthread.h:681: error: parse error before '*' token
> /usr/include/pthread.h:689: error: parse error before '*' token
> /usr/include/pthread.h:693: error: parse error before '*' token
> /usr/include/pthread.h:696: error: parse error before '*' token
> make[2]: *** [thread.o] Error 1
> make[2]: Leaving directory `/opt/src/postgresql-7.4.8/src/port'
>
> I've looked into pthread.h and it's refereing to pthread_barrier_t,
> pthread_barrierattr_t and pthread_spinlock_t. These do not exist in
> pthread.h on our 5.1 box. However they are defined in sys/types.h
> which is included up near the top pthread.h.
>
> I'm somewhat at a loss about where this could be going wrong.
>
> Configure options follow
>
> ./configure --prefix=/opt/dbs/pgsql748-slony105-AIX53-2005-06-13
> -
>
--with-includes=/opt/dbs/readline/include:/opt/dbs/zlib/include:/usr/ccs/include:/opt/freeware/include:/usr/local/include
> --with-libraries=/opt/dbs/readline/lib:/opt/dbs/zlib/lib:/usr/ccs/lib:/opt/freeware/lib:/usr/local/lib
> --enable-thread-safety --enable-debug --enable-aix64
>
> Note that this binary will need to have slony support which is why the
> --enable-thread-safety. We've had success compiling postgres on AIX
> 5.1 with identical settings. We're using gcc 3.3.2
>
> The thread_test program fails identically:
>
> -bash-2.05b$ make
> gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
> -Wmissing-declarations  -I../../../src/include
> -I/opt/dbs/readline/include -I/opt/dbs/zlib/include
> -I/opt/freeware/include  -c -o thread_test.o thread_test.c In file
> included from thread_test.c:23:
> /usr/include/pthread.h:652: error: parse error before '*' token
> /usr/include/pthread.h:655: error: parse error before '*' token
> /usr/include/pthread.h:658: error: parse error before '*' token
> /usr/include/pthread.h:661: error: parse error before '*' token
> /usr/include/pthread.h:664: error: parse error before '*' token
> /usr/include/pthread.h:672: error: parse error before '*' token
> /usr/include/pthread.h:675: error: parse error before '*' token
> /usr/include/pthread.h:678: error: parse error before '*' token
> /usr/include/pthread.h:681: error: parse error before '*' token
> /usr/include/pthread.h:689: error: parse error before '*' token
> /usr/include/pthread.h:693: error: parse error before '*' token
> /usr/include/pthread.h:696: error: parse error before '*' token
> make: *** [thread_test.o] Error 1
>
> --
> Andrew Hammond    416-673-4138    ahammond@ca.afilias.info
> Database Administrator, Afilias Canada Corp.
> CB83 2838 4B67 D40F D086 3568 81FC E7E5 27AF 4A9A

- ---------------------------(end of
broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

- ---------------------------(end of
broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)





- --
Andrew Hammond    416-673-4138    ahammond@ca.afilias.info
Database Administrator, Afilias Canada Corp.
CB83 2838 4B67 D40F D086 3568 81FC E7E5 27AF 4A9A
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (Darwin)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFCuwElgfzn5SevSpoRAoEuAJ0b2YfR9qPz8zlOY5gIoW0e/lJM9gCcCG4F
rct4f2CzomdOM7gmKwOHA0Y=
=ICyX
-----END PGP SIGNATURE-----

Re: pthreads issue when compiling 7.4.8 on AIX 5.3 -- RESOLVED

От
Andrew Hammond
Дата:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I spoke with our IBM sales reps about this and they suggested we upgrade
GCC to 3.3.3 or later. Their PMR for this is PMR25534,077,649 if you
happen to need the reference. We upgraded to 4.0.1 and got it to compile.

We're now seeing the same socket bug as everyone else. Chris Browne
filed a bug report with IBM and has opened PMR29657,500. We hope to see
resolution shortly.

- --
Andrew Hammond    416-673-4138    ahammond@ca.afilias.info
Database Administrator, Afilias Canada Corp.
CB83 2838 4B67 D40F D086 3568 81FC E7E5 27AF 4A9A


Andrew Hammond wrote:
> Sure enough, there's some _XOPEN_SOURCE magic around them:
>
> #if (_XOPEN_SOURCE >= 600)
> typedef struct
> {
> #ifdef __64BIT__
>         long    __sp_word[3];
> #else
>         int     __sp_word[6];
> #endif /* __64BIT__ */
> }
> pthread_spinlock_t;
>
> typedef struct
> {
> #ifdef __64BIT__
>         long    __br_word[5];
> #else
>         int     __br_word[8];
> #endif /* __64BIT__ */
> }
> pthread_barrier_t;
> #endif /* _XOPEN_SOURCE >= 600 */
>
>
> #if (_XOPEN_SOURCE >= 600)
> typedef void *pthread_barrierattr_t;
> #endif
>
>
> So... I went hunting to see where _XOPEN_SOURCE is defined and found it
> in standards.h which is included all over the place, including sys/types.h
>
>
> /* If _XOPEN_SOURCE is defined without a value, or with a value less
>  * than 500 (UNIX98), then set a value, so that #if statements will
>  * work properly.
>  */
> #ifdef _XOPEN_SOURCE
> #if ((_XOPEN_SOURCE + 0) < 500)
> #undef _XOPEN_SOURCE
> #define _XOPEN_SOURCE   1
> #endif
> #endif
>
> #if defined(_UNIX03) || (_XOPEN_SOURCE==600)
> #undef _XOPEN_SOURCE
> #define _XOPEN_SOURCE   600
> #undef _XOPEN_SOURCE_EXTENDED
> #define _XOPEN_SOURCE_EXTENDED     1
> #undef _POSIX_C_SOURCE
> #define _POSIX_C_SOURCE 200112L
> #undef _THREAD_SAFE
> #define _THREAD_SAFE
> #endif
>
> #if defined(_UNIX98) || (_XOPEN_SOURCE==500)
> #undef _XOPEN_SOURCE
> #define _XOPEN_SOURCE   500
> #undef _XOPEN_SOURCE_EXTENDED
> #define _XOPEN_SOURCE_EXTENDED     1
> #endif
>
> #ifdef _UNIX95
> #undef _XOPEN_SOURCE_EXTENDED
> #define _XOPEN_SOURCE_EXTENDED     1
> #endif
>
> #if (_XOPEN_SOURCE_EXTENDED==1)
> #ifndef _XOPEN_SOURCE
> #define _XOPEN_SOURCE   1
> #endif /* _XOPEN_SOURCE */
> #endif /* _XOPEN_SOURCE_EXTENDED */
>
> #ifdef _XOPEN_SOURCE
> #ifndef _POSIX_SOURCE
> #define _POSIX_SOURCE
> #endif
> #endif
>
>
> I also made sure that it's not being defined or undefined anywhere else
> in the include paths. Then, I tried overriding the _XOPEN_SOURCE
> variable on the command line for gcc, but, still no luck.
>
> -bash-2.05b$ gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
> -Wmissing-declarations  -I../../../src/include
> -I/opt/dbs/readline/include -I/opt/dbs/zlib/include
> -I/opt/freeware/include -D _XOPEN_SOURCE=600 -c -o thread_test.o
> thread_test.c
> In file included from thread_test.c:23:
> /usr/include/pthread.h:652: error: parse error before '*' token
> /usr/include/pthread.h:655: error: parse error before '*' token
> /usr/include/pthread.h:658: error: parse error before '*' token
> /usr/include/pthread.h:661: error: parse error before '*' token
> /usr/include/pthread.h:664: error: parse error before '*' token
> /usr/include/pthread.h:672: error: parse error before '*' token
> /usr/include/pthread.h:675: error: parse error before '*' token
> /usr/include/pthread.h:678: error: parse error before '*' token
> /usr/include/pthread.h:681: error: parse error before '*' token
> /usr/include/pthread.h:689: error: parse error before '*' token
> /usr/include/pthread.h:693: error: parse error before '*' token
> /usr/include/pthread.h:696: error: parse error before '*' token
>
> I'd like to believe I'm missing something really obvious here... :)
>
> --
> Andrew Hammond    416-673-4138    ahammond@ca.afilias.info
> Database Administrator, Afilias Canada Corp.
> CB83 2838 4B67 D40F D086 3568 81FC E7E5 27AF 4A9A
>
>
> Bruce Momjian wrote:
>
>>>I would look around in sys/types.h to see if there is a #define that is
>>>preventing the symbol from being exported.
>>>
>>>---------------------------------------------------------------------------
>>>
>>>Andrew Hammond wrote:
>>>
>>>I'm seeing the following errors when compiling postgres 7.4.8 (vanilla)
>>>on AIX 5.3
>>>
>>>make[2]: Entering directory `/opt/src/postgresql-7.4.8/src/port'
>>>gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
>>>-Wmissing-declarations -I../../src/include -I/opt/dbs/readline/include
>>>-I/opt/dbs/zlib/include -I/opt/freeware/include  -c thread.c
>>>In file included from thread.c:25:
>>>/usr/include/pthread.h:652: error: parse error before '*' token
>>>/usr/include/pthread.h:655: error: parse error before '*' token
>>>/usr/include/pthread.h:658: error: parse error before '*' token
>>>/usr/include/pthread.h:661: error: parse error before '*' token
>>>/usr/include/pthread.h:664: error: parse error before '*' token
>>>/usr/include/pthread.h:672: error: parse error before '*' token
>>>/usr/include/pthread.h:675: error: parse error before '*' token
>>>/usr/include/pthread.h:678: error: parse error before '*' token
>>>/usr/include/pthread.h:681: error: parse error before '*' token
>>>/usr/include/pthread.h:689: error: parse error before '*' token
>>>/usr/include/pthread.h:693: error: parse error before '*' token
>>>/usr/include/pthread.h:696: error: parse error before '*' token
>>>make[2]: *** [thread.o] Error 1
>>>make[2]: Leaving directory `/opt/src/postgresql-7.4.8/src/port'
>>>
>>>I've looked into pthread.h and it's refereing to pthread_barrier_t,
>>>pthread_barrierattr_t and pthread_spinlock_t. These do not exist in
>>>pthread.h on our 5.1 box. However they are defined in sys/types.h which
>>>is included up near the top pthread.h.
>>>
>>>I'm somewhat at a loss about where this could be going wrong.
>>>
>>>Configure options follow
>>>
>>>./configure --prefix=/opt/dbs/pgsql748-slony105-AIX53-2005-06-13
>>>-

>>>--with-includes=/opt/dbs/readline/include:/opt/dbs/zlib/include:/usr/ccs/include:/opt/freeware/include:/usr/local/include
>>>-
>>>--with-libraries=/opt/dbs/readline/lib:/opt/dbs/zlib/lib:/usr/ccs/lib:/opt/freeware/lib:/usr/local/lib
>>>--enable-thread-safety --enable-debug --enable-aix64
>>>
>>>Note that this binary will need to have slony support which is why the
>>>--enable-thread-safety. We've had success compiling postgres on AIX 5.1
>>>with identical settings. We're using gcc 3.3.2
>>>
>>>The thread_test program fails identically:
>>>
>>>-bash-2.05b$ make
>>>gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
>>>-Wmissing-declarations  -I../../../src/include
>>>-I/opt/dbs/readline/include -I/opt/dbs/zlib/include
>>>-I/opt/freeware/include  -c -o thread_test.o thread_test.c
>>>In file included from thread_test.c:23:
>>>/usr/include/pthread.h:652: error: parse error before '*' token
>>>/usr/include/pthread.h:655: error: parse error before '*' token
>>>/usr/include/pthread.h:658: error: parse error before '*' token
>>>/usr/include/pthread.h:661: error: parse error before '*' token
>>>/usr/include/pthread.h:664: error: parse error before '*' token
>>>/usr/include/pthread.h:672: error: parse error before '*' token
>>>/usr/include/pthread.h:675: error: parse error before '*' token
>>>/usr/include/pthread.h:678: error: parse error before '*' token
>>>/usr/include/pthread.h:681: error: parse error before '*' token
>>>/usr/include/pthread.h:689: error: parse error before '*' token
>>>/usr/include/pthread.h:693: error: parse error before '*' token
>>>/usr/include/pthread.h:696: error: parse error before '*' token
>>>make: *** [thread_test.o] Error 1
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (Darwin)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFC1SOCgfzn5SevSpoRAjsGAKDG3EkPdnxgIIC+z8vpCTfLoi7iIACeOUs1
pomEePohqz7wE5ly7+lVQ8k=
=M1Qr
-----END PGP SIGNATURE-----