On Wed, Jun 11, 2025 at 5:26 PM Andrey Rudometov
<unlimitedhik...@gmail.com> wrote:
>
> Good day, hackers.
>
> Reading through changes committed in master, I noticed that after
> CleanupBackend/CleanupBackroundworker refactor background workers will fail to
> start again after postgres' restart with restart_after_crash = on.
>
> The reason is CleanupBackend and HandleChildCrash not setting background 
> worker's
> rw_pid to zero anymore, if backend, well, crashed and failed to call 
> shmem_exit
> and mark PMChild slot as inactive via MarkPostmasterChildInactive.
>
> Suggested solution is to finish CleanupBackend's background worker related 
> logic
> even after treating the child process as crashed. In earlier versions zeroing 
> of
> pids happen in HandleChildCrash anyway, so there should be no harm in doing
> the same actions here.
>
> For fast reproduction I used pg_prewarm extension, as it creates observable 
> bgworker
> and is present in postgres tree, so tap test is easy to run.

Thanks for the report and patch! This same issue was also reported in
thread [1], where there's ongoing discussion about how to address it.

Regards,

[1] https://postgr.es/m/tencent_e00a056b3953ee6440f0f40f80ec30427...@qq.com

-- 
Fujii Masao


Reply via email to