Commit 470d886c authored by Robert Haas's avatar Robert Haas

Use PostmasterRandom(), not random(), for DSM control segment ID.

Otherwise, every startup gets the same "random" value, which is
definitely not what was intended.
parent 419113df
......@@ -403,7 +403,6 @@ static void processCancelRequest(Port *port, void *pkt);
static int initMasks(fd_set *rmask);
static void report_fork_failure_to_client(Port *port, int errnum);
static CAC_state canAcceptConnections(void);
static long PostmasterRandom(void);
static void RandomSalt(char *salt, int len);
static void signal_child(pid_t pid, int signal);
static bool SignalSomeChildren(int signal, int targets);
......@@ -5101,7 +5100,7 @@ RandomSalt(char *salt, int len)
/*
* PostmasterRandom
*/
static long
long
PostmasterRandom(void)
{
/*
......
......@@ -36,6 +36,7 @@
#include "lib/ilist.h"
#include "miscadmin.h"
#include "postmaster/postmaster.h"
#include "storage/dsm.h"
#include "storage/ipc.h"
#include "storage/lwlock.h"
......@@ -181,7 +182,7 @@ dsm_postmaster_startup(PGShmemHeader *shim)
{
Assert(dsm_control_address == NULL);
Assert(dsm_control_mapped_size == 0);
dsm_control_handle = random();
dsm_control_handle = (dsm_handle) PostmasterRandom();
if (dsm_control_handle == 0)
continue;
if (dsm_impl_op(DSM_OP_CREATE, dsm_control_handle, segsize,
......
......@@ -48,6 +48,7 @@ extern const char *progname;
extern void PostmasterMain(int argc, char *argv[]) pg_attribute_noreturn();
extern void ClosePostmasterPorts(bool am_syslogger);
extern long PostmasterRandom(void);
extern int MaxLivePostmasterChildren(void);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment