On Sun, Nov 10, 2013 at 12:27 AM, Roland Mainz <[email protected]> wrote:
> On Fri, Nov 8, 2013 at 6:20 PM, Joshuah Hurst <[email protected]> wrote:
>> On Fri, Nov 8, 2013 at 3:46 PM, David Korn <[email protected]> wrote:
>>> On Fri, Nov 8, 2013 at 7:39 AM, Joshuah Hurst <[email protected]> wrote:
>>>>
>>>> LC_ALL=C shcomp crashes but my Debian system has no debugger. Can
>>>> anyone investigate, please?
>>>
>>> shcomp on why file crashes?
>>
>> printf 'print hello' | LC_ALL=C /usr/bin/shcomp | /usr/bin/ksh
>> dumps core
>
> I can reproduce the issue on Illumos with "shcomp" from a
> ast-ksh.2013-10-10/AMD64/64bit build:
> -- snip --
> $ printf 'print hello' | LC_ALL=C ~/bin/shcomp | ~/bin/ksh
> $ dbx - core
> Corefile specified executable: "/home/test001/bin/shcomp"
> For information about new features see `help changes'
> To remove this message, put `dbxenv suppress_startup_message 7.6' in your 
> .dbxrc
> Reading shcomp
> core file header read successfully
> Reading ld.so.1
> Reading libm.so.2
> Reading libdl.so.1
> Reading libsocket.so.1
> Reading libnsl.so.1
> Reading libmd.so.1
> Reading libsecdb.so.1
> Reading libc.so.1
> program terminated by signal SEGV (no mapping at the fault address)
> Current function is dtuserdata
>    45                   return asogetptr(&dt->data->user.data);
> (dbx) where
> =>[1] dtuserdata(dt = (nil), data = (nil), set = 0), line 45 in "dtuser.c"
>   [2] nv_open(name = 0xfffffd7fff039bd0 "_AST_FEATURES=CONFORMANCE -
> ast", root = (nil), flags = 2105984), line 1412 in "name.c"
>   [3] sh_setenviron(name = 0xfffffd7fff039bd0
> "_AST_FEATURES=CONFORMANCE - ast"), line 3295 in "name.c"
>   [4] _ast_setenviron(name = 0xfffffd7fff039bd0
> "_AST_FEATURES=CONFORMANCE - ast"), line 3308 in "name.c"
>   [5] synthesize(fp = 0x6d3908, path = 0x6b1f50 "-", value = 0x6b2278
> "ast"), line 481 in "astconf.c"
>   [6] initialize(fp = 0x6d3908, path = 0x6d3b70 "/", command = (nil),
> succeed = 0x6b1fa0 "standard", fail = 0x6b2278 "ast"), line 620 in
> "astconf.c"
>   [7] format(fp = 0x6d3908, path = 0x6d3b70 "/", value = (nil), flags
> = 0, conferror = (nil)), line 686 in "astconf.c"
>   [8] feature(fp = 0x6d3908, name = 0x6b2f70 "CONFORMANCE", path =
> 0x6d3b70 "/", value = (nil), flags = 0, conferror = (nil)), line 864
> in "astconf.c"
>   [9] astgetconf(name = 0x6b2f70 "CONFORMANCE", path = 0x6d3b70 "/",
> value = (nil), flags = 0, conferror = (nil)), line 1547 in "astconf.c"
>   [10] astconf(name = 0x6b2f70 "CONFORMANCE", path = (nil), value =
> (nil)), line 1569 in "astconf.c"
>   [11] initconformance(), line 53 in "conformance.c"
>   [12] conformance(s = (nil), n = 0), line 125 in "conformance.c"
>   [13] _ast_codeset(op = 0), line 55 in "codeset.c"
>   [14] set_ctype(cp = 0x6d0d48), line 2386 in "setlocale.c"
>   [15] single(category = 2, lc = 0x6d1030, flags = 0), line 2625 in
> "setlocale.c"
>   [16] _ast_setlocale(category = 0, locale = 0x6ad748 ""), line 2902
> in "setlocale.c"
>   [17] init(s = 0x654ed4 "[-?\n@(#)$Id: shcomp (AT&T Research)
> 2003-03-02 $\n][-author?David Korn
> <[email protected]>][-copyright?Copyright (c) 1982-2013 AT&T
> Intellectual 
> Property][-license?http://www.eclipse.org/org/documents/epl-v10.html][--catalog?libshell][+NAME?shcomp
> - compile a shell script][+DESCRIPTION?Unless ^H-D^H is specified,
> ^Hshcomp^H takes a shell script, ^Ginfile^G, and creates a binary
> format file, ^Goutfile^G, that ^Hksh^H can read and execute with the
> same effect as the original script.][+?Since aliases are processed as
> " ..., p = 0x6e63e8), line 994 in "optget.c"
>   [18] _ast_optget(argv = 0xfffffd7fffdffc58, oopts = 0x654ed4
> "[-?\n@(#)$Id: shcomp (AT&T Research) 2003-03-02 $\n][-author?David
> Korn <[email protected]>][-copyright?Copyright (c) 1982-2013 AT&T
> Intellectual 
> Property][-license?http://www.eclipse.org/org/documents/epl-v10.html][--catalog?libshell][+NAME?shcomp
> - compile a shell script][+DESCRIPTION?Unless ^H-D^H is specified,
> ^Hshcomp^H takes a shell script, ^Ginfile^G, and creates a binary
> format file, ^Goutfile^G, that ^Hksh^H can read and execute with the
> same effect as the original script.][+?Since aliases are processed as
> " ...), line 4388 in "optget.c"
>   [19] main(argc = 1, argv = 0xfffffd7fffdffc58), line 79 in "shcomp.c"
> -- snip --
>
> The important part seems to be the $ env - ... # to clear the
> environment and then explicitly set LC_ALL=C ... note that |nv_open()|
> is called with a |NULL| |root| argument...

1. Fixing Glenn's email address
2. Question to Glenn: Wouldn't it be better to make calling
|_ast_setlocale()| mandatory (by throwing an assert) for each single
application instead of doing it implicitly in |_ast_optget()| ? Aside
from the performance gain it would prevent trouble like this one...

----

Bye,
Roland

-- 
  __ .  . __
 (o.\ \/ /.o) [email protected]
  \__\/\/__/  MPEG specialist, C&&JAVA&&Sun&&Unix programmer
  /O /==\ O\  TEL +49 641 3992797
 (;O/ \/ \O;)
_______________________________________________
ast-developers mailing list
[email protected]
http://lists.research.att.com/mailman/listinfo/ast-developers

Reply via email to