BUG #15804: Assertion failure when using logging_collector with EXEC_BACKEND

The Post Office <noreply@postgresql.org>

From: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: yuli.khodorkovskiy@crunchydata.com
Date: 2019-05-14T18:28:44Z
Lists: pgsql-bugs
The following bug has been logged on the website:

Bug reference:      15804
Logged by:          Yulian Khodorkovskiy
Email address:      yuli.khodorkovskiy@crunchydata.com
PostgreSQL version: Unsupported/Unknown
Operating system:   Centos 7.4
Description:        

The following assertion fails when compiling postgres 12 on Linux (centos
7.4) with EXEC_BACKEND and logging_collector enabled:

    `Assert(UsedShmemSegAddr != NULL);` in `PGSharedMemoryNoReAttach()`

Commit 57431a911d3a650451d198846ad3194900666152 appears to have introduced
this regression by moving SysLogger_Start() before reset_shared() is called
and shared memory is initialized.

For what it's worth, Windows 10/jacana (and maybe other windows builds) on
the build farm does not use logging_collector, which is perhaps why this
regression was not caught.

Yuli

Commits

  1. Rearrange postmaster's startup sequence for better syslogger results.

  2. Improve logrotate test so that it meaningfully exercises syslogger.

  3. Revert "postmaster: Start syslogger earlier".

  4. postmaster: Start syslogger earlier