OBSOLETE Patch-ID# 109384-04
Keywords: libaio aio_error aio_error64 EINPROGRESS _aio_rw SIGIO
Synopsis: Obsoleted by: 109384-06 SunOS 5.8: libaio patch
Date: Jun/03/2002

Install Requirements: None                      
                      
Solaris Release: 8

SunOS Release: 5.8

Unbundled Product: 

Unbundled Release: 

Xref: This patch available for x86 as patch 109385

Topic: SunOS 5.8: libaio patch

Relevant Architectures: sparc

BugId's fixed with this patch: 4222080 4253437 4457358 4502769 4514606

Changes incorporated in this version: 4222080 4514606

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/abi/abi_libaio.so.1
/usr/lib/abi/sparcv9/abi_libaio.so.1
/usr/lib/libaio.so.1
/usr/lib/sparcv9/libaio.so.1

Problem Description:

4222080 aio_write - value of siginfo.si_value.sival_ptr is not equal &myaiocb
4514606 lio_listio leaks memory
 
(from 109384-03)
 
4502769 race condition in posix aio can cause incorrect returns from aio_return().
 
(from 109384-02)
 
4457358 __aiosendsig() alters signal mask(SIGIO) but *does not* restore back
 
(from 109384-01)
 
4253437 Async 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.

README -- Last modified date:  Wednesday, November 13, 2002

