8.5alpha3 bug in information_schema.table_privileges
pagila=# select * from information_schema.table_privileges;
TRAP: FailedAssertion("!(idx[0] < (((int *) (((char *) (acl)) +
sizeof(ArrayType)))[0]))", File: "acl.c", Line: 1740)
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
On a build without assertions it dumps core, which gives a backtrace like so:
(dbx) where
current thread: t@1
=>[1] aclexplode(fcinfo = ???) (optimized), at 0x7345fa (line ~1743) in
"acl.c"
[2]: ExecMakeFunctionResult(fcache = ???, econtext = ???, isNull = ???, isDone = ???) (optimized), at 0x65ae76 (line ~1590) in "execQual.c"
isDone = ???) (optimized), at 0x65ae76 (line ~1590) in "execQual.c"
[3]: ExecEvalFieldSelect(fstate = ???, econtext = ???, isNull = ???, isDone = ???) (optimized), at 0x65e57c (line ~3759) in "execQual.c"
???) (optimized), at 0x65e57c (line ~3759) in "execQual.c"
[4]: ExecTargetList(targetlist = ???, econtext = ???, values = ???, isnull = ???, itemIsDone = ???, isDone = ???) (optimized), at 0x6600b8 (line ~4981) in "execQual.c"
???, itemIsDone = ???, isDone = ???) (optimized), at 0x6600b8 (line ~4981) in
"execQual.c"
[5]: ExecProject(projInfo = ???, isDone = ???) (optimized), at 0x660a2d (line ~5198) in "execQual.c"
~5198) in "execQual.c"
[6]: ExecScan(node = ???, accessMtd = ???, recheckMtd = ???) (optimized), at 0x660b57 (line ~139) in "execScan.c"
0x660b57 (line ~139) in "execScan.c"
[7]: ExecSeqScan(node = ???) (optimized), at 0x671c5f (line ~116) in "nodeSeqscan.c"
"nodeSeqscan.c"
[8]: ExecProcNode(node = ???) (optimized), at 0x658cc9 (line ~378) in "execProcnode.c"
"execProcnode.c"
[9]: SubqueryNext(node = ???) (optimized), at 0x674fd8 (line ~53) in "nodeSubqueryscan.c"
"nodeSubqueryscan.c"
[10]: ExecScan(node = ???, accessMtd = ???, recheckMtd = ???) (optimized), at 0x660d3d (line ~82) in "execScan.c"
0x660d3d (line ~82) in "execScan.c"
[11]: ExecSubqueryScan(node = ???) (optimized), at 0x675007 (line ~87) in "nodeSubqueryscan.c"
"nodeSubqueryscan.c"
[12]: ExecProcNode(node = ???) (optimized), at 0x658c95 (line ~396) in "execProcnode.c"
"execProcnode.c"
[13]: ExecNestLoop(node = ???) (optimized), at 0x670ef0 (line ~154) in "nodeNestloop.c"
"nodeNestloop.c"
[14]: ExecProcNode(node = ???) (optimized), at 0x658c48 (line ~419) in "execProcnode.c"
"execProcnode.c"
[15]: ExecNestLoop(node = ???) (optimized), at 0x670eb4 (line ~120) in "nodeNestloop.c"
"nodeNestloop.c"
[16]: ExecProcNode(node = ???) (optimized), at 0x658c48 (line ~419) in "execProcnode.c"
"execProcnode.c"
[17]: ExecNestLoop(node = ???) (optimized), at 0x670eb4 (line ~120) in "nodeNestloop.c"
"nodeNestloop.c"
[18]: ExecProcNode(node = ???) (optimized), at 0x658c48 (line ~419) in "execProcnode.c"
"execProcnode.c"
[19]: ExecutePlan(estate = ???, planstate = ???, operation = ???, sendTuples = ???, numberTuples = ???, direction = ???, dest = ???) (optimized), at 0x657220 (line ~1190) in "execMain.c"
= ???, numberTuples = ???, direction = ???, dest = ???) (optimized), at
0x657220 (line ~1190) in "execMain.c"
[20]: standard_ExecutorRun(queryDesc = ???, direction = ???, count = ???) (optimized), at 0x6561e8 (line ~284) in "execMain.c"
(optimized), at 0x6561e8 (line ~284) in "execMain.c"
[21]: ExecutorRun(queryDesc = ???, direction = ???, count = ???) (optimized), at 0x65610b (line ~227) in "execMain.c"
at 0x65610b (line ~227) in "execMain.c"
[22]: PortalRunSelect(portal = ???, forward = ???, count = ???, dest = ???) (optimized), at 0x71f8a4 (line ~953) in "pquery.c"
(optimized), at 0x71f8a4 (line ~953) in "pquery.c"
[23]: PortalRun(portal = ???, count = ???, isTopLevel = ???, dest = ???, altdest = ???, completionTag = ???) (optimized), at 0x71f4b2 (line ~779) in "pquery.c"
altdest = ???, completionTag = ???) (optimized), at 0x71f4b2 (line ~779) in
"pquery.c"
[24]: exec_simple_query(query_string = ???) (optimized), at 0x719ed6 (line ~1052) in "postgres.c"
~1052) in "postgres.c"
[25]: PostgresMain(argc = ???, argv = ???, username = ???) (optimized), at 0x71de04 (line ~3671) in "postgres.c"
0x71de04 (line ~3671) in "postgres.c"
[26]: BackendRun(port = ???) (optimized), at 0x6e9b57 (line ~3369) in "postmaster.c"
"postmaster.c"
[27]: BackendStartup(port = ???) (optimized), at 0x6e94a9 (line ~3076) in "postmaster.c"
"postmaster.c"
[28]: ServerLoop() (optimized), at 0x6e709e (line ~1400) in "postmaster.c"
[29]: PostmasterMain(argc = ???, argv = ???) (optimized), at 0x6e675f (line ~1065) in "postmaster.c"
~1065) in "postmaster.c"
[30]: main(argc = ???, argv = ???) (optimized), at 0x688336 (line ~188) in "main.c"
"main.c"
Both of those systems run Solaris, though one was compiled with gcc, the other
with SunStudio. I can probably dig up more info if needed.
Oh, seems it might be related to one of:
http://git.postgresql.org/gitweb?p=postgresql.git&a=search&h=HEAD&st=commit&s=aclexplode
HTH
--
Robert Treat
Conjecture: http://www.xzilla.net
Consulting: http://www.omniti.com
Robert Treat <xzilla@users.sourceforge.net> writes:
pagila=# select * from information_schema.table_privileges;
TRAP: FailedAssertion("!(idx[0] < (((int *) (((char *) (acl)) +
sizeof(ArrayType)))[0]))", File: "acl.c", Line: 1740)
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
Hmm, looks like somebody forgot to consider the case of a zero-element
ACL array ...
regards, tom lane