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
