Lists: | pgsql-hackerspgsql-ports |
---|
From: | Seneca Cunningham <scunning(at)ca(dot)afilias(dot)info> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Cc: | pgsql-ports(at)postgresql(dot)org |
Subject: | memcpy SEGV on AIX 5.3 |
Date: | 2005-10-24 22:17:04 |
Message-ID: | 435D5D60.7040800@ca.afilias.info |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-hackers pgsql-ports |
On an powerPC AIX 5.3 box, initdb from 8.1beta4 segfaults at
src/backend/utils/hash/dynahash.c:673. No segfaults occur and all 98
regression tests pass if a test is added to see if keycopy is memcpy and
if it is, go through a loop memcpying one byte at a time instead of
memcpying everything at once.
Configuration details:
-bash-2.05b$ gcc -v
Using built-in specs.
Target: powerpc-ibm-aix5.3.0.0
Configured with: /opt/src/gcc4/gcc-4.0.1/configure
--prefix=/opt/dbs/gcc4 --enable-languages=c,c++
Thread model: aix
gcc version 4.0.1
-bash-2.05b$ oslevel -r
5300-03
./configure --prefix=/opt/dbs/pgsql81b4-afilias-AIX53-2005-10-24
--with-includes=/opt/freeware/include --enable-debug
--enable-thread-safety --with-libraries=/opt/freeware/lib --enable-casert
InitPostgres
`-> RelationCacheInitialize
`-> formrdesc
`-> RelationCacheInsert
`-> hash_search
`-> keycopy (keycopy == memcpy)
--- dynahash.c.orig 2005-10-14 22:49:33.000000000 -0400
+++ dynahash.c 2005-10-24 18:00:51.785106864 -0400
@@ -670,7 +670,14 @@
/* copy key into record */
currBucket->hashvalue = hashvalue;
- hashp->keycopy(ELEMENTKEY(currBucket), keyPtr, keysize);
+ if (hashp->keycopy == memcpy)
+ {
+ int tempfoo;
+ for (tempfoo = 0; tempfoo < keysize; tempfoo++)
+ memcpy(ELEMENTKEY(currBucket)+tempfoo,
keyPtr+tempfoo, 1);
+ }
+ else
+ hashp->keycopy(ELEMENTKEY(currBucket), keyPtr, keysize);
/* caller is expected to fill the data field on return */
--
Seneca Cunningham
scunning(at)ca(dot)afilias(dot)info
From: | Stefan Kaltenbrunner <mm-mailinglist(at)madness(dot)at> |
---|---|
To: | Seneca Cunningham <scunning(at)ca(dot)afilias(dot)info> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: memcpy SEGV on AIX 5.3 |
Date: | 2005-10-25 18:39:55 |
Message-ID: | 435E7BFB.1090207@madness.at |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-hackers pgsql-ports |
Seneca Cunningham wrote:
> On an powerPC AIX 5.3 box, initdb from 8.1beta4 segfaults at
> src/backend/utils/hash/dynahash.c:673. No segfaults occur and all 98
> regression tests pass if a test is added to see if keycopy is memcpy and
> if it is, go through a loop memcpying one byte at a time instead of
> memcpying everything at once.
looks like I'm seeing a similiar problem(using -HEAD) on AIX 5.3ML3
using the IBM AIX c-compiler. initdb just hangs after "selecting default
max_connections ..." in a 100% CPU-loop.
Stefan
From: | Stefan Kaltenbrunner <stefan(at)kaltenbrunner(dot)cc> |
---|---|
To: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Cc: | Seneca Cunningham <scunning(at)ca(dot)afilias(dot)info> |
Subject: | Re: memcpy SEGV on AIX 5.3 |
Date: | 2005-10-26 07:02:32 |
Message-ID: | 435F2A08.6040309@kaltenbrunner.cc |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-hackers pgsql-ports |
Stefan Kaltenbrunner wrote:
> Seneca Cunningham wrote:
>
>>On an powerPC AIX 5.3 box, initdb from 8.1beta4 segfaults at
>>src/backend/utils/hash/dynahash.c:673. No segfaults occur and all 98
>>regression tests pass if a test is added to see if keycopy is memcpy and
>>if it is, go through a loop memcpying one byte at a time instead of
>>memcpying everything at once.
>
>
> looks like I'm seeing a similiar problem(using -HEAD) on AIX 5.3ML3
> using the IBM AIX c-compiler. initdb just hangs after "selecting default
> max_connections ..." in a 100% CPU-loop.
yeah this seems to be the very same issue. A backtrace of a stuck
initdb-process looks like:
(gdb) bt
#0 0x10006f10 in bcopy ()
#1 0x1001d398 in hash_search (hashp=0x1001d85c, keyPtr=0xf020f9fc,
action=804399456, foundPtr=0x20029d78 "")
at dynahash.c:673
#2 0x100a5e58 in formrdesc (relationName=0x2006bf38 "t\emplat\e1",
relationReltype=0, hasoids=0 '\0', natts=0,
att=0x200100f8) at relcache.c:1295
#3 0x100a818c in RelationCacheInitialize () at relcache.c:2160
#4 0x102016ec in InitPostgres (dbname=0xd025b7f0 "\200A", username=0x2
"") at postinit.c:424
#5 0x102009e8 in BootstrapMain (argc=271528, argv=0xb0002) at
bootstrap.c:445
#6 0x10000578 in main (argc=0, argv=0x0) at main.c:285
#7 0x1000022c in __start ()
Stefan