gdb -p (gdb) set follow-fork-mode child (gdb) set detach-on-fork off (gdb) break __pthread_kill_internal ....... try to run a new shell script in this interactive session that has ...... free(): invalid next size (fast) error ....... continue executing the inferiors till: ....... free(): invalid next size (fast) Thread 2.1 "bash" received signal SIGABRT, Aborted. #0 __pthread_kill_internal (signo=6, threadid=140703339386688) at pthread_kill.c:78 #1 __GI___pthread_kill (threadid=140703339386688, signo=signo@entry=6) at pthread_kill.c:89 #2 0x00007ff80c63e9c6 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #3 0x00007ff80c6287f4 in __GI_abort () at abort.c:79 #4 0x00007ff80c682d9e in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7ff80c7b9905 "%s\n") at ../sysdeps/posix/libc_fatal.c:155 #5 0x00007ff80c69894c in malloc_printerr (str=str@entry=0x7ff80c7bc3f0 "free(): invalid next size (fast)") at malloc.c:5664 #6 0x00007ff80c69a8ba in _int_free (av=0x7ff80c7f7c80 , p=0x55f6b514bf80, have_lock=0) at malloc.c:4522 #7 0x00007ff80c69d133 in __GI___libc_free (mem=) at malloc.c:3391 #8 0x000055f6b3875f5e in dispose_variable (var=0x55f6b514f5c0) at /usr/src/debug/bash-5.1.16-2.fc36.x86_64/variables.c:3780 #9 0x000055f6b3876b97 in free_variable_hash_data (data=) at /usr/src/debug/bash-5.1.16-2.fc36.x86_64/variables.c:4030 #10 hash_flush (free_data=, table=) at /usr/src/debug/bash-5.1.16-2.fc36.x86_64/hashlib.c:395 #11 hash_flush (free_data=0x55f6b3875fa0 , table=0x55f6b5141ed0) at /usr/src/debug/bash-5.1.16-2.fc36.x86_64/hashlib.c:375 #12 delete_all_variables (hashed_vars=0x55f6b5141ed0) at /usr/src/debug/bash-5.1.16-2.fc36.x86_64/variables.c:4044 #13 delete_all_contexts (vcxt=) at /usr/src/debug/bash-5.1.16-2.fc36.x86_64/variables.c:5361 #14 0x000055f6b3859708 in shell_reinitialize () at /usr/src/debug/bash-5.1.16-2.fc36.x86_64/shell.c:2024 #15 main (argc=3, argv=0x55f6b517d7a0, env=0x55f6b557f680) at /usr/src/debug/bash-5.1.16-2.fc36.x86_64/shell.c:459 (gdb) frame 8 #8 0x000055f6b3875f5e in dispose_variable (var=0x55f6b514f5c0) at /usr/src/debug/bash-5.1.16-2.fc36.x86_64/variables.c:3780 3780 free (var->name); (gdb) p *var $1 = {name = 0x55f6b514bf90 "PS2", value = 0x55f6b514de40 "]\367\177\352\363U", exportstr = 0x0, dynamic_value = 0x0, assign_func = 0x0, attributes = 0, context = 0} (gdb) print var->name $3 = 0x55f6b514bf90 "PS2" (gdb) print var->value $4 = 0x55f6b514de40 "]\367\177\352\363U" (gdb) frame 9 #9 0x000055f6b3876b97 in free_variable_hash_data (data=) at /usr/src/debug/bash-5.1.16-2.fc36.x86_64/variables.c:4030 4030 free_variable_hash_data (data) (gdb) info locals var = (gdb) info args data = (gdb) frame 10 #10 hash_flush (free_data=, table=) at /usr/src/debug/bash-5.1.16-2.fc36.x86_64/hashlib.c:395 395 (*free_data) (item->data); (gdb) info locals i = 824 bucket = 0x0 item = 0x55f6b514c280 (gdb) p *item $2 = {next = 0x0, key = 0x55f6b514dd60 "PS2", data = 0x55f6b514f5c0, khash = 472346424, times_found = 530} (gdb) info args free_data = table = (gdb) frame 11 #11 hash_flush (free_data=0x55f6b3875fa0 , table=0x55f6b5141ed0) at /usr/src/debug/bash-5.1.16-2.fc36.x86_64/hashlib.c:375 375 hash_flush (table, free_data) (gdb) info locals i = bucket = item = (gdb) info args free_data = 0x55f6b3875fa0 table = 0x55f6b5141ed0 (gdb) p *free_data $3 = {void (void *)} 0x55f6b3875fa0 (gdb) p *table $4 = {bucket_array = 0x55f6b5144150, nbuckets = 1024, nentries = 123} (gdb) frame 12 #12 delete_all_variables (hashed_vars=0x55f6b5141ed0) at /usr/src/debug/bash-5.1.16-2.fc36.x86_64/variables.c:4044 4044 hash_flush (hashed_vars, free_variable_hash_data); (gdb) info locals No locals. (gdb) info args hashed_vars = 0x55f6b5141ed0 (gdb) p *hashed_vars $5 = {bucket_array = 0x55f6b5144150, nbuckets = 1024, nentries = 123}