This is probably not a good thing to be doing in the first place (I ran into this before realizing that GROUPS was a special variable):
#!/bin/bash crashy () { local -a GROUPS=(a b); } crashy But it probably shouldn't be doing this (tested in bash 4.2.42 on archlinux x86_64, and bash 4.2.10 on armv7a): $ ./bash-crash.sh Segmentation fault (core dumped) Here's a stack trace: (gdb) run ~/bash-crash.sh Starting program: /home/rtollert/abs/bash/src/bash-4.2/bash ~/bash-crash.sh warning: Could not load shared library symbols for linux-vdso.so.1. Do you need "set solib-search-path" or "set sysroot"? Program received signal SIGSEGV, Segmentation fault. assign_compound_array_list (var=var@entry=0x0, nlist=nlist@entry=0x6e8030, flags=flags@entry=2) at arrayfunc.c:516 516 else if (assoc_p (var)) (gdb) bt #0 assign_compound_array_list (var=var@entry=0x0, nlist=nlist@entry=0x6e8030, flags=flags@entry=2) at arrayfunc.c:516 #1 0x0000000000442210 in do_compound_assignment (flags=2, value=0x6e7980 "a b", name=0x6e7960 "GROUPS") at subst.c:2715 #2 do_assignment_internal (word=<optimized out>, expand=expand@entry=1) at subst.c:2815 #3 0x0000000000442315 in do_word_assignment (word=<optimized out>, flags=flags@entry=0) at subst.c:2866 #4 0x000000000044878c in shell_expand_word_list (eflags=31, tlist=0x6e7880) at subst.c:9230 #5 expand_word_list_internal (list=<optimized out>, eflags=eflags@entry=31) at subst.c:9362 #6 0x0000000000448d75 in expand_words (list=<optimized out>) at subst.c:8984 #7 0x0000000000429acb in execute_simple_command (fds_to_close=<optimized out>, async=<optimized out>, pipe_out=-1, pipe_in=-1, simple_command=0x6e72d0) at execute_cmd.c:3775 #8 execute_command_internal (command=<optimized out>, asynchronous=asynchronous@entry=0, pipe_in=pipe_in@entry=-1, pipe_out=pipe_out@entry=-1, fds_to_close=fds_to_close@entry=0x6e55b0) at execute_cmd.c:735 #9 0x000000000042b8f6 in execute_command_internal (command=command@entry=0x6e6e70, asynchronous=asynchronous@entry=0, pipe_in=pipe_in@entry=-1, pipe_out=pipe_out@entry=-1, fds_to_close=fds_to_close@entry=0x6e55b0) at execute_cmd.c:883 #10 0x000000000042c498 in execute_function (var=var@entry=0x6e6fe0, words=words@entry=0x6e6c60, flags=flags@entry=0, fds_to_close=fds_to_close@entry=0x6e55b0, async=async@entry=0, subshell=subshell@entry=0) at execute_cmd.c:4306 #11 0x000000000042a33b in execute_builtin_or_function (flags=0, fds_to_close=0x6e55b0, redirects=0x0, var=0x6e6fe0, builtin=0x0, words=0x6e6c60) at execute_cmd.c:4536 #12 execute_simple_command (fds_to_close=<optimized out>, async=<optimized out>, pipe_out=-256, pipe_in=0, simple_command=0x0) at execute_cmd.c:3944 #13 execute_command_internal (command=command@entry=0x6e5580, asynchronous=asynchronous@entry=0, pipe_in=pipe_in@entry=-1, pipe_out=pipe_out@entry=-1, fds_to_close=fds_to_close@entry=0x6e55b0) at execute_cmd.c:735 #14 0x000000000042d642 in execute_command (command=0x6e5580) at execute_cmd.c:382 #15 0x000000000041926e in reader_loop () at eval.c:152 #16 0x0000000000418d50 in main (argc=2, argv=0x7fffffffe358, env=0x7fffffffe370) at shell.c:749