I Inoue wrote: > > Tom Lane wrote: > > > > Hiroshi Inoue <[EMAIL PROTECTED]> writes: > > > [ backtrace snipped ] > > > > Hmm, this is definitely not operating as intended: LockWaitCancel is > > getting interrupted, because ProcessInterrupts may be called when it's > > trying to acquire the lockmanager spinlock, and ProcessInterrupts will > > see the ProcDiePending flag already set. I think the correct fix (or > > at least part of it) is in postgres.c's die(): > > > > /* > > * If it's safe to interrupt, and we're waiting for input or a lock, > > * service the interrupt immediately > > */ > > if (ImmediateInterruptOK && InterruptHoldoffCount == 0 && > > CritSectionCount == 0) > > { > > + /* bump holdoff count to make ProcessInterrupts() a no-op */ > > + /* until we are done getting ready for it */ > > + InterruptHoldoffCount++; > > DisableNotifyInterrupt(); > > /* Make sure HandleDeadLock won't run while shutting down... */ > > LockWaitCancel(); > > + InterruptHoldoffCount--; > > ProcessInterrupts(); > > } > > > > QueryCancelHandler probably needs similar additions. > > > > Agreed. Adding similar code to QueryCancelHandler seems > sufficient. > Is it OK to commit the change before 7.1 release ? I want to do it before forgetting this issue. (I've completely forgotten the CheckPoint hang problem I reported once until I see your report today). Regards, Hiroshi Inoue ---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster

Reply via email to