*Synopsis*: read(2) can return EIO if called via ksh built-in exec with stderr closed and auditing enabled
CR 6764531 changed on Feb 14 2009 by <User 1-5Q-5159> === Field ============ === New Value ============= === Old Value ============= Hook 6 <email address omitted> ====================== =========================== =========================== *Change Request ID*: 6764531 *Synopsis*: read(2) can return EIO if called via ksh built-in exec with stderr closed and auditing enabled Product: solaris Category: shell Subcategory: korn Type: Defect Subtype: Status: 7-Fix in Progress Substatus: Priority: 3-Medium Introduced In Release: solaris_2.0 Introduced In Build: solaris_2.0 Responsible Engineer: <User 1-5Q-5159> Keywords: === *Description* ============================================================ The conjunction of following factors kills ksh login shell : Solaris 5.8 + BSM active + ksh login shell + 'exec' to run a program that does blocking IO + stderr redirection. Change one of these factors and the pb disappears. Comparing trusses, the pb seems to come from the fact that the read() is done in non blocking mode when it fails, for an unknown reason . no_bsm : -> libc:read(0x0, 0x58018, 0x400, 0x0) -> libc:_read(0x0, 0x58018, 0x400, 0x0) read(0, 0x00058018, 1024) (sleeping...) read(0, " a a\n", 1024) = 3 <- libc:read() = 3 -> libc:wcschr(0x54920, 0x61, 0x0, 0x2) bsm : -> libc:read(0x0, 0x58018, 0x400, 0x0) -> libc:_read(0x0, 0x58018, 0x400, 0x0) read(0, 0x00058018, 1024) Err#5 EIO -> libc:_cerror(0x5, 0x58018, 0x400, 0x0) -> libc:___errno(0x0, 0x0, 0x0, 0x0) -> libc:thr_main(0x0, 0x24050, 0x0, 0x0) The pb has been reproduced in my lab with a standard BSM config , either with the following shell script or with a C prog. that does blocking IO. /etc/passwd contains : jbrialt:x:1000000:1:Jocelyn Brial case 38164917:/usr/tmp/jbrial:/bin/ksh /etc/audit_user contains : root:lo:no jbrialt:all:no $ cat test.ksh #!/bin/ksh # # echo "Insert a string: \c" read value echo "You've inserted the string "$valore $ $ exec test.ksh 2>/dev/null Insert a string: You've inserted the string Connection to s4u-8-gmp02.uk.Sun.COM closed. sr1-epar01-03% ( the user was not allowed time to enter a string ) *** (#1 of 1): 2008-10-28 14:52:43 GMT+00:00 <User 1-5Q-2332> === *Public Comments* ======================================================== === *Workaround* ============================================================= === *Additional Details* ===================================================== Targeted Release: solaris_nevada Commit To Fix In Build: snv_109 Fixed In Build: Integrated In Build: Verified In Build: See Also: Duplicate of: Hooks: Hook1: Hook2: Hook3: Hook4: Hook5: Hook6: <email address omitted> Program Management: Root Cause: Inadequate Algorithm Fix Affects Documentation: No Fix Affects Localization: No === *History* ================================================================ Date Submitted: 2008-10-28 14:52:43 GMT+00:00 Submitted By: <User 1-5Q-2332> Status Changed Date Updated Updated By 3-Accepted 2008-12-08 17:31:10 GMT+00:00 <User 1-5Q-5159> 7-Fix in Progress 2009-01-19 15:48:46 GMT+00:00 <User 1-5Q-5159> === *Service Request* ======================================================== Impact: Significant Functionality: Secondary Severity: 3 Product Name: solaris Product Release: solaris_8 Product Build: 5.8 Operating System: 2.8 Hardware: generic Submitted Date: 2008-10-28 14:52:44 GMT+00:00 === *Multiple Release (MR) Cluster* - 0 ======================================