David, the following test case crashes ksh (with and without your patches):

======================
(

        print '('

        integer i

        for ((i=0 ; i < 16384 ; i++ )) ; do
                printf '\tinteger var%i=%i\n' i i
        done

        printf 'typeset -a ar=(\n'
        for ((i=0 ; i < 16384 ; i++ )) ; do
                printf '\t[%d]=%d\n' i i
        done
        print ')'

        print ')'
) | read -C hugecpv

set -o xtrace

compound hugecpv2=hugecpv

compound hugecpv.snapshot=hugecpv2

unset hugecpv2
compound hugecpv2=hugecpv

print -v hugecpv2 | wc -l
======================

gdb reports this stack trace:
(gdb) where
#0  0x00007ffff770395a in __strcmp_sse42 () from /lib64/libc.so.6
#1  0x000000000040ecf8 in nv_compare (dict=0x7ffff7fe2ff0,
sp=0x7ffff7fea612, dp=0x0, disc=0x7d2aa0)
    at /home/fleyta/ksh_linux_hugedatatest/src/cmd/ksh93/sh/nvdisc.c:37
#2  0x00000000004ecb8b in dttree (dt=0x7ffff7fe2ff0, obj=0x0,
type=512) at /home/fleyta/ksh_linux_hugedatatest/src/lib/libast/cdt/dttree.c:452
#3  0x00000000004119a8 in nv_search (name=0x7ffff7fea612 "hugecpv",
root=0x7ffff7fe2ff0, mode=0)
    at /home/fleyta/ksh_linux_hugedatatest/src/cmd/ksh93/sh/nvdisc.c:1045
#4  0x000000000044e6c5 in nv_create (name=0x7ffff7fea612 "hugecpv",
root=0x7ffff7fe2ff0, flags=1441792, dp=0x7fffffffd310)
    at /home/fleyta/ksh_linux_hugedatatest/src/cmd/ksh93/sh/name.c:852
#5  0x00000000004501ec in nv_open (name=0x7ffff6d7d388
"hugecpv.var12618", root=0x7ffff7fe2ff0, flags=1441792)
    at /home/fleyta/ksh_linux_hugedatatest/src/cmd/ksh93/sh/name.c:1397
#6  0x000000000045969a in walk_tree (np=0x7ffff7e539d0,
xp=0x7ffff7ff25b0, flags=67108864)
    at /home/fleyta/ksh_linux_hugedatatest/src/cmd/ksh93/sh/nvtree.c:1013
#7  0x000000000045650c in clone_tree (np=0x7ffff7e539d0,
mp=0x7ffff7ff25b0, flags=67108864, fp=0x7ffff6bd90d0)
    at /home/fleyta/ksh_linux_hugedatatest/src/cmd/ksh93/sh/nvtree.c:93
#8  0x000000000041116a in clone_all_disc (np=0x7ffff7e539d0,
mp=0x7ffff7ff25b0, flags=67108864)
    at /home/fleyta/ksh_linux_hugedatatest/src/cmd/ksh93/sh/nvdisc.c:880
#9  0x000000000041137b in nv_clone (np=0x7ffff7e539d0,
mp=0x7ffff7ff25b0, flags=67108864)
    at /home/fleyta/ksh_linux_hugedatatest/src/cmd/ksh93/sh/nvdisc.c:928
#10 0x0000000000455155 in nv_rename (np=0x7ffff7ff25b0,
flags=67109376) at
/home/fleyta/ksh_linux_hugedatatest/src/cmd/ksh93/sh/name.c:3293
#11 0x00000000004983bb in setall (argv=0x7ffff7fea4a0, flag=512,
troot=0x7ffff7fe2ff0, tp=0x7fffffffd770)
    at /home/fleyta/ksh_linux_hugedatatest/src/cmd/ksh93/bltins/typeset.c:701
#12 0x0000000000497412 in b_typeset (argc=3, argv=0x7ffff7fea498,
context=0x7d8858)
    at /home/fleyta/ksh_linux_hugedatatest/src/cmd/ksh93/bltins/typeset.c:450
#13 0x0000000000473810 in sh_exec (t=0x7ffff7fea3c0, flags=4) at
/home/fleyta/ksh_linux_hugedatatest/src/cmd/ksh93/sh/xec.c:1306
#14 0x000000000040e639 in exfile (shp=0x7d8360, iop=0x7ffff7e51070,
fno=10) at /home/fleyta/ksh_linux_hugedatatest/src/cmd/ksh93/sh/main.c:601
#15 0x000000000040d815 in sh_main (ac=2, av=0x7fffffffe268,
userinit=0) at /home/fleyta/ksh_linux_hugedatatest/src/cmd/ksh93/sh/main.c:373
#16 0x000000000040ca19 in main (argc=2, argv=0x7fffffffe268) at
/home/fleyta/ksh_linux_hugedatatest/src/cmd/ksh93/sh/pmain.c:45

Can you reproduce the crash?

Olga
-- 
      ,   _                                    _   ,
     { \/`o;====-    Olga Kryzhanovska   -====;o`\/ }
.----'-/`-/     [email protected]   \-`\-'----.
 `'-..-| /       http://twitter.com/fleyta     \ |-..-'`
      /\/\     Solaris/BSD//C/C++ programmer   /\/\
      `--`                                      `--`

_______________________________________________
ast-users mailing list
[email protected]
https://mailman.research.att.com/mailman/listinfo/ast-users

Reply via email to