On Fri, Jun 14, 2024 at 12:06:36PM +0500, Andrey M. Borodin wrote:
> I’ve tried to dig into the test.
> The problem is CV is allocated in
>
> inj_state = GetNamedDSMSegment("injection_points”,
>
> which seems to be destroyed in
>
> shmem_exit() calling dsm_backend_shutdown()
>
> This happens before we broadcast that sleep is over.
> I think this might happen with any wait on injection point if it is
> pg_terminate_backend()ed.
Except if I am missing something, this is not a problem for a normal
backend, for example with one using a `SELECT injection_points_run()`.
> Is there way to wake up from CV sleep before processing actual termination?
I am honestly not sure if this is worth complicating the sigjmp path
of the autovacuum worker just for the sake of this test. It seems to
me that it would be simple enough to move the injection point
autovacuum-worker-start within the transaction block a few lines down
in do_autovacuum(), no?
--
Michael