*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

Reply via email to