Skip to content

Instantly share code, notes, and snippets.

@joy4eg
Last active July 15, 2025 10:28
Show Gist options
  • Select an option

  • Save joy4eg/708458e204f52129a8e54a13534586b7 to your computer and use it in GitHub Desktop.

Select an option

Save joy4eg/708458e204f52129a8e54a13534586b7 to your computer and use it in GitHub Desktop.
postgres crash 17.5
2025-07-15 10:25:08.151 UTC [1] LOG: server process (PID 73) was terminated by signal 11: Segmentation fault
2025-07-15 10:25:08.151 UTC [1] DETAIL: Failed process was running:
WITH replaced AS (
DELETE FROM replaceable_events_before_update
WHERE
replaced_by_id = ANY($1)
RETURNING kind,created_at,id,address,pubkey,master_pubkey,gift_receiver_pubkey,sig,sig_alg,key_alg,content,tags,t_tags,d_tag,h_tag,deleted,has_images,has_videos,is_reply,is_root_reply,is_quote,has_references,hidden,lookup,expiration,replaced_by_id), source_data (kind,created_at,id,address,pubkey,master_pubkey,gift_receiver_pubkey,sig,sig_alg,key_alg,content,tags,t_tags,d_tag,h_tag,deleted,has_images,has_videos,is_reply,is_root_reply,is_quote,has_references,hidden,lookup,expiration,replaced_by_id) AS (SELECT * from replaced UNION ALL VALUES (cast($2 as integer), cast($3 as bigint), $4, $5, $6, $7, $8, $9, $10, $11, $12, cast($13 as jsonb), cast($14 as text[]), $15, $16, cast($17 as bool), cast($18 as bool), cast($19 as bool), cast($20 as bool), cast($21 as bool), cast($22 as bool), cast($23 as bool), cast($24 as bool), $25, cast($26 as bigint), $27),
(cast($28 as integer), cast($29 as bigint), $30, $31, $32, $
2025-07-15 10:25:08.151 UTC [1] LOG: terminating any other active server processes

Stack trace

(gdb) bt
#0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=140584993421888) at ./nptl/pthread_kill.c:44
#1  __pthread_kill_internal (signo=6, threadid=140584993421888) at ./nptl/pthread_kill.c:78
#2  __GI___pthread_kill (threadid=140584993421888, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
#3  0x00007fdc81187476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#4  0x00007fdc8116d7f3 in __GI_abort () at ./stdlib/abort.c:79
#5  0x00007fdc40f749e6 in grn_crash_handler (signal_number=<optimized out>, info=<optimized out>, context=<optimized out>) at ./lib/ctx.cpp:2557
#6  <signal handler called>
#7  ExecGetUpdateNewTuple (oldSlot=0x55b0842d0288, planSlot=0x55b084249d68, relinfo=0x55b0836a9b88) at executor/./build/../src/backend/executor/nodeModifyTable.c:752
#8  ExecBRUpdateTriggers (estate=0x55b08369a708, epqstate=0x55b0836a9a68, relinfo=0x55b0836a9b88, tupleid=0x7fffc373628a, fdw_trigtuple=0x0, newslot=0x55b083720eb0, tmresult=0x7fffc37361d0, tmfd=0x7fffc37362e0)
   at commands/./build/../src/backend/commands/trigger.c:2979
#9  0x000055b08158628e in ExecUpdatePrologue (context=context@entry=0x7fffc37362c0, resultRelInfo=resultRelInfo@entry=0x55b0836a9b88, tupleid=tupleid@entry=0x7fffc373628a, oldtuple=oldtuple@entry=0x0, 
   slot=slot@entry=0x55b083720eb0, result=result@entry=0x7fffc37361d0) at executor/./build/../src/backend/executor/nodeModifyTable.c:1949
#10 0x000055b081587e75 in ExecMergeMatched (context=<optimized out>, resultRelInfo=<optimized out>, tupleid=0x7fffc373628a, oldtuple=0x0, canSetTag=false, matched=0x7fffc3736290)
   at executor/./build/../src/backend/executor/nodeModifyTable.c:3023
#11 0x000055b081589447 in ExecMerge (canSetTag=false, oldtuple=<optimized out>, tupleid=<optimized out>, resultRelInfo=0x55b0836a9b88, context=0x7fffc37362c0) at executor/./build/../src/backend/executor/nodeModifyTable.c:2830
#12 ExecModifyTable (pstate=0x55b0836a9980) at executor/./build/../src/backend/executor/nodeModifyTable.c:4204
#13 0x000055b0815720bd in ExecProcNode (node=0x55b0836a9980) at executor/./build/../src/include/executor/executor.h:274
#14 CteScanNext (node=0x55b0842c6418) at executor/./build/../src/backend/executor/nodeCtescan.c:103
#15 0x000055b08156e768 in ExecProcNode (node=0x55b0842c6418) at executor/./build/../src/include/executor/executor.h:274
#16 ExecAppend (pstate=0x55b0842c60d8) at executor/./build/../src/backend/executor/nodeAppend.c:351
#17 0x000055b081553315 in ExecProcNode (node=0x55b0842c60d8) at executor/./build/../src/include/executor/executor.h:274
#18 ExecutePlan (dest=0x55b0840631a0, direction=<optimized out>, numberTuples=0, sendTuples=<optimized out>, operation=CMD_SELECT, queryDesc=0x55b084063228) at executor/./build/../src/backend/executor/execMain.c:1649
#19 standard_ExecutorRun (queryDesc=0x55b084063228, direction=<optimized out>, count=0, execute_once=<optimized out>) at executor/./build/../src/backend/executor/execMain.c:361
#20 0x000055b08174a255 in ExecutorRun (execute_once=true, count=0, direction=ForwardScanDirection, queryDesc=0x55b084063228) at executor/./build/../src/backend/executor/execMain.c:307
#21 ProcessQuery (plan=plan@entry=0x55b08368e710, sourceText=<optimized out>, params=<optimized out>, queryEnv=<optimized out>, dest=dest@entry=0x55b0840631a0, qc=qc@entry=0x7fffc37364e0)
   at tcop/./build/../src/backend/tcop/pquery.c:160
#22 0x000055b08174bc82 in PortalRunMulti (portal=portal@entry=0x55b08362a7c8, isTopLevel=isTopLevel@entry=true, setHoldSnapshot=setHoldSnapshot@entry=true, dest=dest@entry=0x55b0840631a0, 
   altdest=0x55b081c2f400 <donothingDR.lto_priv.0>, qc=qc@entry=0x7fffc37364e0) at tcop/./build/../src/backend/tcop/pquery.c:1275
#23 0x000055b08174be35 in FillPortalStore (portal=0x55b08362a7c8, isTopLevel=<optimized out>) at tcop/./build/../src/backend/tcop/pquery.c:1024
#24 0x000055b08174c29f in PortalRun (portal=0x55b08362a7c8, count=9223372036854775807, isTopLevel=<optimized out>, run_once=<optimized out>, dest=0x55b083558a78, altdest=0x55b083558a78, qc=0x7fffc37367c0)
   at tcop/./build/../src/backend/tcop/pquery.c:761
#25 0x000055b08174db05 in exec_execute_message (max_rows=<optimized out>, portal_name=0x55b083556c58 "") at tcop/./build/../src/backend/tcop/postgres.c:2255
#26 PostgresMain (dbname=<optimized out>, username=<optimized out>) at tcop/./build/../src/backend/tcop/postgres.c:4834
#27 0x000055b08174403f in BackendMain (startup_data=<optimized out>, startup_data_len=<optimized out>) at tcop/./build/../src/backend/tcop/backend_startup.c:105
#28 0x000055b0816a1686 in postmaster_child_launch (child_type=B_BACKEND, startup_data=0x7fffc3736b60 "", startup_data_len=4, client_sock=0x7fffc3736b80) at postmaster/./build/../src/backend/postmaster/launch_backend.c:277
#29 0x000055b0816adc01 in postmaster_child_launch (client_sock=0x7fffc3736b80, startup_data_len=4, startup_data=0x7fffc3736b60 "", child_type=B_BACKEND) at postmaster/./build/../src/backend/postmaster/postmaster.c:3696
#30 BackendStartup (client_sock=0x7fffc3736b80) at postmaster/./build/../src/backend/postmaster/postmaster.c:3594
#31 ServerLoop () at postmaster/./build/../src/backend/postmaster/postmaster.c:1676
#32 0x000055b0816ae9e0 in PostmasterMain (argc=5, argv=<optimized out>) at postmaster/./build/../src/backend/postmaster/postmaster.c:1374
#33 0x000055b08134df11 in main (argc=5, argv=0x55b0834c1e40) at main/./build/../src/backend/main/main.c:199

Relevant code

TupleTableSlot *
ExecGetUpdateNewTuple(ResultRelInfo *relinfo,
					  TupleTableSlot *planSlot,
					  TupleTableSlot *oldSlot)
{
	ProjectionInfo *newProj = relinfo->ri_projectNew;
	ExprContext *econtext;

	/* Use a few extra Asserts to protect against outside callers */
	Assert(relinfo->ri_projectNewInfoValid);
	Assert(planSlot != NULL && !TTS_EMPTY(planSlot));
	Assert(oldSlot != NULL && !TTS_EMPTY(oldSlot));

	econtext = newProj->pi_exprContext; // <--- `newProj` is NULL here.
	econtext->ecxt_outertuple = planSlot;
	econtext->ecxt_scantuple = oldSlot;
	return ExecProject(newProj);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment