Robert, what exactly do you want do do with typeset +A? To declare an
associative array you must use -A, not +A. Or did you confuse this
with set +A?

I can confirm the crash with ksh93 -c 'typeset +A spaces ;
spaces[0]=""' but ksh93 -c 'typeset -A spaces ; spaces[0]=""' works.

Olga

On Sun, Apr 4, 2010 at 8:32 PM, Robert Lawhead <r...@ucsd.edu> wrote:
> The default system shell in snv_133 segvs on code that runs correctly on
> other (earlier) versions of ksh93.
>
> % cat /tmp/A
> #/bin/ksh
> typeset +A spaces
> spaces[0]=''
>
> % echo ${.sh.version}
> Version JMP 93t+ 2009-10-12
> % /tmp/A
> Memory fault(coredump)
> % /usr/local/bin/ksh
> % echo ${.sh.version}           # works - built from AST code
> Version M 1993-12-28 s+
> % /tmp/A
>
> % uname -a
> SunOS ratbert2 5.11 snv_133 i86pc i386 i86pc
> % cat /etc/release
>                       OpenSolaris Development snv_133 X86
>           Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
>                        Use is subject to license terms.
>                           Assembled 15 February 2010
>
> % ls -l /usr/bin/{,amd64}/ksh93
> -r-xr-xr-x   91 root     bin          8244 Jan 22 01:02 /usr/bin//ksh93
> -r-xr-xr-x    7 root     bin          9848 Jan 22 01:02 /usr/bin/amd64/ksh93
>
> % digest -a md5 /usr/bin/{,amd64}/ksh93
> (/usr/bin//ksh93) = 596bad33627c454e2fbad70df4c29be3
> (/usr/bin/amd64/ksh93) = 9e9f9e20a9f80a1fee097a34d0b6e5da
>
> # dbx /usr/bin/amd64/ksh93 /var/corefiles/core.0.ksh93.16720
> Reading ksh93
> core file header read successfully
> Reading ld.so.1
> Reading libc.so.1
> Reading libshell.so.1
> Reading libcmd.so.1
> Reading libast.so.1
> Reading libm.so.2
> program terminated by signal SEGV (no mapping at the fault address)
> 0xfffffd7fff12878b: nv_associative+0x0043:      movq     
> $0x0000000000000000,0x0000000000000060(%r13)
> (dbx) where
> =>[1] nv_associative(0x417d90, 0x417d90, 0x0, 0x0, 0xfffffd7fff128782, 0x0), 
> at 0xfffffd7fff12878b
>  [2] array_clone(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff1269cf
>  [3] clone_all_disc(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff1538ec
>  [4] nv_clone(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff153cf6
>  [5] array_copytree(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff127045
>  [6] array_grow(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff127396
>  [7] nv_putsub(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x418357, 0x0, 0x0, 0x417d90, 
> 0x0, 0x418359, 0x8, 0x5b, 0x417d90, 0x20200, 0xfffffd7fffdfea30, 
> 0xfffffd7fff14c1c8, 0x1, 0x418350), at 0xfffffd7fff127fd7
>  [8] nv_endsubscript(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff1284cd
>  [9] nv_create(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff14c1c8
>  [10] nv_open(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff14ce2c
>  [11] nv_setlist(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff14a652
>  [12] sh_exec(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff171c24
>  [13] exfile(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff1494c6
>  [14] sh_main(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff148caa
>  [15] main(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0x400e72
>
>> env -i /bin/truss -eflda -rall -wall -u a.out:: -u /usr/bin/amd64/ksh93:: 
>> /tmp/A
> Base time stamp:  1270405572.9372  [ Sun Apr  4 11:26:12 PDT 2010 ]
> 16826/1:         0.0000 execve("/usr/bin/i86/ksh93", 0x08047F60, 0x08047F6C)  
> argc = 2
> 16826/1:         argv: sh /tmp/A
> 16826/1:         envp:
> 16826/1:         0.0076 mmap(0x00000000, 4096, PROT_READ|PROT_WRITE, 
> MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFEFB0000
> 16826/1:         0.0078 mmap(0x00000000, 4096, PROT_READ|PROT_WRITE, 
> MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFEFA0000
> 16826/1:         0.0078 mmap(0x00000000, 4096, 
> PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFEF90000
> 16826/1:         0.0083 memcntl(0xFEFBC000, 29892, MC_ADVISE, MADV_WILLNEED, 
> 0, 0) = 0
> 16826/1:         0.0084 memcntl(0x08050000, 2536, MC_ADVISE, MADV_WILLNEED, 
> 0, 0) = 0
> 16826/1:         0.0085 resolvepath("/usr/lib/ld.so.1", "/lib/ld.so.1", 1023) 
> = 12
> 16826/1:         0.0086 resolvepath("/usr/bin/i86/ksh93", 
> "/usr/bin/i86/ksh93", 1023) = 18
> 16826/1:         0.0086 sysconfig(_CONFIG_PAGESIZE)                     = 4096
> 16826/1:         0.0087 stat64("/usr/bin/i86/ksh93", 0x08047BE4)        = 0
> 16826/1:         0.0088 open("/var/ld/ld.config", O_RDONLY)             Err#2 
> ENOENT
> 16826/1:         0.0090 stat64("/lib/libc.so.1", 0x080473E4)            = 0
> 16826/1:         0.0090 resolvepath("/lib/libc.so.1", "/lib/libc.so.1", 1023) 
> = 14
> 16826/1:         0.0091 open("/lib/libc.so.1", O_RDONLY)                = 3
> 16826/1:         0.0092 mmapobj(3, MMOBJ_INTERPRET, 0xFEF90890, 0x08047450, 
> 0x00000000) = 0
> 16826/1:         0.0093 close(3)                                        = 0
> 16826/1:         0.0094 memcntl(0xFEE30000, 189708, MC_ADVISE, MADV_WILLNEED, 
> 0, 0) = 0
> 16826/1:         0.0098 mmap(0x00000000, 4096, 
> PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFEE20000
> 16826/1:         0.0251 mmap(0x00010000, 24576, 
> PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON|MAP_ALIGN, -1, 0) = 
> 0xFEE10000
> 16826/1:         0.0253 getcontext(0x08047A34)
> 16826/1:         0.0254 getrlimit(RLIMIT_STACK, 0x08047A2C)             = 0
> 16826/1:         0.0255 getpid()                                        = 
> 16826 [16825]
> 16826/1:         0.0255 lwp_private(0, 1, 0xFEE12A00)                   = 
> 0x000001C3
> 16826/1:         0.0256 setustack(0xFEE12A60)
> 16826/1:         0.0265 sysi86(SI86FPSTART, 0xFEF89FCC, 0x0000133F, 
> 0x00001F80) = 0x00000001
> 16826/1...@1:       0.0266 -> __fsr()
> 16826/1...@1:       0.0272 <- __fsr() = 0xfef89f8c
> 16826/1...@1:       0.0273 -> _init()
> 16826/1...@1:       0.0279 <- _init() = 0xfef89f8c
> 16826/1...@1:       0.0281 -> main(0x2, 0x8047f60, 0x8047f6c, 0x8047f1c)
> 16826/1:         0.0287 memcntl(0x00000000, 0, MC_HAT_ADVISE, 0x8047F10, 0, 
> 0) Err#22 EINVAL
> 16826/1:         0.0287 stat64("/lib/libshell.so.1", 0x080474D8)        Err#2 
> ENOENT
> 16826/1:         0.0288 stat64("/usr/lib/libshell.so.1", 0x080474D8)    = 0
> 16826/1:         0.0289 resolvepath("/usr/lib/libshell.so.1", 
> "/usr/lib/libshell.so.1", 1023) = 22
> 16826/1:         0.0290 open("/usr/lib/libshell.so.1", O_RDONLY)        = 3
> 16826/1:         0.0291 mmapobj(3, MMOBJ_INTERPRET, 0xFEE202D0, 0x08047544, 
> 0x00000000) = 0
> 16826/1:         0.0291 close(3)                                        = 0
> 16826/1:         0.0292 memcntl(0xFED60000, 58216, MC_ADVISE, MADV_WILLNEED, 
> 0, 0) = 0
> 16826/1:         0.0294 stat64("/lib/libcmd.so.1", 0x08047148)          Err#2 
> ENOENT
> 16826/1:         0.0295 stat64("/usr/lib/libcmd.so.1", 0x08047148)      = 0
> 16826/1:         0.0295 resolvepath("/usr/lib/libcmd.so.1", 
> "/usr/lib/libcmd.so.1", 1023) = 20
> 16826/1:         0.0296 open("/usr/lib/libcmd.so.1", O_RDONLY)          = 3
> 16826/1:         0.0297 mmapobj(3, MMOBJ_INTERPRET, 0xFEE208A0, 0x080471B4, 
> 0x00000000) = 0
> 16826/1:         0.0298 close(3)                                        = 0
> 16826/1:         0.0299 memcntl(0xFED10000, 20084, MC_ADVISE, MADV_WILLNEED, 
> 0, 0) = 0
> 16826/1:         0.0299 stat64("/lib/libast.so.1", 0x08046DB8)          Err#2 
> ENOENT
> 16826/1:         0.0300 stat64("/usr/lib/libast.so.1", 0x08046DB8)      = 0
> 16826/1:         0.0301 resolvepath("/usr/lib/libast.so.1", 
> "/usr/lib/libast.so.1", 1023) = 20
> 16826/1:         0.0302 open("/usr/lib/libast.so.1", O_RDONLY)          = 3
> 16826/1:         0.0303 mmapobj(3, MMOBJ_INTERPRET, 0xFEE20E78, 0x08046E24, 
> 0x00000000) = 0
> 16826/1:         0.0304 close(3)                                        = 0
> 16826/1:         0.0304 mmap(0x00000000, 4096, 
> PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFEBF0000
> 16826/1:         0.0305 memcntl(0xFEC00000, 131348, MC_ADVISE, MADV_WILLNEED, 
> 0, 0) = 0
> 16826/1:         0.0310 stat64("/lib/libm.so.2", 0x08047148)            = 0
> 16826/1:         0.0310 resolvepath("/lib/libm.so.2", "/lib/libm.so.2", 1023) 
> = 14
> 16826/1:         0.0311 open("/lib/libm.so.2", O_RDONLY)                = 3
> 16826/1:         0.0312 mmapobj(3, MMOBJ_INTERPRET, 0xFEBF0568, 0x080471B4, 
> 0x00000000) = 0
> 16826/1:         0.0313 close(3)                                        = 0
> 16826/1:         0.0313 memcntl(0xFEB80000, 39464, MC_ADVISE, MADV_WILLNEED, 
> 0, 0) = 0
> 16826/1:         0.0333 sysconfig(_CONFIG_PAGESIZE)                     = 4096
> 16826/1:         0.0334 brk(0x080611F0)                                 = 0
> 16826/1:         0.0334 brk(0x080691F0)                                 = 0
> 16826/1:         0.0335 schedctl()                                      = 
> 0xFEB7B000
> 16826/1:         0.0336 sigaction(SIGSEGV, 0x080477B0, 0x08047830)      = 0
> 16826/1:         0.0337 sigaction(SIGSEGV, 0x080477B0, 0x08047830)      = 0
> 16826/1:         0.0338 sigfillset(0xFEF896A0)                          = 0
> 16826/1:         0.0338 lwp_sigmask(SIG_SETMASK, 0x00000000, 0x00000000) = 
> 0xFFBFFEFF [0x0000FFFF]
> 16826/1:         0.0339 umask(0)                                        = 022
> 16826/1:         0.0339 umask(022)                                      = 0
> 16826/1:         0.0341 getuid()                                        = 113 
> [113]
> 16826/1:         0.0341 getuid()                                        = 113 
> [113]
> 16826/1:         0.0342 getgid()                                        = 10 
> [10]
> 16826/1:         0.0342 getgid()                                        = 10 
> [10]
> 16826/1:         0.0344 sysconfig(_CONFIG_CLK_TCK)                      = 100
> 16826/1:         0.0345 sysconfig(_CONFIG_OPEN_FILES)                   = 256
> 16826/1:         0.0346 sysconfig(_CONFIG_CHILD_MAX)                    = 
> 29995
> 16826/1:         0.0346 sysconfig(_CONFIG_NGROUPS)                      = 16
> 16826/1:         0.0347 fcntl(0, F_GETFL)                               = 8194
> 16826/1:         0.0349 stat64("/dev/null", 0x080478A0)                 = 0
> 16826/1:         0.0350 ioctl(0, TCGETS, 0x08047840)                    = 0
> 16826/1:         0.0350 llseek(0, 0, SEEK_CUR)                          = 
> 288087
> 16826/1:         0.0351 fstat64(0, 0x080478A0)                          = 0
> 16826/1:         0.0352 fstat64(0, 0x080478A0)                          = 0
> 16826/1:         0.0352 ioctl(0, TCGETA, 0x08047820)                    = 0
> 16826/1:         0.0353 fstat64(0, 0x08047850)                          = 0
> 16826/1:         0.0354 fstat64(2, 0x080478E0)                          = 0
> 16826/1:         0.0354 ioctl(2, TCGETA, 0x08047860)                    = 0
> 16826/1:         0.0355 fstat64(1, 0x080478E0)                          = 0
> 16826/1:         0.0356 ioctl(1, TCGETA, 0x08047860)                    = 0
> 16826/1:         0.0356 lwp_sigmask(SIG_SETMASK, 0x00000000, 0x00000000) = 
> 0xFFBFFEFF [0x0000FFFF]
> 16826/1:         0.0357 sysconfig(_CONFIG_SIGRT_MIN)                    = 41
> 16826/1:         0.0357 sysconfig(_CONFIG_SIGRT_MAX)                    = 48
> 16826/1:         0.0359 brk(0x080691F0)                                 = 0
> 16826/1:         0.0360 brk(0x080711F0)                                 = 0
> 16826/1:         0.0363 stat64("/", 0x08047810)                         = 0
> 16826/1:         0.0364 stat64(".", 0x080478A0)                         = 0
> 16826/1:         0.0365 stat64("/usr/spool/cron/atjobs", 0x08047810)    = 0
> 16826/1:         0.0365 stat64(".", 0x080478A0)                         = 0
> 16826/1:         0.0366 stat64(".", 0x08047810)                         = 0
> 16826/1:         0.0367 openat(AT_FDCWD, "..", O_RDONLY|O_NDELAY|O_LARGEFILE) 
> = 3
> 16826/1:         0.0368 fcntl(3, F_SETFD, 0x00000001)                   = 0
> 16826/1:         0.0369 fstat64(3, 0x08047240)                          = 0
> 16826/1:         0.0369 stat64("..", 0x08047780)                        = 0
> 16826/1:         0.0455 getdents64(3, 0xFEE14000, 8192)                 = 448
> 16826/1:         0.0456 stat64("../.", 0x080478A0)                      = 0
> 16826/1:         0.0457 stat64("../..", 0x080478A0)                     = 0
> 16826/1:         0.0458 stat64("../calebc", 0x080478A0)                 = 0
> 16826/1:         0.0459 stat64("../mpless", 0x080478A0)                 = 0
> 16826/1:         0.0459 stat64("../agt", 0x080478A0)                    = 0
> 16826/1:         0.0460 stat64("../wade", 0x080478A0)                   = 0
> 16826/1:         0.0461 stat64("../bparent", 0x080478A0)                = 0
> 16826/1:         0.0462 stat64("../zz1mf", 0x080478A0)                  = 0
> 16826/1:         0.0463 stat64("../ldevan", 0x080478A0)                 = 0
> 16826/1:         0.0564 stat64("../bob", 0x080478A0)                    = 0
> 16826/1:         0.0565 stat64("../rml", 0x080478A0)                    = 0
> 16826/1:         0.0566 close(3)                                        = 0
> 16826/1:         0.0567 openat(AT_FDCWD, "../..", 
> O_RDONLY|O_NDELAY|O_LARGEFILE) = 3
> 16826/1:         0.0568 fcntl(3, F_SETFD, 0x00000001)                   = 0
> 16826/1:         0.0568 fstat64(3, 0x08047240)                          = 0
> 16826/1:         0.0569 stat64("../..", 0x08047810)                     = 0
> 16826/1:         0.0651 getdents64(3, 0xFEE14000, 8192)                 = 72
> 16826/1:         0.0651 stat64("../../.", 0x080478A0)                   = 0
> 16826/1:         0.0652 stat64("../../..", 0x080478A0)                  = 0
> 16826/1:         0.0653 stat64("../../home", 0x080478A0)                = 0
> 16826/1:         0.0654 close(3)                                        = 0
> 16826/1:         0.0654 openat(AT_FDCWD, "../../..", 
> O_RDONLY|O_NDELAY|O_LARGEFILE) = 3
> 16826/1:         0.0655 fcntl(3, F_SETFD, 0x00000001)                   = 0
> 16826/1:         0.0656 fstat64(3, 0x08047240)                          = 0
> 16826/1:         0.0656 stat64("../../..", 0x08047780)                  = 0
> 16826/1:         0.0658 getdents64(3, 0xFEE14000, 8192)                 = 1088
> 16826/1:         0.0658 stat64("../../../.", 0x080478A0)                = 0
> 16826/1:         0.0659 stat64("../../../..", 0x080478A0)               = 0
> 16826/1:         0.0660 stat64("../../../system", 0x080478A0)           = 0
> 16826/1:         0.0661 stat64("../../../jumpstart", 0x080478A0)        = 0
> 16826/1:         0.0756 stat64("../../../kernel", 0x080478A0)           = 0
> 16826/1:         0.0757 stat64("../../../export", 0x080478A0)           = 0
> 16826/1:         0.0758 close(3)                                        = 0
> 16826/1:         0.0758 openat(AT_FDCWD, "../../../..", 
> O_RDONLY|O_NDELAY|O_LARGEFILE) = 3
> 16826/1:         0.0759 fcntl(3, F_SETFD, 0x00000001)                   = 0
> 16826/1:         0.0759 fstat64(3, 0x08047240)                          = 0
> 16826/1:         0.0760 stat64("../../../..", 0x08047810)               = 0
> 16826/1:         0.0761 close(3)                                        = 0
> 16826/1:         0.0762 readlink("/proc/self/path/a.out", 
> "/usr/bin/i86/ksh93", 1025) = 18
> 16826/1:         0.0765 time()                                          = 
> 1270405573
> 16826/1:         0.0765 getpid()                                        = 
> 16826 [16825]
> 16826/1:         0.0766 getpid()                                        = 
> 16826 [16825]
> 16826/1:         0.0766 sigaction(SIGCLD, 0x08047D20, 0x08047DA0)       = 0
> 16826/1:         0.0767 open64("/tmp/A", O_RDONLY)                      = 3
> 16826/1:         0.0768 fstat64(3, 0x08047BC0)                          = 0
> 16826/1:         0.0768 fstat64(3, 0x08047E50)                          = 0
> 16826/1:         0.0769 fcntl(3, F_DUPFD, 0x0000000A)                   = 10
> 16826/1:         0.0769 close(3)                                        = 0
> 16826/1:         0.0770 fcntl(10, F_SETFD, 0x00000001)                  = 0
> 16826/1:         0.0770 ioctl(10, TCGETS, 0x08047C00)                   
> Err#25 ENOTTY
> 16826/1:         0.0771 llseek(10, 0, SEEK_CUR)                         = 0
> 16826/1:         0.0772 fstat64(10, 0x08047C60)                         = 0
> 16826/1:         0.0772 brk(0x080711F0)                                 = 0
> 16826/1:         0.0773 brk(0x080791F0)                                 = 0
> 16826/1:         0.0774 fstat64(10, 0x08047BD0)                         = 0
> 16826/1:         0.0774 llseek(10, 0, SEEK_CUR)                         = 0
> 16826/1:         0.0775 read(10, 0x08070020, 8192)                      = 41
> 16826/1:           # / b i n / k s h\n t y p e s e t   + A   s p a c e s\n s 
> p a c
> 16826/1:           e s [ 0 ] = ' '\n
> 16826/1:         0.0776 sysconfig(_CONFIG_PAGESIZE)                     = 4096
> 16826/1:         0.0779 read(10, 0x08070020, 8192)                      = 0
> 16826/1:         0.0780 fcntl(10, F_GETFL)                              = 8192
> 16826/1:         0.0780     Incurred fault #6, FLTBOUNDS  %pc = 0xFED966EE
> 16826/1:              siginfo: SIGSEGV SEGV_MAPERR addr=0x00000030
> 16826/1:         0.0781     Received signal #11, SIGSEGV [default]
> 16826/1:              siginfo: SIGSEGV SEGV_MAPERR addr=0x00000030
> --
> This message posted from opensolaris.org
> _______________________________________________
> ksh93-integration-discuss mailing list
> ksh93-integration-discuss@opensolaris.org
> http://mail.opensolaris.org/mailman/listinfo/ksh93-integration-discuss
>



-- 
      ,   _                                    _   ,
     { \/`o;====-    Olga Kryzhanovska   -====;o`\/ }
.----'-/`-/     olga.kryzhanov...@gmail.com   \-`\-'----.
 `'-..-| /     Solaris/BSD//C/C++ programmer   \ |-..-'`
      /\/\                                     /\/\
      `--`                                      `--`
_______________________________________________
ksh93-integration-discuss mailing list
ksh93-integration-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/ksh93-integration-discuss

Reply via email to