*Synopsis*: ksh93 cores as well when application invoked from script cores Due to a change requested by <User 1-UM-1398>, <User 1-UM-1398> is now the responsible engineer for:
CR 7008357 changed on Feb 3 2011 by <User 1-UM-1398> === Field ============ === New Value ============= === Old Value ============= Responsible Engineer <User 1-UM-1398> <User 1-5Q-8426> ====================== =========================== =========================== *Change Request ID*: 7008357 *Synopsis*: ksh93 cores as well when application invoked from script cores Product: solaris Category: shell Subcategory: korn93 Type: Defect Subtype: Status: 5-Cause Known Substatus: Priority: 2-High Introduced In Release: Introduced In Build: Responsible Engineer: <User 1-UM-1398> Keywords: === *Description* ============================================================ Let's have a program that is generating core: $ cat a.c int main(void) { int *i = 0; *i = 0; return 0; } $ gcc a.c $ ./a.out Segmentation Fault (core dumped) $ Let's have a script where the program is invoked: $ cat a.sh echo a | ./a.out $ When the script is run by ksh93, then the ksh93 cores instead of the program: $ /bin/ksh93 a.sh a.sh: line 1: 17706: Memory fault(coredump) Segmentation Fault (core dumped) $ file core core: ELF 64-bit LSB core file AMD64 Version 1, from 'ksh93' $ echo ::stack | mdb core libc.so.1`kill+0xa() libshell.so.1`sh_main+0x817() main+0x57() 0x400ccc() $ This is not a case for other shells, for example: $ /bin/bash a.sh a.sh: line 1: 17721 Done echo a 17722 Segmentation Fault (core dumped) | ./a.out $ file core core: ELF 32-bit LSB core file 80386 Version 1, from 'a.out' $ echo ::stack | mdb core main+0x26(1, 8047abc, 8047ac4, 8050d00, 0, 0) _start+0x83(1, 8047bc4, 0, 8047bcc, 8047bf2, 8047c06) $ So, apparently, ksh93 is doing something wrong. $ uname -a SunOS telcontar 5.11 snv_154 i86pc i386 i86pc Solaris $ *** (#1 of 1): 2010-12-21 18:33:40 GMT+00:00 <User 1-2GGNX3> === *Public Comments* ======================================================== The problem is with this part of the code in the sh_done() routine which is invoked when the shell is terminated. <usr/src/lib/libshell/common/sh/fault.c> 632 if(sig) 633 { 634 /* generate fault termination code */ 635 signal(sig,SIG_DFL); 636 sigrelease(sig); 637 kill(getpid(),sig); 638 pause(); 639 } Looks like this is to make sure the right termination code is set when libshell is used by one of the ksh93-replacement utilities (like "sleep"). Does not seem to make sense for the actual shell to kill itself this way. Maybe we need to differentiate between whether this is the actual ksh93 shell or one of the utilities using libshell? *** (#1 of 2): 2011-01-19 12:12:52 GMT+00:00 <User 1-5Q-8426> Or this could be related to the ksh optimization where the last command of a pipeline is executed in the current process. Either way, the method being used to generate the termination code seems too blunt right now. *** (#2 of 2): 2011-01-19 12:26:59 GMT+00:00 <User 1-5Q-8426> === *Workaround* ============================================================= coreadm can be used to change corefile patterns so the ksh93 core doesn't overwrite the application core by core dumping on top of it to the same file name. *** (#1 of 1): 2010-12-23 17:56:56 GMT+00:00 <User 1-5Q-1267> === *Additional Details* ===================================================== Targeted Release: Commit To Fix In Build: Fixed In Build: Integrated In Build: Verified In Build: See Also: 6782948, 6989746, 7010961 Duplicate of: Hooks: Hook1: Hook2: Hook3: Hook4: Hook5: Hook6: Program Management: New Defect Root Cause: Fix Affects Documentation: No Fix Affects Localization: No === *History* ================================================================ Date Submitted: 2010-12-21 18:33:39 GMT+00:00 Submitted By: <User 1-2GGNX3> Status Changed Date Updated Updated By 3-Accepted 2010-12-23 13:29:42 GMT+00:00 <User 1-5Q-8426> 5-Cause Known 2011-01-19 12:12:52 GMT+00:00 <User 1-5Q-8426> === *Service Request* ======================================================== Impact: Critical Functionality: Primary Severity: 1 Product Name: solaris Product Release: solaris_nevada Product Build: snv_154 Operating System: snv_154 Hardware: x86 Submitted Date: 2010-12-21 18:33:40 GMT+00:00 === *Service Request* ======================================================== Impact: Significant Functionality: Secondary Severity: 3 Product Name: storage-tests Product Release: solaris_nevada Product Build: Operating System: snv_157 Hardware: generic Submitted Date: 2011-01-07 16:09:02 GMT+00:00 === *Multiple Release (MR) Cluster* - 0 ====================================== _______________________________________________ ksh93-integration-discuss mailing list ksh93-integration-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/ksh93-integration-discuss