On Fri, Sep 10, 2010 at 1:45 PM, Bruce Momjian <bruce@momjian.us> wrote:
>
> I am not sure how clear it is on Win32 that 128 is a special return
> code.
I asked Microsoft platform support (roughly) that question. Here's the response:
=====
From NTSTATUS.H
//
// The success status codes 128 - 191 are reserved for wait completion
// status with an abandoned mutant object.
//
#define STATUS_ABANDONED ((NTSTATUS)0x00000080L)
//
// MessageId: STATUS_ABANDONED_WAIT_0
//
// MessageText:
//
// STATUS_ABANDONED_WAIT_0
//
#define STATUS_ABANDONED_WAIT_0 ((NTSTATUS)0x00000080L) // winnt
I believe what you are seeing is an abandoned wait on a mutant which
is the same as a mutex. Therefore this error will be set whenever a
mutex is abandoned.
Per Concurrent Programming on Windows
An abandoned mutex is a mutex kernel object that was not correctly
released before its owning thread terminated. This can happen for any
number of reasons.
He goes on to discuss the case of a thread waiting on a global mutex
that will get this error when it is awakened from a wait and the mutex
had been abandoned by the previous owner. This is a difficult
situation to recover from as you are not sure about the shared state
that was being protected by the mutex. It
Therefore I cannot give you specific areas where this will happen. Of
course when systems are low on resources or they are completely
depleted (100% CPU) things will stop working
=====
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise Postgres Company