Hi, On 2014-10-26 08:52:42 +1100, Haribabu Kommi wrote: > I am thinking of a possible problem with shm_mq structure spin lock. > This is used for protecting the shm_mq structure. > > During the processing of any code under the spin lock, if the process > receives SIGQUIT signal then it is leading to a dead lock situation. > > SIGQUIT->proc_exit->shm_mq_detach->try to acquire spin lock. The spin > lock is already took by the process. > > It is very dificult to reproduce the problem as because the code under > the lock is very minimal. > Please let me know if I missed anything.
I think you missed the following bit in postgres.c: /* * quickdie() occurs when signalled SIGQUIT by the postmaster. * * Some backend has bought the farm, * so we need to stop what we're doing and exit. */ void quickdie(SIGNAL_ARGS) { ... /* * We DO NOT want to run proc_exit() callbacks -- we're here because * shared memory may be corrupted, so we don't want to try to clean up our * transaction. Just nail the windows shut and get out of town. Now that * there's an atexit callback to prevent third-party code from breaking * things by calling exit() directly, we have to reset the callbacks * explicitly to make this work as intended. */ on_exit_reset(); .. Greetings, Andres Freund -- Andres Freund http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers