*Synopsis*: *ksh93* signal handling is broken
CR 6782948 changed on Jan 17 2009 by <User 1-5Q-5151>
=== Field ============ === New Value ============= === Old Value =============
Evaluation New Note
Status 3-Accepted 1-Dispatched
Synopsis *ksh93* signal handling i.. ksh93 signal handling is ..
====================== =========================== ===========================
*Change Request ID*: 6782948
*Synopsis*: *ksh93* signal handling is broken
Product: solaris
Category: shell
Subcategory: korn93
Type: Defect
Subtype:
Status: 3-Accepted
Substatus:
Priority: 2-High
Introduced In Release: solaris_nevada
Introduced In Build:
Responsible Engineer:
Keywords:
=== *Description* ============================================================
i'm currently running opensolaris snv_99.
i noticed some of my shell script hanging when running in ksh93.
the problem seems to be centered around signal trap and child handling
within ksh93. i managed to boil my scripts down to an easily reproducible
test case.
you can reproduce the problem by running the following script:
---8<---
#!/bin/ksh
foo() { exit 0; }
trap foo EXIT
/bin/yes | while read yes; do
(/bin/date)
done
---8<---
then in another window run the following command:
---8<---
while :; do kill -WINCH <script pid>; done
---8<---
this will quickly result in a failure. i've seen the shell
process emit error messages, hard hang (requiring a kill -9),
and/or core dump.
here's the stack trace from my originaly hung shell script:
---8<---
<email address omitted>$ pstack 15252
15252: /bin/ksh -p /home/edp/work/bin/explorer_extract
ff2c5910 waitid (7, 0, ffbfdad8, f)
0002993c job_wait (3ba2, 57400, 57800, 0, 1, f0) + 1b0
00038090 sh_exec (0, 57800, 0, 57800, 57800, 0) + 2198
000371fc sh_exec (8000, 58e538, 4, 57400, ffbfe0ac, 1) + 1304
0003722c sh_exec (58e0e0, 4, 9004, 3, 8004, 58e280) + 1334
000324cc sh_funct (58e0e0, 56b56c, 4, 0, 0, 56b120) + 144
00036450 sh_exec (56b120, 4, 509208, 4e97f8, 509208, 57800) + 558
0003722c sh_exec (56b460, 4, 57400, 3, 57400, 56b410) + 1334
00037708 sh_exec (56acd8, 57800, 0, 57800, 57800, 57800) + 1810
000371fc sh_exec (8000, 56b480, 14, 57400, ffbff154, 1) + 1304
0002d87c exfile (80000, 57800, 57800, 100000, 57800, 57800) + 73c
0002d110 main (2f400, 57400, 4fd948, 57400, 57800, 57800) + a1c
00019450 _start (0, 0, 0, 0, 0, 0) + 108
---8<---
in the cases when ksh93 core dumps, the stack traces vary, but the
thing that they all have in common is a call to _ast_[cm]alloc(),
which seems to indicate some kind of memory corruption. here's one
example stack trace, that shows the memory allocation function
being called from a signal handler. (normally memory allocation
within signal handlers immediatly indicates an application bug
since the libc memory allocation interfaces are not async-signal
safe, but ksh93 seems to provide it's own memory allocation
interfaces, and i don't know if they are async-signal safe):
---8<---
core 'core.ksh93.348315.89769' of 348315: /bin/ksh ./bug.sh
fffffd7ffefc18db bestsearch () + 1ab
fffffd7ffefc22a3 bestalloc () + 263
fffffd7ffefc102a _ast_malloc () + 9a
fffffd7fff0dc7b3 nv_putval () + 8b3
fffffd7fff0c1468 sh_fault () + 88
fffffd7fff2750b6 __sighndlr () + 6
fffffd7fff2698ef call_user_handler () + 2ff
fffffd7fff269af9 sigacthandler (14, 0, fffffd7fffdfae30) + c9
--- called from signal handler with signal 20 (SIGWINCH) ---
fffffd7ffef3404a dthash () + 7a
fffffd7fff0e0b9b nv_search () + 6b
fffffd7fff0e9931 path_spawn () + 91
fffffd7fff0f98ed sh_ntfork () + 3bd
fffffd7fff0f7127 sh_exec () + 2ff7
fffffd7fff0f03d6 sh_subshell () + 596
fffffd7fff0f5dfb sh_exec () + 1ccb
fffffd7fff0f536c sh_exec () + 123c
fffffd7fff0f7589 sh_exec () + 3459
fffffd7fff0f5c44 sh_exec () + 1b14
fffffd7fff0d98e6 exfile () + 766
fffffd7fff0d910b sh_main () + 7ab
0000000000400db1 main () + 21
0000000000400c3c ???????? ()
---8<---
*** (#1 of 1): 2008-12-09 20:56:00 GMT+00:00 <User 1-5Q-4162>
=== *Public Comments* ========================================================
=== *Workaround* =============================================================
=== *Additional Details* =====================================================
Targeted Release:
Commit To Fix In Build:
Fixed In Build:
Integrated In Build:
Verified In Build:
See Also:
Duplicate of:
Hooks:
Hook1:
Hook2:
Hook3:
Hook4:
Hook5:
Hook6:
Program Management:
Root Cause:
Fix Affects Documentation: No
Fix Affects Localization: No
=== *History* ================================================================
Date Submitted: 2008-12-09 20:56:00 GMT+00:00
Submitted By: <User 1-5Q-4162>
Status Changed Date Updated Updated By
3-Accepted 2009-01-17 00:11:42 GMT+00:00 <User 1-5Q-5151>
=== *Service Request* ========================================================
Impact: Significant
Functionality: Secondary
Severity: 3
Product Name: solaris
Product Release: solaris_nevada
Product Build:
Operating System: snv_99
Hardware: generic
Submitted Date: 2008-12-09 20:56:00 GMT+00:00
=== *Multiple Release (MR) Cluster* - 0 ======================================