FAQ
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 [email protected]
Database Administrator, Afilias Canada Corp.
CB83 2838 4B67 D40F D086 3568 81FC E7E5 27AF 4A9A

Search Discussions

  • Mohan, Ross at Jun 16, 2005 at 8:27 pm
    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: [email protected] On Behalf Of Andrew Hammond
    Sent: Thursday, June 16, 2005 4:18 PM
    To: [email protected]
    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 [email protected]
    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 [email protected])
  • Bruce Momjian at Jun 16, 2005 at 8:28 pm

    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: [email protected] On Behalf Of Andrew Hammond
    Sent: Thursday, June 16, 2005 4:18 PM
    To: [email protected]
    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 [email protected]
    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 [email protected])

    ---------------------------(end of broadcast)---------------------------
    TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to [email protected])
    --
    Bruce Momjian | http://candle.pha.pa.us
    [email protected] | (610) 359-1001
    + If your life is a hard drive, | 13 Roberts Road
    + Christ can be your backup. | Newtown Square, Pennsylvania 19073
  • Chris Browne at Jun 17, 2005 at 2:50 am

    In an attempt to throw the authorities off his trail, [email protected] ("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
  • Bruce Momjian at Jun 16, 2005 at 8:28 pm
    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 [email protected]
    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 [email protected])
    --
    Bruce Momjian | http://candle.pha.pa.us
    [email protected] | (610) 359-1001
    + If your life is a hard drive, | 13 Roberts Road
    + Christ can be your backup. | Newtown Square, Pennsylvania 19073
  • Andrew Hammond at Jun 16, 2005 at 9:26 pm
    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 [email protected]
    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 [email protected]
    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 [email protected])
  • Bruce Momjian at Jun 16, 2005 at 11:52 pm
    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 [email protected]
    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 [email protected]
    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 [email protected])



    -----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
    [email protected] | (610) 359-1001
    + If your life is a hard drive, | 13 Roberts Road
    + Christ can be your backup. | Newtown Square, Pennsylvania 19073
  • Andrew Hammond at Jul 13, 2005 at 2:22 pm
    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 [email protected]
    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 [email protected]
    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
  • Mohan, Ross at Jun 16, 2005 at 8:49 pm
    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
    Sent: Thursday, June 16, 2005 4:29 PM
    To: Mohan, Ross
    Cc: [email protected]
    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: [email protected]
    On Behalf Of Andrew Hammond
    Sent: Thursday, June 16, 2005 4:18 PM
    To: [email protected]
    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 [email protected]
    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 [email protected])

    ---------------------------(end of
    broadcast)---------------------------
    TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to [email protected])
    --
    Bruce Momjian | http://candle.pha.pa.us
    [email protected] | (610) 359-1001
    + If your life is a hard drive, | 13 Roberts Road
    + Christ can be your backup. | Newtown Square, Pennsylvania 19073
  • Andrew Hammond at Jun 23, 2005 at 6:36 pm

    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
    Sent: Thursday, June 16, 2005 4:29 PM
    To: Mohan, Ross
    Cc: [email protected]
    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: [email protected]
    On Behalf Of Andrew Hammond
    Sent: Thursday, June 16, 2005 4:18 PM
    To: [email protected]
    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 [email protected]
    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 [email protected])

    - ---------------------------(end of
    broadcast)---------------------------
    TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to [email protected])





    - --
    Andrew Hammond 416-673-4138 [email protected]
    Database Administrator, Afilias Canada Corp.
    CB83 2838 4B67 D40F D086 3568 81FC E7E5 27AF 4A9A
  • Mohan, Ross at Jun 23, 2005 at 7:04 pm
    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
    Sent: Thursday, June 23, 2005 2:36 PM
    To: Mohan, Ross
    Cc: [email protected]
    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
    Sent: Thursday, June 16, 2005 4:29 PM
    To: Mohan, Ross
    Cc: [email protected]
    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: [email protected]
    On Behalf Of Andrew Hammond
    Sent: Thursday, June 16, 2005 4:18 PM
    To: [email protected]
    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 [email protected]
    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 [email protected])

    - ---------------------------(end of
    broadcast)---------------------------
    TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to [email protected])





    - --
    Andrew Hammond 416-673-4138 [email protected]
    Database Administrator, Afilias Canada Corp.
    CB83 2838 4B67 D40F D086 3568 81FC E7E5 27AF 4A9A
  • Mohan, Ross at Jul 13, 2005 at 3:28 pm
    *thank you* !!

    Please keep us posted on socket bug progress, is that possible?



    -----Original Message-----
    From: [email protected] On Behalf Of Andrew Hammond
    Sent: Wednesday, July 13, 2005 10:22 AM
    To: [email protected]
    Subject: Re: [PORTS] pthreads issue when compiling 7.4.8 on AIX 5.3 -- RESOLVED


    -----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 [email protected]
    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 [email protected]
    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
    ---------------------------(end of broadcast)---------------------------
    TIP 6: explain analyze is your friend
  • Chris Browne at Jul 14, 2005 at 3:04 pm

    "Mohan, Ross" writes:
    *thank you* !!

    Please keep us posted on socket bug progress, is that possible?
    More news today...

    ---------------------------------------------------------------------
    "We have escalated PMR29657 and now have a resolution.

    We have spoken directly with the lead developer of the socket.h header
    files:

    The immediate resolution is to alter _SS_MAXSIZE to = 1025 in
    /usr/include/sys/socket.h (as was suggested by Chris Browne).

    This will resolve the immediate problem.

    IBM will be providing a fix in the next maintenance release with an
    updated socket.h."
    -----------------------------------------------------------------------

    That differs a bit from what Bull suggested a while back, though I
    wouldn't be surprised (and would be quite pleased) if the next AIX 5.3
    maintenance release used some sort of calculated value rather than
    1025.

    In any case, s/128/1025/ seems to be the resolution to the problem,
    for now. It'll presumably have the same effect for PostgreSQL 8.x
    too.

    I'm not sure if it's worth adding a test case into the PostgreSQL
    configure script to watch for this issue; if it is, the following
    would characterize the test...

    ---------------------------------------------------------------
    #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");
    }
    ---------------------------------------------------------------

    I suppose I should submit a patch to the AIX FAQ to reflect this
    issue...
    --
    (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/>

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouppgsql-ports @
categoriespostgresql
postedJun 16, '05 at 8:17p
activeJul 14, '05 at 3:04p
posts13
users4
websitepostgresql.org
irc#postgresql

People

Translate

site design / logo © 2023 Grokbase