Andreas Schwab writes: > $ declare -A a=b; unset a > *** glibc detected *** /bin/bash: free(): invalid pointer: 0x10091644 *** And the obvious patch: --- builtins/declare.def +++ builtins/declare.def 2010-04-09 17:20:51.000000000 +0000 @@ -512,7 +512,7 @@ declare_internal (list, local_var) { /* let bind_{array,assoc}_variable take care of this. */ if (assoc_p (var)) - bind_assoc_variable (var, name, "0", value, aflags); + bind_assoc_variable (var, name, savestring ("0"), value, aflags); else bind_array_variable (name, 0, value, aflags); }