It is reported that pgpool child process crashes during shutdown.
[pgpool-general: 9261] Re: Segmentation fault during shutdown
The actual crash was in close_all_backend_connections().
close_all_backend_connections() was called because on_system_exit
registers child_will_ho_down(). At the moment it seems pgpool child
had just started up and doing pool_init_cp(). The connection pool
object had not been completely initialized, that's cause of the crash.
To fix this, just remove the call to close_all_backend_connections()
in child_will_ho_down(). Although this will prevent the terminate
message ('X') being sent to backend, it should be harmless since
backend can take care such a disconnection without a terminate
message.
Problem reported and analyzed by: Emond Papegaaij
Backpatch-through: v4.2
Discussion: https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html
memcached_disconnect();
}
- /* let backend know now we are exiting */
- if (pool_connection_pool)
- close_all_backend_connections();
+ /*
+ * We used to call close_all_backend_connections() here so that we send
+ * 'X' (terminate) message to backend. However it was possible that the
+ * function is called while initializing the connection pool object, which
+ * leads to crash. So we stopped to call close_all_backend_connections().
+ */
}
/*