Patch-ID# 109384-01
Keywords: libaio aio_error aio_error64 EINPROGRESS _aio_rw
Synopsis: SunOS 5.8: libaio patch
Date: 15/Apr/00

Solaris Release: 8

SunOS release: 5.8

Unbundled Product: 

Unbundled Release: 

Topic: SunOS 5.8: libaio patch

BugId's fixed with this patch: 4253437 

Changes incorporated in this version: 

Relevant Architectures: sparc

Patches accumulated and obsoleted by this patch:  

Patches which conflict with this patch: 

Patches required with this patch: 

Obsoleted by: 

Files included with this patch:

/usr/lib/libaio.so.1
/usr/lib/sparcv9/libaio.so.1

Problem Description:

4253437 Ansync I/O problem.

	The problem was that the aio_error()/aio_error64() call in 
	application's signal handler returns EINPROGRESS even though it 
	received the notification from the kernel(using signal) about the 
	I/O completion. This is because of bug in libaio.

	The aio_state is set to CHECK in _aio_rw() after the kaio() call. 
	If the I/O completes before the kaio() returns back to user mode 
	and when the aio_error() is called from the signal handler, 
	aio_error() returns EINPROGRESS because aio_state is still NOCHECK.
	
Patch Installation Instructions:
--------------------------------

For Solaris 2.0-2.6 releases, refer to the Install.info file and/or
the README within the patch for instructions on using the generic
'installpatch' and 'backoutpatch' scripts provided with each patch.

For Solaris 7-8 releases, refer to the man pages for instructions
on using 'patchadd' and 'patchrm' scripts provided with Solaris.
Any other special or non-generic installation instructions should be
described below as special instructions.  The following example
installs a patch to a standalone machine:

       example# patchadd /var/spool/patch/104945-02

The following example removes a patch from a standalone system:

       example# patchrm 104945-02

For additional examples please see the appropriate man pages.

Special Install Instructions: 
----------------------------- 

none

