summaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/main/main.c17
-rw-r--r--src/backend/postmaster/autovacuum.c4
-rw-r--r--src/backend/postmaster/pgarch.c2
-rw-r--r--src/backend/postmaster/pgstat.c2
-rw-r--r--src/backend/postmaster/postmaster.c38
-rw-r--r--src/backend/postmaster/syslogger.c1
-rw-r--r--src/backend/replication/walsender.c10
-rw-r--r--src/backend/tcop/postgres.c9
-rw-r--r--src/backend/utils/misc/help_config.c4
9 files changed, 42 insertions, 45 deletions
diff --git a/src/backend/main/main.c b/src/backend/main/main.c
index c7d48e95ad..33c5a0a4e6 100644
--- a/src/backend/main/main.c
+++ b/src/backend/main/main.c
@@ -173,7 +173,7 @@ main(int argc, char *argv[])
#ifdef EXEC_BACKEND
if (argc > 1 && strncmp(argv[1], "--fork", 6) == 0)
- exit(SubPostmasterMain(argc, argv));
+ SubPostmasterMain(argc, argv); /* does not return */
#endif
#ifdef WIN32
@@ -189,14 +189,13 @@ main(int argc, char *argv[])
if (argc > 1 && strcmp(argv[1], "--boot") == 0)
AuxiliaryProcessMain(argc, argv); /* does not return */
-
- if (argc > 1 && strcmp(argv[1], "--describe-config") == 0)
- exit(GucInfoMain());
-
- if (argc > 1 && strcmp(argv[1], "--single") == 0)
- exit(PostgresMain(argc, argv, get_current_username(progname)));
-
- exit(PostmasterMain(argc, argv));
+ else if (argc > 1 && strcmp(argv[1], "--describe-config") == 0)
+ GucInfoMain(); /* does not return */
+ else if (argc > 1 && strcmp(argv[1], "--single") == 0)
+ PostgresMain(argc, argv, get_current_username(progname)); /* does not return */
+ else
+ PostmasterMain(argc, argv); /* does not return */
+ abort(); /* should not get here */
}
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c
index 1cfac9e80b..dade5cc3c0 100644
--- a/src/backend/postmaster/autovacuum.c
+++ b/src/backend/postmaster/autovacuum.c
@@ -269,8 +269,8 @@ int AutovacuumLauncherPid = 0;
static pid_t avlauncher_forkexec(void);
static pid_t avworker_forkexec(void);
#endif
-NON_EXEC_STATIC void AutoVacWorkerMain(int argc, char *argv[]);
-NON_EXEC_STATIC void AutoVacLauncherMain(int argc, char *argv[]);
+NON_EXEC_STATIC void AutoVacWorkerMain(int argc, char *argv[]) __attribute__((noreturn));
+NON_EXEC_STATIC void AutoVacLauncherMain(int argc, char *argv[]) __attribute__((noreturn));
static Oid do_start_worker(void);
static void launcher_determine_sleep(bool canlaunch, bool recursing,
diff --git a/src/backend/postmaster/pgarch.c b/src/backend/postmaster/pgarch.c
index 5c43cdde65..d5d8be0587 100644
--- a/src/backend/postmaster/pgarch.c
+++ b/src/backend/postmaster/pgarch.c
@@ -101,7 +101,7 @@ static Latch mainloop_latch;
static pid_t pgarch_forkexec(void);
#endif
-NON_EXEC_STATIC void PgArchiverMain(int argc, char *argv[]);
+NON_EXEC_STATIC void PgArchiverMain(int argc, char *argv[]) __attribute__((noreturn));
static void pgarch_exit(SIGNAL_ARGS);
static void ArchSigHupHandler(SIGNAL_ARGS);
static void ArchSigTermHandler(SIGNAL_ARGS);
diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c
index 243dc8bc53..2371cd2ff9 100644
--- a/src/backend/postmaster/pgstat.c
+++ b/src/backend/postmaster/pgstat.c
@@ -243,7 +243,7 @@ static instr_time total_func_time;
static pid_t pgstat_forkexec(void);
#endif
-NON_EXEC_STATIC void PgstatCollectorMain(int argc, char *argv[]);
+NON_EXEC_STATIC void PgstatCollectorMain(int argc, char *argv[]) __attribute__((noreturn));
static void pgstat_exit(SIGNAL_ARGS);
static void pgstat_beshutdown_hook(int code, Datum arg);
static void pgstat_sighup_handler(SIGNAL_ARGS);
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index eeea933b19..913734fbd0 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -343,8 +343,8 @@ static void LogChildExit(int lev, const char *procname,
int pid, int exitstatus);
static void PostmasterStateMachine(void);
static void BackendInitialize(Port *port);
-static int BackendRun(Port *port);
-static void ExitPostmaster(int status);
+static void BackendRun(Port *port) __attribute__((noreturn));
+static void ExitPostmaster(int status) __attribute__((noreturn));
static int ServerLoop(void);
static int BackendStartup(Port *port);
static int ProcessStartupPacket(Port *port, bool SSLdone);
@@ -491,7 +491,7 @@ HANDLE PostmasterHandle;
/*
* Postmaster main entry point
*/
-int
+void
PostmasterMain(int argc, char *argv[])
{
int opt;
@@ -1125,7 +1125,7 @@ PostmasterMain(int argc, char *argv[])
*/
ExitPostmaster(status != STATUS_OK);
- return 0; /* not reached */
+ abort(); /* not reached */
}
@@ -3295,7 +3295,7 @@ BackendStartup(Port *port)
BackendInitialize(port);
/* And run the backend */
- proc_exit(BackendRun(port));
+ BackendRun(port);
}
#endif /* EXEC_BACKEND */
@@ -3539,7 +3539,7 @@ BackendInitialize(Port *port)
* Shouldn't return at all.
* If PostgresMain() fails, return status.
*/
-static int
+static void
BackendRun(Port *port)
{
char **av;
@@ -3610,7 +3610,7 @@ BackendRun(Port *port)
*/
MemoryContextSwitchTo(TopMemoryContext);
- return (PostgresMain(ac, av, port->user_name));
+ PostgresMain(ac, av, port->user_name);
}
@@ -3960,7 +3960,7 @@ internal_forkexec(int argc, char *argv[], Port *port)
* have been inherited by fork() on Unix. Remaining arguments go to the
* subprocess FooMain() routine.
*/
-int
+void
SubPostmasterMain(int argc, char *argv[])
{
Port port;
@@ -4111,7 +4111,7 @@ SubPostmasterMain(int argc, char *argv[])
CreateSharedMemoryAndSemaphores(false, 0);
/* And run the backend */
- proc_exit(BackendRun(&port));
+ BackendRun(&port); /* does not return */
}
if (strcmp(argv[1], "--forkboot") == 0)
{
@@ -4127,8 +4127,7 @@ SubPostmasterMain(int argc, char *argv[])
/* Attach process to shared data structures */
CreateSharedMemoryAndSemaphores(false, 0);
- AuxiliaryProcessMain(argc - 2, argv + 2);
- proc_exit(0);
+ AuxiliaryProcessMain(argc - 2, argv + 2); /* does not return */
}
if (strcmp(argv[1], "--forkavlauncher") == 0)
{
@@ -4144,8 +4143,7 @@ SubPostmasterMain(int argc, char *argv[])
/* Attach process to shared data structures */
CreateSharedMemoryAndSemaphores(false, 0);
- AutoVacLauncherMain(argc - 2, argv + 2);
- proc_exit(0);
+ AutoVacLauncherMain(argc - 2, argv + 2); /* does not return */
}
if (strcmp(argv[1], "--forkavworker") == 0)
{
@@ -4161,8 +4159,7 @@ SubPostmasterMain(int argc, char *argv[])
/* Attach process to shared data structures */
CreateSharedMemoryAndSemaphores(false, 0);
- AutoVacWorkerMain(argc - 2, argv + 2);
- proc_exit(0);
+ AutoVacWorkerMain(argc - 2, argv + 2); /* does not return */
}
if (strcmp(argv[1], "--forkarch") == 0)
{
@@ -4171,8 +4168,7 @@ SubPostmasterMain(int argc, char *argv[])
/* Do not want to attach to shared memory */
- PgArchiverMain(argc, argv);
- proc_exit(0);
+ PgArchiverMain(argc, argv); /* does not return */
}
if (strcmp(argv[1], "--forkcol") == 0)
{
@@ -4181,8 +4177,7 @@ SubPostmasterMain(int argc, char *argv[])
/* Do not want to attach to shared memory */
- PgstatCollectorMain(argc, argv);
- proc_exit(0);
+ PgstatCollectorMain(argc, argv); /* does not return */
}
if (strcmp(argv[1], "--forklog") == 0)
{
@@ -4191,11 +4186,10 @@ SubPostmasterMain(int argc, char *argv[])
/* Do not want to attach to shared memory */
- SysLoggerMain(argc, argv);
- proc_exit(0);
+ SysLoggerMain(argc, argv); /* does not return */
}
- return 1; /* shouldn't get here */
+ abort(); /* shouldn't get here */
}
#endif /* EXEC_BACKEND */
diff --git a/src/backend/postmaster/syslogger.c b/src/backend/postmaster/syslogger.c
index 25d095b158..919cc49fa9 100644
--- a/src/backend/postmaster/syslogger.c
+++ b/src/backend/postmaster/syslogger.c
@@ -139,6 +139,7 @@ static volatile sig_atomic_t rotation_requested = false;
static pid_t syslogger_forkexec(void);
static void syslogger_parseArgs(int argc, char *argv[]);
#endif
+NON_EXEC_STATIC void SysLoggerMain(int argc, char *argv[]) __attribute__((noreturn));
static void process_pipe_input(char *logbuffer, int *bytes_in_logbuffer);
static void flush_pipe_input(char *logbuffer, int *bytes_in_logbuffer);
static void open_csvlogfile(void);
diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c
index d5cb778f7e..616d4e73e3 100644
--- a/src/backend/replication/walsender.c
+++ b/src/backend/replication/walsender.c
@@ -120,7 +120,7 @@ static void WalSndLastCycleHandler(SIGNAL_ARGS);
/* Prototypes for private functions */
static bool HandleReplicationCommand(const char *cmd_string);
-static int WalSndLoop(void);
+static void WalSndLoop(void) __attribute__((noreturn));
static void InitWalSnd(void);
static void WalSndHandshake(void);
static void WalSndKill(int code, Datum arg);
@@ -135,7 +135,7 @@ static void WalSndKeepalive(char *msgbuf);
/* Main entry point for walsender process */
-int
+void
WalSenderMain(void)
{
MemoryContext walsnd_context;
@@ -192,7 +192,7 @@ WalSenderMain(void)
SyncRepInitConfig();
/* Main loop of walsender */
- return WalSndLoop();
+ WalSndLoop();
}
/*
@@ -706,7 +706,7 @@ ProcessStandbyHSFeedbackMessage(void)
}
/* Main loop of walsender process */
-static int
+static void
WalSndLoop(void)
{
char *output_message;
@@ -882,7 +882,7 @@ WalSndLoop(void)
whereToSendOutput = DestNone;
proc_exit(0);
- return 1; /* keep the compiler quiet */
+ abort(); /* keep the compiler quiet */
}
/* Initialize a per-walsender data structure for this walsender process */
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 51b6df54f4..9a5438f18a 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -3507,7 +3507,7 @@ process_postgres_switches(int argc, char *argv[], GucContext ctx)
* for the session.
* ----------------------------------------------------------------
*/
-int
+void
PostgresMain(int argc, char *argv[], const char *username)
{
const char *dbname;
@@ -3721,7 +3721,10 @@ PostgresMain(int argc, char *argv[], const char *username)
/* If this is a WAL sender process, we're done with initialization. */
if (am_walsender)
- proc_exit(WalSenderMain());
+ {
+ WalSenderMain(); /* does not return */
+ abort();
+ }
/*
* process any libraries that should be preloaded at backend start (this
@@ -4199,7 +4202,7 @@ PostgresMain(int argc, char *argv[], const char *username)
/* can't get here because the above loop never exits */
Assert(false);
- return 1; /* keep compiler quiet */
+ abort(); /* keep compiler quiet */
}
diff --git a/src/backend/utils/misc/help_config.c b/src/backend/utils/misc/help_config.c
index 5f772f9671..386ec98a32 100644
--- a/src/backend/utils/misc/help_config.c
+++ b/src/backend/utils/misc/help_config.c
@@ -43,7 +43,7 @@ static void printMixedStruct(mixedStruct *structToPrint);
static bool displayStruct(mixedStruct *structToDisplay);
-int
+void
GucInfoMain(void)
{
struct config_generic **guc_vars;
@@ -64,7 +64,7 @@ GucInfoMain(void)
printMixedStruct(var);
}
- return 0;
+ exit(0);
}