BUG #15821: Parallel Workers with functions and auto_explain: ERROR: could not find key 3 in shm TOC

Поиск
Список
Период
Сортировка
От PG Bug reporting form
Тема BUG #15821: Parallel Workers with functions and auto_explain: ERROR: could not find key 3 in shm TOC
Дата
Msg-id 15821-5eb422e980594075@postgresql.org
обсуждение исходный текст
Ответы Re: BUG #15821: Parallel Workers with functions and auto_explain: ERROR: could not find key 3 in shm TOC  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: BUG #15821: Parallel Workers with functions and auto_explain: ERROR: could not find key 3 in shm TOC  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
The following bug has been logged on the website:

Bug reference:      15821
Logged by:          Christian Hofstaedtler
Email address:      ch+pg@zeha.at
PostgreSQL version: 11.3
Operating system:   Debian stretch amd64
Description:

We have enabled auto_explain and see errors on PostgreSQL 11.3 when
SELECTing from a user defined function. No such crashes have been
observed on 10.7.

Maybe relevant config settings:
  log_min_duration_statement = 0
  auto_explain.log_min_duration = 150ms
  auto_explain.log_analyze = on
  shared_preload_libraries = 'pg_stat_statements'
  pg_stat_statements.track = all
  pg_stat_statements.max = 10000

I can trigger the error on our database using:

  CREATE TABLE reprotable(id serial, val int);
  INSERT INTO reprotable(val) SELECT * FROM generate_series(1, 10000000);
  CREATE OR REPLACE FUNCTION public.crashrepro4() RETURNS TABLE(foo integer,
foo2 integer) LANGUAGE sql AS $function$
  SELECT c.id, v.val FROM reprotable c JOIN reprotable v ON v.id = c.id
  $function$;
  
  LOAD 'auto_explain';
  SET max_parallel_workers_per_gather TO 8;
  SELECT * FROM crashrepro4();

Sometimes this works on the first few tries; running
  EXPLAIN ANALYZE SELECT * FROM crashrepro4();
appears to help with the reproduction.

Output:
ERROR:  could not find key 3 in shm TOC at 0x7f45a0334000
CONTEXT:  parallel worker
SQL function "crashrepro4" statement 1

Backtrace:

Program received signal SIGUSR1, User defined signal 1.
0x00007f459dc94bc6 in posix_fallocate64 () from
/lib/x86_64-linux-gnu/libc.so.6
(gdb) bt full
#0  0x00007f459dc94bc6 in posix_fallocate64 () from
/lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x00005636d9cc675b in dsm_impl_posix_resize (size=134483968, fd=7) at
./build/../src/backend/storage/ipc/dsm_impl.c:441
        rc = <optimized out>
#2  dsm_impl_posix (impl_private=0x8041000, elevel=20,
mapped_size=0x5636dc084348, mapped_address=0x5636dc084340,
request_size=134483968, handle=<optimized out>, op=DSM_OP_CREATE) at
./build/../src/backend/storage/ipc/dsm_impl.c:326
        flags = <optimized out>
        fd = 7
        name =

"/PostgreSQL.1895625775\000\000X\274ʝE\177\000\000@\354\322\357\377\177\000\000\020\337\003\334\066V\000\000@\000\000\000\000\000\000\000\000\200\000\000\000\000\000"
        address = <optimized out>
#3  dsm_impl_op (op=op@entry=DSM_OP_CREATE, handle=<optimized out>,
request_size=request_size@entry=134483968,
impl_private=impl_private@entry=0x5636dc084338,
mapped_address=mapped_address@entry=0x5636dc084340, 
    mapped_size=mapped_size@entry=0x5636dc084348, elevel=20) at
./build/../src/backend/storage/ipc/dsm_impl.c:177
        __func__ = "dsm_impl_op"
#4  0x00005636d9cc7877 in dsm_create (size=size@entry=134483968,
flags=flags@entry=0) at ./build/../src/backend/storage/ipc/dsm.c:474
        seg = 0x5636dc084318
        i = <optimized out>
        nitems = <optimized out>
        __func__ = "dsm_create"
#5  0x00005636d9e2b317 in make_new_segment (area=area@entry=0x5636dc17fd08,
requested_pages=requested_pages@entry=32768) at
./build/../src/backend/utils/mmgr/dsa.c:2155
        new_index = 2
        metadata_bytes = 266240
        total_size = 134483968
        total_pages = <optimized out>
        usable_pages = 32768
        segment_map = <optimized out>
        segment = <optimized out>
#6  0x00005636d9e2cbce in dsa_allocate_extended (area=0x5636dc17fd08,
size=size@entry=134217728, flags=flags@entry=0) at
./build/../src/backend/utils/mmgr/dsa.c:712
        npages = 32768
        first_page = 139937017269144
        pool = 0x7f45a02a25f0
        size_class = <optimized out>
        start_pointer = <optimized out>
        segment_map = <optimized out>
        __func__ = "dsa_allocate_extended"
#7  0x00005636d9bb3e95 in ExecParallelHashTableAlloc
(hashtable=hashtable@entry=0x5636dc173a70, batchno=batchno@entry=0) at
./build/../src/backend/executor/nodeHash.c:3047
        batch = 0x7f417ccc0000
        buckets = <optimized out>
        nbuckets = 16777216
        i = <optimized out>
#8  0x00005636d9bb42e3 in ExecHashTableCreate
(state=state@entry=0x5636dc146280, hashOperators=<optimized out>,
keepNulls=<optimized out>) at
./build/../src/backend/executor/nodeHash.c:615
        pstate = <optimized out>
        build_barrier = 0x7f45a02a1450
        node = 0x5636dc140568
        hashtable = 0x5636dc173a70
        outerNode = <optimized out>
        space_allowed = 64424509440
        nbuckets = 16777216
        nbatch = 1
        rows = <optimized out>
        num_skew_mcvs = 10391049
        log2_nbuckets = <optimized out>
        i = 0
        ho = <optimized out>
        __func__ = "ExecHashTableCreate"
#9  0x00005636d9bb7085 in ExecHashJoinImpl (parallel=true, pstate=<optimized
out>) at ./build/../src/backend/executor/nodeHashjoin.c:279
        outerNode = <optimized out>
        hashNode = <optimized out>
        econtext = <optimized out>
        node = <optimized out>
        joinqual = <optimized out>
        otherqual = <optimized out>
        hashtable = 0x0
        hashvalue = 32767
        batchno = -641936805
        parallel_state = <optimized out>
#10 ExecParallelHashJoin (pstate=<optimized out>) at
./build/../src/backend/executor/nodeHashjoin.c:581
No locals.
#11 0x00005636d9bb2194 in ExecProcNode (node=0x5636dc145b60) at
./build/../src/include/executor/executor.h:247
No locals.
#12 gather_getnext (gatherstate=0x5636dc145970) at
./build/../src/backend/executor/nodeGather.c:276
        estate = 0x5636dc145730
        outerPlan = 0x5636dc145b60
        fslot = 0x5636dc0743a8
#13 ExecGather (pstate=0x5636dc145970) at
./build/../src/backend/executor/nodeGather.c:207
        node = 0x5636dc145970
        econtext = 0x5636dc145a80
#14 0x00005636d9b9b4c3 in ExecProcNode (node=0x5636dc145970) at
./build/../src/include/executor/executor.h:247
No locals.
#15 ExecutePlan (execute_once=<optimized out>, dest=0x5636dc141648,
direction=<optimized out>, numberTuples=0, sendTuples=<optimized out>,
operation=CMD_SELECT, use_parallel_mode=<optimized out>,
planstate=0x5636dc145970, 
    estate=0x5636dc145730) at
./build/../src/backend/executor/execMain.c:1723
        slot = <optimized out>
        current_tuple_count = 0
#16 standard_ExecutorRun (queryDesc=0x5636dc141698, direction=<optimized
out>, count=0, execute_once=<optimized out>) at
./build/../src/backend/executor/execMain.c:364
        estate = 0x5636dc145730
        operation = CMD_SELECT
        dest = 0x5636dc141648
        sendTuples = <optimized out>
        __func__ = "standard_ExecutorRun"
#17 0x00007f4597d08e15 in pgss_ExecutorRun (queryDesc=0x5636dc141698,
direction=ForwardScanDirection, count=0, execute_once=<optimized out>) at
./build/../contrib/pg_stat_statements/pg_stat_statements.c:892
        save_exception_stack = 0x7fffefd2f0a0
        save_context_stack = 0x7fffefd2f1d0
        local_sigjmp_buf = {{__jmpbuf = {94793620402592, -81779228135919821,
1, 0, 94793620523992, 94793620526040, -81779228572127437,
-24340724960596173}, __mask_was_saved = 0, __saved_mask = {__val =
{94793619686312, 
                140737216966656, 94793581381244, 94793619686312,
94793620543280, 140737216966688, 94793581092645, 94793620543856,
94793620543280, 140737216966736, 94793581143132, 94793620522984, 16, 0,
94793620543280, 
                140737216966784}}}}
#18 0x00007f417cdbf4dd in explain_ExecutorRun (queryDesc=0x5636dc141698,
direction=ForwardScanDirection, count=0, execute_once=<optimized out>) at
./build/../contrib/auto_explain/auto_explain.c:268
        save_exception_stack = 0x7fffefd2f8a0
        save_context_stack = 0x7fffefd2f1d0
        local_sigjmp_buf = {{__jmpbuf = {94793620402592, -81779228104462541,
1, 0, 94793620523992, 94793620526040, -81779228138016973,
-26933449381777613}, __mask_was_saved = 0, __saved_mask = {__val =
{94793581107904, 94793620526744, 
                94793588700640, 140737216966960, 139936876507429,
140737216967008, 94793620526744, 1, 0, 140737216967024, 139919244391853, 1,
0, 94793620523992, 94793620402592, 1}}}}
#19 0x00005636d9ba8f6a in postquel_getnext (es=0x5636dc140bd8,
es=0x5636dc140bd8, fcache=0x5636dc1231a0, fcache=0x5636dc1231a0) at
./build/../src/backend/executor/functions.c:867
        count = 0
#20 fmgr_sql (fcinfo=0x7fffefd2f340) at
./build/../src/backend/executor/functions.c:1164
        fcache = 0x5636dc1231a0
        sqlerrcontext = {previous = 0x0, callback = 0x5636d9ba77a0
<sql_exec_error_callback>, arg = 0x5636dc06a230}
        randomAccess = false
        lazyEvalOK = <optimized out>
        is_first = <optimized out>
        pushed_snapshot = true
        es = 0x5636dc140bd8
        slot = <optimized out>
        result = <optimized out>
        eslist = <optimized out>
        eslc = 0x5636dc1413d8
        __func__ = "fmgr_sql"
#21 0x00005636d9ba4bac in ExecMakeTableFunctionResult
(setexpr=0x5636dc06a210, econtext=0x5636dc06a0e0, argContext=<optimized
out>, expectedDesc=0x5636dc06ac68, randomAccess=false) at
./build/../src/backend/executor/execSRF.c:231
        result = 94793580413993
        tupstore = 0x0
        tupdesc = 0x0
        funcrettype = 2249
        returnsTuple = <optimized out>
        returnsSet = true
        fcinfo = {flinfo = 0x5636dc06a230, context = 0x0, resultinfo =
0x7fffefd2f300, fncollation = 0, isnull = false, nargs = 0, arg =
{94793619488832, 140733193388046, 0, 94793580418128, 140737216967520, 6,
3432, 140733193388035, 
            94793585267779, 1, 59588104878912, 94793585267784, 32,
139936976061625, 94793584837154, 1, 140737216968608, 3, 140737216967832,
206158430224, 140737216969520, 94793620609964, 94793620609964,
139936977225618, 
            139936979540000, 8, 0, 139936976486110, 3688503315210960912,
8187, 0, 94793620609936, 94793620618144, 139936979544832, 0, 160, 142,
139936976269588, 140737216967904, 94793583475689, 140737216968048,
94793620609952, 
            94793620609936, 252098579, 140737216968464, 139937017242608,
139937017242584, 139937017242608, 139937017242608, 94793619743656,
140737216967952, 94793583769478, 139937017242608, 7074228167464498944,
94793620438296, 
            94793581565312, 140737216968032, 94793581372751,
140737216968032, 94793620438296, 140737216968464, 140737216968464,
94793584972684, 0, 140737216968144, 94793581565681, 140737216968080,
7074228167464498944, 94793620438216, 
            94793581565312, 140737216968144, 94793581372751, 1,
7074228167464498944, 140737216968464, 94793620438216, 140737216968464,
140737216968464, 140737216968256, 94793581565681, 4294967295,
139937017247848, 139937017247824, 
            139937017247848, 139937017247848, 94793619743656,
140737216968240, 7074228167464498944, 139937017247848, 94793620438376,
94793581565312, 140737216968464, 140737216968320, 94793581372827,
140737216968304, 94793620438408, 
            140737216968464, 94793620436824, 0, 0}, argnull = {240, 246,
210, 239, 255, 127, false, false, 241, 150, 193, 217, 54, 86, false, false,
16, 247, 210, 239, 255, 127, false, false, 169, 156, 193, 217, 54, 86,
false, false, 
            240, 246, 210, 239, 255, 127, false, false, 233, 187, 222, 217,
54, 86, false, false, 24, false, false, false, false, false, false, false,
175, 189, 160, 217, 54, 86, false, false, 16, 247, 210, 239, 255, 127,
false, 
            false, 233, 187, 222, 217, 54, 86, false, false, 23, false,
false, false, false, false, false, false, 88, 171, 6, 220, 54, 86, false,
false, 80, 56, 52, 160}}
        fcusage = {fs = 0x5636dc1278c0, save_f_total_time = {tv_sec = 0,
tv_nsec = 0}, save_total = {tv_sec = 0, tv_nsec = 0}, f_start = {tv_sec =
469579, tv_nsec = 359852825}}
        rsinfo = {type = T_ReturnSetInfo, econtext = 0x5636dc06a0e0,
expectedDesc = 0x5636dc06ac68, allowedModes = 11, returnMode =
SFRM_ValuePerCall, isDone = ExprSingleResult, setResult = 0x0, setDesc =
0x0}
        tmptup = {t_len = 0, t_self = {ip_blkid = {bi_hi = 0, bi_lo = 0},
ip_posid = 2}, t_tableOid = 0, t_data = 0x2}
        callerContext = 0x5636dc069cb0
        first_time = true
        __func__ = "ExecMakeTableFunctionResult"
#22 0x00005636d9bb1760 in FunctionNext (node=node@entry=0x5636dc069fd0) at
./build/../src/backend/executor/nodeFunctionscan.c:94
        tstore = 0x0
        estate = <optimized out>
        direction = ForwardScanDirection
        scanslot = 0x5636dc06ae88
        alldone = <optimized out>
        oldpos = <optimized out>
        funcno = <optimized out>
        att = <optimized out>
#23 0x00005636d9ba40f9 in ExecScanFetch (recheckMtd=0x5636d9bb14a0
<FunctionRecheck>, accessMtd=0x5636d9bb14d0 <FunctionNext>,
node=0x5636dc069fd0) at ./build/../src/backend/executor/execScan.c:95
        estate = 0x5636dc069dc0
#24 ExecScan (node=0x5636dc069fd0, accessMtd=0x5636d9bb14d0 <FunctionNext>,
recheckMtd=0x5636d9bb14a0 <FunctionRecheck>) at
./build/../src/backend/executor/execScan.c:145
        econtext = <optimized out>
        qual = 0x0
        projInfo = 0x0
#25 0x00005636d9ba25c9 in ExecProcNodeInstr (node=0x5636dc069fd0) at
./build/../src/backend/executor/execProcnode.c:461
        result = <optimized out>
#26 0x00005636d9b9b4c3 in ExecProcNode (node=0x5636dc069fd0) at
./build/../src/include/executor/executor.h:247
No locals.
#27 ExecutePlan (execute_once=<optimized out>, dest=0x5636dc12ccb8,
direction=<optimized out>, numberTuples=0, sendTuples=<optimized out>,
operation=CMD_SELECT, use_parallel_mode=<optimized out>,
planstate=0x5636dc069fd0, 
    estate=0x5636dc069dc0) at
./build/../src/backend/executor/execMain.c:1723
        slot = <optimized out>
        current_tuple_count = 0
#28 standard_ExecutorRun (queryDesc=0x5636dc068590, direction=<optimized
out>, count=0, execute_once=<optimized out>) at
./build/../src/backend/executor/execMain.c:364
        estate = 0x5636dc069dc0
        operation = CMD_SELECT
        dest = 0x5636dc12ccb8
        sendTuples = <optimized out>
        __func__ = "standard_ExecutorRun"
#29 0x00007f4597d08e15 in pgss_ExecutorRun (queryDesc=0x5636dc068590,
direction=ForwardScanDirection, count=0, execute_once=<optimized out>) at
./build/../contrib/pg_stat_statements/pg_stat_statements.c:892
        save_exception_stack = 0x7fffefd2f9b0
        save_context_stack = 0x0
        local_sigjmp_buf = {{__jmpbuf = {94793620008672, -81779227836027085,
0, 94793619637648, 0, 1, -81779227869581517, -24340724960596173},
__mask_was_saved = 0, __saved_mask = {__val = {94793583733915,
140737216969008, 
                7074228167464498944, 140737216969008, 94793619643840,
94793620438296, 94793619644864, 2, 94793619644368, 140737216969168,
94793581140788, 7987184768, 94793620441608, 94793619643840, 336, 1}}}}
#30 0x00007f417cdbf4dd in explain_ExecutorRun (queryDesc=0x5636dc068590,
direction=ForwardScanDirection, count=0, execute_once=<optimized out>) at
./build/../contrib/auto_explain/auto_explain.c:268
        save_exception_stack = 0x7fffefd2fb50
        save_context_stack = 0x0
        local_sigjmp_buf = {{__jmpbuf = {94793620008672, -81779227930398925,
0, 94793619637648, 0, 1, -81779227829735629, -26933449381777613},
__mask_was_saved = 0, __saved_mask = {__val = {94793620441784,
140737216969344, 336, 1, 
                94793620155408, 24, 94793619637648, 0, 1, 140737216969312,
94793583755684, 94793620008672, 94793620155728, 140737216969344,
94793583827107, 94793620008672}}}}
#31 0x00005636d9cee59b in PortalRunSelect
(portal=portal@entry=0x5636dc0c2ee0, forward=forward@entry=true, count=0,
count@entry=9223372036854775807, dest=dest@entry=0x5636dc12ccb8) at
./build/../src/backend/tcop/pquery.c:932
        queryDesc = 0x5636dc068590
        direction = <optimized out>
        nprocessed = <optimized out>
        __func__ = "PortalRunSelect"
#32 0x00005636d9cefb20 in PortalRun (portal=portal@entry=0x5636dc0c2ee0,
count=count@entry=9223372036854775807, isTopLevel=isTopLevel@entry=true,
run_once=run_once@entry=true, dest=dest@entry=0x5636dc12ccb8, 
    altdest=altdest@entry=0x5636dc12ccb8, completionTag=0x7fffefd2fca0 "")
at ./build/../src/backend/tcop/pquery.c:773
        save_exception_stack = 0x7fffefd2fec0
        save_context_stack = 0x0
        local_sigjmp_buf = {{__jmpbuf = {1, -81779228012187853,
94793619488704, 94793619488752, 94793620008672, 2, -81779227917816013,
-5958515187191648461}, __mask_was_saved = 0, __saved_mask = {__val =
{94793619463952, 0, 
                2817148525, 94793620020232, 94793619637376, 4, 112,
94793619488704, 94793619484688, 94793584837140, 2, 140737216969760,
94793583757029, 140737216969792, 2, 94793619488704}}}}
        result = <optimized out>
        nprocessed = <optimized out>
        saveTopTransactionResourceOwner = 0x5636dc0823a8
        saveTopTransactionContext = 0x5636dc0e6c10
        saveActivePortal = 0x0
        saveResourceOwner = 0x5636dc0823a8
        savePortalContext = 0x0
        saveMemoryContext = 0x5636dc0e6c10
        __func__ = "PortalRun"
#33 0x00005636d9ceb7b9 in exec_simple_query (query_string=0x5636dc043120
"SELECT * FROM crashrepro4();") at
./build/../src/backend/tcop/postgres.c:1145
        parsetree = 0x5636dc043fc0
        portal = 0x5636dc0c2ee0
        snapshot_set = <optimized out>
        commandTag = <optimized out>
        completionTag =

"\000\000\000\000\002\000\000\000\340\374\322\357\377\177\000\000-\r\324\357\377\177\000\000\000\000\000\000\000\000\000\000\360\374\322\357\002\000\000\000Q\000\000\000\000\000\000\000
1\004\334\066V\000\000`\376\322\357\377\177\000"
        querytree_list = <optimized out>
        plantree_list = <optimized out>
        receiver = 0x5636dc12ccb8
        format = 0
        dest = DestRemote
        parsetree_list = 0x5636dc044010
        parsetree_item = 0x5636dc043ff0
        save_log_statement_stats = false
        was_logged = false
        use_implicit_block = false
        msec_str =

"\000\000\000\000\002\000\000\000\340\374\322\357\377\177\000\000-\r\324\357\377\177\000\000\000\000\000\000\000\000\000"
        __func__ = "exec_simple_query"
#34 0x00005636d9ced623 in PostgresMain (argc=<optimized out>,
argv=argv@entry=0x5636dc070128, dbname=<optimized out>, username=<optimized
out>) at ./build/../src/backend/tcop/postgres.c:4182
        query_string = 0x5636dc043120 "SELECT * FROM crashrepro4();"
        input_message = {data = 0x5636dc043120 "SELECT * FROM
crashrepro4();", len = 29, maxlen = 1024, cursor = 29}
        local_sigjmp_buf = {{__jmpbuf = {140737216970368,
-81779225453662413, 1, 94793619668968, 94793619668968, 94793619632848,
-81779227978633421, -5958515189572833485}, __mask_was_saved = 1,
__saved_mask = {__val = {0, 
                140737216970544, 140737216970540, 140737216970640,
8589934592, 94793588696280, 94793585032905, 140737216970864,
140737216972320, 140737216971248, 94793619668968, 94793619632848,
139936976780376, 5, 206158430256, 
                140737216970848}}}}
        send_ready_for_query = false
        disable_idle_in_transaction_timeout = false
        __func__ = "PostgresMain"
#35 0x00005636d99fb097 in BackendRun (port=0x5636dc0672d0) at
./build/../src/backend/postmaster/postmaster.c:4358
        ac = 1
        secs = 612288553
        usecs = 224860
        i = 1
        av = 0x5636dc070128
        maxac = <optimized out>
#36 BackendStartup (port=0x5636dc0672d0) at
./build/../src/backend/postmaster/postmaster.c:4030
        bn = <optimized out>
        pid = <optimized out>
#37 ServerLoop () at ./build/../src/backend/postmaster/postmaster.c:1707
        rmask = {fds_bits = {128, 0 <repeats 15 times>}}
        selres = <optimized out>
        now = <optimized out>
        readmask = {fds_bits = {200, 0 <repeats 15 times>}}
        last_lockfile_recheck_time = 1558973336
        last_touch_time = 1558973276
        __func__ = "ServerLoop"
#38 0x00005636d9c78221 in PostmasterMain (argc=7, argv=0x5636dc03de10) at
./build/../src/backend/postmaster/postmaster.c:1380
        opt = <optimized out>
        status = <optimized out>
        userDoption = <optimized out>
        listen_addr_saved = true
        i = <optimized out>
        output_config_variable = <optimized out>
        __func__ = "PostmasterMain"
#39 0x00005636d99fc594 in main (argc=7, argv=0x5636dc03de10) at
./build/../src/backend/main/main.c:228
No locals.
(gdb)


В списке pgsql-bugs по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: BUG #15820: Commuting two column make a SubqueryScan node to appear in the plan
Следующее
От: Juan José Santamaría Flecha
Дата:
Сообщение: Re: BUG #15789: libpq compilation with OpenSSL 1.1.1b fails onWindows with Visual Studio 2017