Re: BUG #15804: Assertion failure when using logging_collector with EXEC_BACKEND

Yuli Khodorkovskiy <yuli.khodorkovskiy@crunchydata.com>

From: Yuli Khodorkovskiy <yuli.khodorkovskiy@crunchydata.com>
To: Yuli Khodorkovskiy <yuli.khodorkovskiy@crunchydata.com>, pgsql-bugs@lists.postgresql.org
Date: 2019-05-14T18:45:09Z
Lists: pgsql-bugs

Attachments


> On May 14, 2019, at 2:28 PM, PG Bug reporting form <noreply@postgresql.org> wrote:
> 
> 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
> 

Attached is a patch that fixes the issue in the bug report.

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