BUG #5900: Coredump on executing query

From: "Sergey Aleynikov" <sergey(dot)aleynikov(at)gmail(dot)com>
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #5900: Coredump on executing query
Date: 2011-02-25 12:11:08
Message-ID: 201102251211.p1PCB8Vo083286@wwwmaster.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs


The following bug has been logged online:

Bug reference: 5900
Logged by: Sergey Aleynikov
Email address: sergey(dot)aleynikov(at)gmail(dot)com
PostgreSQL version: 8.4.1
Operating system: FreeBSD 7.3-STABLE amd64
Description: Coredump on executing query
Details:

I've a setup with 'auto_explain' enabled:

shared_preload_libraries = 'auto_explain'
custom_variable_classes = 'auto_explain'
auto_explain.log_min_duration = '3s'
auto_explain.log_nested_statements = true

Yesterday i've got a non-repeatable database server crash with following
messages in server log:

<start of normal query explain output>
Feb 24 17:44:25 sigeon postgres[91789]: [5-28]
-> Index Scan using ind_log_1573_reversed on logs_1573 logs
(cost=0.00..
Feb 24 17:44:25 sigeon postgres[91789]: [5-29]
Index Cond: (opcode = 2302)
Feb 24 17:44:25 sigeon postgres[91789]: [5-30] ->
Index Scan using "ind_users_modiifers_u+mod" on users_modifiers
(cost=0.00..4.15
Feb 24 17:44:25 sigeon postgres[91789]: [5-31]
Index Cond: ((users_modifiers.uid = public.logs.uid) AND
(users_modifiers.modifi
Feb 24 17:44:25 sigeon postgres[91789]: [5-32] ->
Index Scan using pkey_usersinfo on users_info (cost=0.00..4.20 rows=1
width=42)
Feb 24 17:44:25 sigeon postgres[91789]: [5-33]
Index Cond: (users_info.uid = users_modifiers.uid)
Feb 24 17:44:25 sigeon postgres[91789]: [5-34]
Filter: ((users_info.regdate >= $1) AND (users_info.regdate < $2))
Feb 24 17:44:25 sigeon postgres[91789]: [5-35] CONTEXT: PL/pgSQL function
"get_register_leveled_stats" line 3 at RETURN QUERY
Feb 24 17:44:25 sigeon postgres[91789]: [5-36] STATEMENT: SELECT * FROM
get_register_leveled_stats('02/24/11 00:00:00','02/25/11 00:00:00');
Feb 24 17:44:28 sigeon postgres[1166]: [5-1] LOG: server process (PID
91789) was terminated by signal 11: Segmentation fault
Feb 24 17:44:28 sigeon postgres[1166]: [6-1] LOG: terminating any other
active server processes
Feb 24 17:44:28 sigeon postgres[92550]: [7-1] FATAL: the database system is
in recovery mode
Feb 24 17:44:28 sigeon postgres[1166]: [7-1] LOG: archiver process (PID
1171) exited with exit code 1

Backtrace is:

(gdb) bt
#0 0x000000000060bf79 in quote_identifier ()
#1 0x00000000004ed45c in explain_outNode ()
#2 0x00000000004ee253 in ExplainPrintPlan ()
#3 0x000000080120112a in explain_ExecutorEnd () from
/usr/local/pgsql/lib/auto_explain.so
#4 0x00000000004fa3cf in PortalCleanup ()
#5 0x000000000067389a in PortalDrop ()
#6 0x00000000005bf2e9 in exec_simple_query ()
#7 0x00000000005bffd7 in PostgresMain ()
#8 0x0000000000599287 in ServerLoop ()
#9 0x0000000000599f7e in PostmasterMain ()
#10 0x000000000054ce64 in main ()

Since this is non-repeatable crash (this is common statistical query, run
tens times a day), i can't make a debug build of PG to show more info.
Executed query (get_register_leveled_stats) was following:

CREATE OR REPLACE FUNCTION get_register_leveled_stats(_from timestamp
without time zone, _to timestamp without time zone) RETURNS setof
f_grls_result AS
$BODY$
begin

return query
select z.*, z.a + z.b + z.c + z.d + z.e from (
select sum(other)::integer as a, sum(vk)::integer as b,
sum(vk_ref)::integer as c, sum(mailru)::integer as d, sum(od)::integer as e,
value::integer
from (
select uid,
case when eid is null and mlid is null then 1 else 0 end as other,
case when eid is not null and net = 0 and referral is null then 1 else
0 end as vk,
case when eid is not null and net = 0 and referral is not null then 1
else 0 end as vk_ref,
case when eid is not null and net = 12 then 1 else 0 end as od,
case when mlid is not null then 1 else 0 end as mailru
from users_info
where regdate >= _from and regdate < _to
) z
inner join users_modifiers on (users_modifiers.uid = z.uid)
where modifiyer = 808
and origin = 239
group by value
order by value asc
) z
;

end
$BODY$
LANGUAGE 'plpgsql' stable;

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Merlin Moncure 2011-02-25 14:46:29 Re: Function trunc() behaves in unexpected manner with different data types
Previous Message Jakub Ouhrabka 2011-02-25 11:20:33 Corrupted index on 9.0.3 streaming hot standby