Patch-ID# 109384-10 Keywords: libaio aio_error aio_error64 einprogress _aio_rw sigio aiowrite Synopsis: SunOS 5.8: libaio patch Date: Feb/04/2004 Install Requirements: Install in Single User Mode Reboot immediately after patch is installed 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 4501001 4502769 4514606 4636591 4665847 4673944 4709171 4785625 4914854 Changes incorporated in this version: 4501001 4709171 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: 4709171 SUITES/S_3/ts_aioread/tc_aioread.003, tc_aiowrite.003, tc_aiowrite.010 UNRESOLVE 4501001 Incorrect behavior in libaio (from 109384-09) 4914854 libaio: race condition - enter() in elf_bndr() does not work as lock. (from 109384-08) 4673944 Receiving a SIGIO while doing an aiowrite causes application to hang (from 109384-07) 4785625 Oracle LGWR crashes with EINVAL (from 109384-06) 4636591 libaio can starve aiowait'ers in the kernel of results. (from 109384-05) 4665847 lio_listio leaks memory in LIO_NOWAIT mode (from 109384-04) 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-9 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, February 4, 2004