On Mon Dec 4, 2023 at 6:49 AM CST, Heikki Linnakangas wrote:
This came up in the "Refactoring backend fork+exec code" thread recently
[0], but is independent of that work:
On 11/07/2023 01:50, Andres Freund wrote:
>> --- a/src/backend/storage/ipc/shmem.c
>> +++ b/src/backend/storage/ipc/shmem.c
>> @@ -144,6 +144,8 @@ InitShmemAllocation(void)
>> /*
>> * Initialize ShmemVariableCache for transaction manager. (This
doesn't
>> * really belong here, but not worth moving.)
>> + *
>> + * XXX: we really should move this
>> */
>> ShmemVariableCache = (VariableCache)
>> ShmemAlloc(sizeof(*ShmemVariableCache));
>
> Heh. Indeed. And probably just rename it to something less insane.
Here's a patch to allocate and initialize it with a pair of ShmemSize
and ShmemInit functions, like all other shared memory structs.
+ if (!IsUnderPostmaster)
+ {
+ Assert(!found);
+ memset(ShmemVariableCache, 0, sizeof(VariableCacheData));
+ }
+ else
+ Assert(found);
Should the else branch instead be a fatal log?
Patches look good to me.
--
Tristan Partin
Neon (https://neon.tech)