On Fri, Sep 10, 2010 at 1:45 PM, Bruce Momjian <br...@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

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to