Re: BUG #14843: CREATE TABLE churns through all memory, crashes db

From: Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: ropeladder(at)gmail(dot)com, PostgreSQL mailing lists <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: BUG #14843: CREATE TABLE churns through all memory, crashes db
Date: 2017-10-06 01:00:11
Message-ID: CAB7nPqSV0XkeERHWGfBFQ_-R3eZd1Rmr7BJVdwDkBp=PTzmzGw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Fri, Oct 6, 2017 at 8:16 AM, Andres Freund <andres(at)anarazel(dot)de> wrote:
> Could you either try to form a reproducible demonstration of the problem
> out of this, or get a memory context dump? If you disable the kernel's
> overcommit heuristics, your computer won't crash on OOM, instead
> postgres will get an error, and log a dump that shows where memory is
> used.

It is not really complicated to reproduce the problem. Just insert the
JSON data attached into a table, multiply it and then run the query
given in the report. I could easily get out an OOM error:
ERROR: 53200: out of memory
DETAIL: Failed on request of size 1085.
LOCATION: palloc, mcxt.c:868
And a dump:
TopMemoryContext: 161440 total in 7 blocks; 66016 free (5 chunks); 95424 used
Record information cache: 8192 total in 1 blocks; 1760 free (0
chunks); 6432 used
TableSpace cache: 8192 total in 1 blocks; 2272 free (0 chunks); 5920 used
Operator lookup cache: 24576 total in 2 blocks; 10936 free (4
chunks); 13640 used
pgstat TabStatusArray lookup hash table: 8192 total in 1 blocks;
1632 free (0 chunks); 6560 used
TopTransactionContext: 8192 total in 1 blocks; 7944 free (1 chunks); 248 used
MessageContext: 65536 total in 4 blocks; 29208 free (3 chunks); 36328 used
Operator class cache: 8192 total in 1 blocks; 736 free (0 chunks); 7456 used
smgr relation table: 24576 total in 2 blocks; 12960 free (3 chunks);
11616 used
TransactionAbortContext: 32768 total in 1 blocks; 32728 free (0
chunks); 40 used
Portal hash: 8192 total in 1 blocks; 736 free (0 chunks); 7456 used
PortalMemory: 8192 total in 1 blocks; 7872 free (0 chunks); 320 used
PortalHeapMemory: 1024 total in 1 blocks; 800 free (0 chunks); 224 used
ExecutorState: 62906368 total in 17 blocks; 13736 free (35
chunks); 62892632 used
printtup: 8192 total in 1 blocks; 8152 free (0 chunks); 40 used
ExprContext: 8192 total in 1 blocks; 7152 free (0 chunks); 1040 used
ExprContext: 0 total in 0 blocks; 0 free (0 chunks); 0 used
Relcache by OID: 24576 total in 2 blocks; 11840 free (3 chunks); 12736 used
CacheMemoryContext: 516096 total in 6 blocks; 23264 free (1 chunks);
492832 used
pg_statistic_ext_relid_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_db_role_setting_databaseid_rol_index: 1024 total in 1 blocks;
256 free (0 chunks); 768 used
pg_user_mapping_user_server_index: 1024 total in 1 blocks; 256
free (0 chunks); 768 used
pg_user_mapping_oid_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_type_oid_index: 1024 total in 1 blocks; 336 free (0 chunks); 688 used
pg_type_typname_nsp_index: 1024 total in 1 blocks; 200 free (0
chunks); 824 used
pg_ts_template_oid_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_ts_template_tmplname_index: 1024 total in 1 blocks; 256 free (0
chunks); 768 used
pg_ts_parser_oid_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_ts_parser_prsname_index: 1024 total in 1 blocks; 256 free (0
chunks); 768 used
pg_ts_dict_oid_index: 1024 total in 1 blocks; 392 free (0 chunks); 632 used
pg_ts_dict_dictname_index: 1024 total in 1 blocks; 256 free (0
chunks); 768 used
pg_ts_config_oid_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_ts_config_cfgname_index: 1024 total in 1 blocks; 256 free (0
chunks); 768 used
pg_ts_config_map_index: 3072 total in 2 blocks; 1968 free (0
chunks); 1104 used
pg_transform_type_lang_index: 1024 total in 1 blocks; 256 free (0
chunks); 768 used
pg_transform_oid_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_tablespace_oid_index: 1024 total in 1 blocks; 336 free (0
chunks); 688 used
pg_subscription_rel_srrelid_srsubid_index: 1024 total in 1 blocks;
256 free (0 chunks); 768 used
pg_subscription_oid_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_subscription_subname_index: 1024 total in 1 blocks; 256 free (0
chunks); 768 used
pg_statistic_relid_att_inh_index: 3072 total in 2 blocks; 1912
free (0 chunks); 1160 used
pg_statistic_ext_oid_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_statistic_ext_name_index: 1024 total in 1 blocks; 256 free (0
chunks); 768 used
pg_sequence_seqrelid_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_replication_origin_roname_index: 1024 total in 1 blocks; 392
free (0 chunks); 632 used
pg_replication_origin_roiident_index: 1024 total in 1 blocks; 392
free (0 chunks); 632 used
pg_class_relname_nsp_index: 1024 total in 1 blocks; 200 free (0
chunks); 824 used
pg_range_rngtypid_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_publication_rel_prrelid_prpubid_index: 1024 total in 1 blocks;
256 free (0 chunks); 768 used
pg_publication_rel_oid_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_publication_oid_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_publication_pubname_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_proc_oid_index: 1024 total in 1 blocks; 336 free (0 chunks); 688 used
pg_proc_proname_args_nsp_index: 3072 total in 2 blocks; 1912 free
(0 chunks); 1160 used
pg_partitioned_table_partrelid_index: 1024 total in 1 blocks; 392
free (0 chunks); 632 used
pg_opfamily_oid_index: 1024 total in 1 blocks; 392 free (0 chunks); 632 used
pg_opfamily_am_name_nsp_index: 3072 total in 2 blocks; 1968 free
(0 chunks); 1104 used
pg_operator_oid_index: 1024 total in 1 blocks; 336 free (0 chunks); 688 used
pg_operator_oprname_l_r_n_index: 3072 total in 2 blocks; 1912 free
(0 chunks); 1160 used
pg_namespace_oid_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_namespace_nspname_index: 1024 total in 1 blocks; 336 free (0
chunks); 688 used
pg_language_oid_index: 1024 total in 1 blocks; 392 free (0 chunks); 632 used
pg_language_name_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_foreign_table_relid_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_foreign_server_oid_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_foreign_server_name_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_foreign_data_wrapper_oid_index: 1024 total in 1 blocks; 392
free (0 chunks); 632 used
pg_foreign_data_wrapper_name_index: 1024 total in 1 blocks; 392
free (0 chunks); 632 used
pg_event_trigger_oid_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_event_trigger_evtname_index: 1024 total in 1 blocks; 392 free
(0 chunks); 632 used
pg_enum_typid_label_index: 1024 total in 1 blocks; 256 free (0
chunks); 768 used
pg_enum_oid_index: 1024 total in 1 blocks; 392 free (0 chunks); 632 used
pg_default_acl_role_nsp_obj_index: 3072 total in 2 blocks; 1968
free (0 chunks); 1104 used
pg_conversion_oid_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_constraint_oid_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_conversion_name_nsp_index: 1024 total in 1 blocks; 256 free (0
chunks); 768 used
pg_conversion_default_index: 3072 total in 2 blocks; 1968 free (0
chunks); 1104 used
pg_collation_oid_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_collation_name_enc_nsp_index: 3072 total in 2 blocks; 1968 free
(0 chunks); 1104 used
pg_opclass_am_name_nsp_index: 3072 total in 2 blocks; 1968 free (0
chunks); 1104 used
pg_cast_source_target_index: 1024 total in 1 blocks; 200 free (0
chunks); 824 used
pg_auth_members_role_member_index: 1024 total in 1 blocks; 256
free (0 chunks); 768 used
pg_attribute_relid_attnam_index: 1024 total in 1 blocks; 256 free
(0 chunks); 768 used
pg_amop_fam_strat_index: 3072 total in 2 blocks; 1968 free (0
chunks); 1104 used
pg_amop_opr_fam_index: 3072 total in 2 blocks; 1968 free (0
chunks); 1104 used
pg_aggregate_fnoid_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_shseclabel_object_index: 3072 total in 2 blocks; 1968 free (0
chunks); 1104 used
pg_auth_members_member_role_index: 1024 total in 1 blocks; 256
free (0 chunks); 768 used
pg_authid_oid_index: 1024 total in 1 blocks; 392 free (0 chunks); 632 used
pg_authid_rolname_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_database_oid_index: 1024 total in 1 blocks; 336 free (0 chunks); 688 used
pg_database_datname_index: 1024 total in 1 blocks; 392 free (0
chunks); 632 used
pg_trigger_tgrelid_tgname_index: 1024 total in 1 blocks; 256 free
(0 chunks); 768 used
pg_rewrite_rel_rulename_index: 1024 total in 1 blocks; 256 free (0
chunks); 768 used
pg_amproc_fam_proc_index: 3072 total in 2 blocks; 1912 free (0
chunks); 1160 used
pg_opclass_oid_index: 1024 total in 1 blocks; 336 free (0 chunks); 688 used
pg_index_indexrelid_index: 1024 total in 1 blocks; 336 free (0
chunks); 688 used
pg_attribute_relid_attnum_index: 1024 total in 1 blocks; 200 free
(0 chunks); 824 used
pg_class_oid_index: 1024 total in 1 blocks; 336 free (0 chunks); 688 used
WAL record construction: 49776 total in 2 blocks; 6568 free (0
chunks); 43208 used
PrivateRefCount: 8192 total in 1 blocks; 2808 free (0 chunks); 5384 used
MdSmgr: 8192 total in 1 blocks; 7024 free (0 chunks); 1168 used
LOCALLOCK hash: 8192 total in 1 blocks; 736 free (0 chunks); 7456 used
Timezones: 104128 total in 2 blocks; 2808 free (0 chunks); 101320 used
ErrorContext: 8192 total in 1 blocks; 8152 free (3 chunks); 40 used
Grand total: 64125904 bytes in 152 blocks; 315744 free (58 chunks);
63810160 used

This is suspicious:
ExecutorState: 62906368 total in 17 blocks; 13736 free (35
chunks); 62892632 used
--
Michael

Attachment Content-Type Size
json_data.txt text/plain 1.0 KB

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message ben m 2017-10-06 01:09:49 Re: BUG #14843: CREATE TABLE churns through all memory, crashes db
Previous Message Andres Freund 2017-10-06 00:59:15 Re: pg_logical_slot_peek_changes crashes postgres when called from inside pl/pgsql