BUG #16616: Segmentation fault when use explain

From: PG Bug reporting form <noreply(at)postgresql(dot)org>
To: pgsql-bugs(at)lists(dot)postgresql(dot)org
Cc: 139250065(at)qq(dot)com
Subject: BUG #16616: Segmentation fault when use explain
Date: 2020-09-15 03:47:30
Message-ID: 16616-a0b27501abf6e83a@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 16616
Logged by: Dan Liu
Email address: 139250065(at)qq(dot)com
PostgreSQL version: 12.4
Operating system: 18.04.5 LTS (Bionic Beaver)
Description:

I created a extension by C language, and deltatype is a new data type

CREATE TYPE deltatype;
CREATE FUNCTION deltatype_in(cstring) RETURNS deltatype IMMUTABLE
STRICT LANGUAGE C AS '$libdir/bz', 'deltatype_in';
CREATE FUNCTION deltatype_out(deltatype) RETURNS cstring IMMUTABLE
STRICT LANGUAGE C AS '$libdir/bz', 'deltatype_out';
CREATE FUNCTION deltatype_receive(internal) RETURNS deltatype IMMUTABLE
STRICT LANGUAGE C AS '$libdir/bz', 'deltatype_receive';
CREATE FUNCTION deltatype_send(deltatype) RETURNS bytea IMMUTABLE
STRICT LANGUAGE C AS '$libdir/bz', 'deltatype_send';

CREATE TYPE deltatype
(
INPUT = deltatype_in,
OUTPUT = deltatype_out,
RECEIVE = deltatype_receive,
SEND = deltatype_send,
INTERNALLENGTH = 1,
ALIGNMENT = char,
PASSEDBYVALUE
);

It works well execpt when I use explain in psql

> explain select 'new'::deltatype <> 'old'::deltatype;
QUERY PLAN
------------------------------------------
Result (cost=0.00..0.01 rows=1 width=1)
(1 row)

> explain select * from contract_index64s where delta_type <> 0 limit 1;
QUERY PLAN
--------------------------------------------------------------------------------
Limit (cost=0.00..0.03 rows=1 width=57)
-> Seq Scan on contract_index64s (cost=0.00..4424.69 rows=147405
width=57)
Filter: (delta_type <> 0)
(3 rows)

> explain select * from contract_index64s where delta_type <> 'new'::text
limit 1;
QUERY PLAN
-------------------------------------------------------------------------------
Limit (cost=0.00..0.10 rows=1 width=57)
-> Seq Scan on contract_index64s (cost=0.00..4424.69 rows=44537
width=57)
Filter: (delta_type <> 'new'::text)
(3 rows)

> select * from contract_index64s where delta_type <> 'new'::deltatype limit
1;
block_num | seq_no | delta_type | code | scope | tab |
primary_key | payer | secondary_key
-----------+--------+------------+------------+------------+------------+-------------+------------+---------------
13698527 | 0 | removed | snatchgame | snatchgame | snatchgame | 0
| snatchgame | 1
(1 row)

Time: 3.863 ms

> explain select * from contract_index64s where delta_type <>
'new'::deltatype limit 1;
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
The connection to the server was lost. Attempting reset: Failed.
Time: 118.896 ms
10:21:53 (@:)!>?

in log file: /var/log/postgresql/postgresql-12-main.log
2020-09-15 10:21:53.143 CST::@:[858]: LOG: server process (PID 2902) was
terminated by signal 11: Segmentation fault
2020-09-15 10:21:53.143 CST::@:[858]: DETAIL: Failed process was running:
explain select * from contract_index64s where delta_type <> 'new'::deltatype
limit 1;
2020-09-15 10:21:53.143 CST::@:[858]: LOG: terminating any other active
server processes
2020-09-15 10:21:53.143 CST:[local]:baozi(at)baozi_db:[3256]: FATAL: the
database system is in recovery mode
2020-09-15 10:21:53.144 CST::@:[925]: WARNING: terminating connection
because of crash of another server process
2020-09-15 10:21:53.144 CST::@:[925]: DETAIL: The postmaster has commanded
this server process to roll back the current transaction and exit, because
another server process exited abnormally and possibly corrupted shared
memory.
2020-09-15 10:21:53.144 CST::@:[925]: HINT: In a moment you should be able
to reconnect to the database and repeat your command.
2020-09-15 10:21:53.145 CST::@:[858]: LOG: all server processes terminated;
reinitializing
2020-09-15 10:21:53.180 CST::@:[3259]: LOG: database system was
interrupted; last known up at 2020-09-15 10:05:38 CST
2020-09-15 10:21:53.180 CST::@:[3259]: LOG: database system was not
properly shut down; automatic recovery in progress
2020-09-15 10:21:53.182 CST::@:[3259]: LOG: redo starts at 4F/15D550
2020-09-15 10:21:53.182 CST::@:[3259]: LOG: invalid record length at
4F/15D638: wanted 24, got 0
2020-09-15 10:21:53.182 CST::@:[3259]: LOG: redo done at 4F/15D600
2020-09-15 10:21:53.191 CST::@:[858]: LOG: database system is ready to
accept connections

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Daniel Gustafsson 2020-09-15 11:36:19 Re: BUG #16604: pg_dump with --jobs breaks SSL connections
Previous Message David G. Johnston 2020-09-15 01:59:21 Re: BUG #16486: Prompted password is ignored when password specified in connection string