Re: ERROR: invalid memory alloc request size 0

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "John Hagstrand" <john(dot)hagstrand(at)interageresearch(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: ERROR: invalid memory alloc request size 0
Date: 2004-04-08 18:38:22
Message-ID: 16142.1081449502@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

"John Hagstrand" <john(dot)hagstrand(at)interageresearch(dot)com> writes:
> How do I get a stack trace?

Assuming you're using a system that has gdb ---

Start psql in one terminal window. Determine the PID of the backend
process attached to it (ps and/or the pg_stat_activity view will help
you here). In another window, become the postgres user, and run gdb
to attach to the process:
gdb /path/to/postgres-executable PID-of-process
... gdb prints a bunch of junk and then prompts for a command ...
gdb>
At this point issue two commands:
b errfinish
cont
Now go back to the psql window and issue the troublesome command. gdb
should pop up reporting a breakpoint stop at errfinish (and your psql
session will be hung). In gdb issue a "bt" command to get a backtrace.
Copy and paste the output, send it along. Issue "quit" to gdb to get
out of it, or "cont" if you want to inspect more errors.

A typical example gdb session is attached. Note that you won't get this
detailed a trace unless you compiled with --enable-debug. However, if
you don't see any routine names at all (just numbers) then you've got an
executable that was "stripped" of all symbolic information. Such a
trace will be useless, unfortunately; you'd have to recompile at least
an unstripped binary to tell me anything.

regards, tom lane

$ gdb /home/postgres/testversion/bin/postgres 16088
Attaching to program: /home/postgres/testversion/bin/postgres, process 16088

warning: The shared libraries were not privately mapped; setting a
breakpoint in a shared library will not work until you rerun the program.

warning: Can't find file postmaster referenced in dld_list.
Reading symbols from /usr/lib/libc.1...done.
Reading symbols from /usr/local/lib/libz.sl...done.
Reading symbols from /usr/lib/libdld.1...done.
0xc0142dd8 in ?? () from /usr/lib/libc.1
(gdb) b errfinish
Breakpoint 1 at 0x2a194c: file elog.c, line 311.
(gdb) cont
Continuing.

Breakpoint 1, errfinish (dummy=0) at elog.c:311
311 int elevel = edata->elevel;
(gdb) bt
#0 errfinish (dummy=0) at elog.c:311
#1 0x24dc80 in int4div (fcinfo=0x0) at int.c:650
#2 0x18c83c in ExecMakeFunctionResult (fcache=0x400fcec0,
econtext=0x400fd050, isNull=0x7b03bcc0 "@\013\233\220", isDone=0x0)
at execQual.c:1050
#3 0x18cf58 in ExecEvalFunc (fcache=0x400fcec0, econtext=0x400fd050,
isNull=0x7b03bcc0 "@\013\233\220", isDone=0x0) at execQual.c:1431
#4 0x18e778 in ExecEvalExprSwitchContext (expression=0x400fcec0,
econtext=0x400fd050, isNull=0x7b03bcc0 "@\013\233\220", isDone=0x0)
at execQual.c:2520
#5 0x1e3bb8 in evaluate_expr (expr=0x400fcec0, result_type=23)
at clauses.c:2213
#6 0x1e33fc in evaluate_function (funcid=154, result_type=23,
args=0x400b9cf0, func_tuple=0xc0064b70) at clauses.c:1806
#7 0x1e3298 in simplify_function (funcid=154, result_type=23,
args=0x400b9cf0, allow_inline=1 '\001', active_fns=0x0) at clauses.c:1732
#8 0x1e282c in eval_const_expressions_mutator (node=0x400b9480,
active_fns=0x0) at clauses.c:1141
#9 0x1e4b8c in expression_tree_mutator (node=0x400b9bb0,
mutator=0x40011eca <DINFINITY+2954>, context=0x0) at clauses.c:2986
#10 0x1e300c in eval_const_expressions_mutator (node=0x400b9bb0,
active_fns=0x0) at clauses.c:1574
#11 0x1e4afc in expression_tree_mutator (node=0x400b9bd0,
---Type <return> to continue, or q <return> to quit---
mutator=0x40011eca <DINFINITY+2954>, context=0x0) at clauses.c:2973
#12 0x1e300c in eval_const_expressions_mutator (node=0x400b9bd0,
active_fns=0x0) at clauses.c:1574
#13 0x1e26f8 in eval_const_expressions (node=0x0) at clauses.c:1069
#14 0x1d92d0 in preprocess_expression (parse=0x400b9140, expr=0x0, kind=1)
at planner.c:401
#15 0x1d9070 in subquery_planner (parse=0x400b9140, tuple_fraction=0)
at planner.c:228
#16 0x1d8edc in planner (parse=0x400b9140, isCursor=0 '\000', cursorOptions=0)
at planner.c:119
#17 0x21fccc in pg_plan_query (querytree=0x400b9140) at postgres.c:651
#18 0x21fd6c in pg_plan_queries (querytrees=0x0, needSnapshot=0 '\000')
at postgres.c:718
#19 0x21ffb0 in exec_simple_query (query_string=0x400b8c80 "select 1/0;")
at postgres.c:876
#20 0x222d54 in PostgresMain (argc=4, argv=0x4000d888,
username=0x40050a00 "postgres") at postgres.c:2981
#21 0x1ee51c in BackendRun (port=0x4005cef0) at postmaster.c:2697
#22 0x1edcfc in BackendStartup (port=0x4005cef0) at postmaster.c:2330
#23 0x1ec470 in ServerLoop () at postmaster.c:1167
#24 0x1ebf18 in PostmasterMain (argc=3, argv=0x7b03ab10) at postmaster.c:928
#25 0x1ac358 in main (argc=3, argv=0x7b03ab10) at main.c:257
#26 0xc0065784 in ?? () from /usr/lib/libc.1
(gdb) quit
The program is running. Quit anyway (and detach it)? (y or n) y
Detaching from program: /home/postgres/testversion/bin/postgres, process 16088
$

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Jan Wieck 2004-04-08 18:44:29 Re: Can we have time based triggers in Postgresql??
Previous Message Randall Skelton 2004-04-08 18:28:37 extract epoch and index scanning