SIGSEGV in GrantLockLocal()
Richard Guo <guofenglinux@gmail.com>
From: Richard Guo <guofenglinux@gmail.com>
To: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2024-12-18T06:17:34Z
Lists: pgsql-hackers
Recently, I've encountered a core dump several times on master, with a backtrace like the one below. This one happened on 0f23dedc9. I was running some fuzz testing and had started around 20 sessions concurrently. (gdb) bt #0 in GrantLockLocal at lock.c:1758 #1 in GrantAwaitedLock at lock.c:1840 #2 in LockErrorCleanup at proc.c:809 #3 in AbortTransaction at xact.c:2846 #4 in AbortCurrentTransactionInternal at xact.c:3520 #5 in AbortCurrentTransaction at xact.c:3449 #6 in PostgresMain at postgres.c:4535 #7 in BackendMain at backend_startup.c:107 #8 in postmaster_child_launch at launch_backend.c:274 #9 in BackendStartup at postmaster.c:3391 #10 in ServerLoop at postmaster.c:1678 #11 in PostmasterMain at postmaster.c:1376 #12 in main at main.c:224 It seems that the lock request is not granted as expected, since locallock->lockOwners is a NULL pointer. (gdb) p locallock->lockOwners $4 = (LOCALLOCKOWNER *) 0x0 (gdb) p locallock->numLockOwners $5 = 0 (gdb) p locallock->maxLockOwners $6 = 8 Unfortunately, I don't have a reliable way to trigger this issue. I'm wondering if anyone has any insights into what might be happening. Thanks Richard
Commits
-
Fix crash if LockErrorCleanup() is called twice
- 51a0382e8d87 18.0 landed
-
Split ProcSleep function into JoinWaitQueue and ProcSleep
- 3c0fd64fec8e 18.0 cited