so i fixed the code to have a newline before using the kws alias it, to my half surprise, works perfectly, it displays the metest keyword right, but on the second [[ -v arr[elem] ]] check it hangs, probably brk ing few then mmaping and unmapping much, == bug ? :)
bash-5.1# bash ogt_demo + bash ogt_demo current keyword 1 of 1 in total ( -> metest <- ) ( code : printf 'current keyword %d of %d in total ( -> %s <- ) ( code : %s )\n' $[1+kws_i] ${#kws[@]} "$kws_kw" "$kws_code" ) ^C bash-5.1# + kws_i=-1 + [[ -v kws[++kws_i] ]] + kws_kw=metest + kws_p1=$'\034' + kws_id=1 + kws_p2=$'\0341\034' + kws_code=' printf '\''current keyword %d of %d in total ( -> %s <- ) ( code : %s )\n'\'' $[1+kws_i] ${#kws[@]} "$kws_kw" "$kws_code" ' + [[ ! -n printf 'current keyword %d of %d in total ( -> %s <- ) ( code : %s )\n' $[1+kws_i] ${#kws[@]} "$kws_kw" "$kws_code" ]] + (( 0 < ( kws_take = 0 ) )) + kws_args=() + eval -- ' printf '\''current keyword %d of %d in total ( -> %s <- ) ( code : %s )\n'\'' $[1+kws_i] ${#kws[@]} "$kws_kw" "$kws_code" ' ++ printf 'current keyword %d of %d in total ( -> %s <- ) ( code : %s )\n' 1 1 metest ' printf '\''current keyword %d of %d in total ( -> %s <- ) ( code : %s )\n'\'' $[1+kws_i] ${#kws[@]} "$kws_kw" "$kws_code" ' current keyword 1 of 1 in total ( -> metest <- ) ( code : printf 'current keyword %d of %d in total ( -> %s <- ) ( code : %s )\n' $[1+kws_i] ${#kws[@]} "$kws_kw" "$kws_code" ) + [[ -v kws[++kws_i] ]] ^C rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 pipe([3, 4]) = 0 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 rt_sigprocmask(SIG_BLOCK, [INT TERM CHLD], [], 8) = 0 clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLDstrace: Process 11639 attached , child_tidptr=0x7fbca46aca10) = 11639 [pid 11633] rt_sigprocmask(SIG_SETMASK, [], <unfinished ...> [pid 11639] getpid( <unfinished ...> [pid 11633] <... rt_sigprocmask resumed>NULL, 8) = 0 [pid 11639] <... getpid resumed>) = 11639 [pid 11633] rt_sigaction(SIGCHLD, {sa_handler=0x55c5974b0f70, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7fbca46ead60}, <unfinished ...> [pid 11639] close(255 <unfinished ...> [pid 11633] <... rt_sigaction resumed>{sa_handler=0x55c5974b0f70, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7fbca46ead60}, 8) = 0 [pid 11639] <... close resumed>) = 0 [pid 11633] close(4) = 0 [pid 11639] rt_sigprocmask(SIG_SETMASK, [], <unfinished ...> [pid 11633] rt_sigprocmask(SIG_BLOCK, [INT], <unfinished ...> [pid 11639] <... rt_sigprocmask resumed>NULL, 8) = 0 [pid 11633] <... rt_sigprocmask resumed>[], 8) = 0 [pid 11639] rt_sigaction(SIGTSTP, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fbca46ead60}, <unfinished ...> [pid 11633] read(3, <unfinished ...> [pid 11639] <... rt_sigaction resumed>{sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fbca46ead60}, 8) = 0 [pid 11639] rt_sigaction(SIGTTIN, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fbca46ead60}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fbca46ead60}, 8) = 0 [pid 11639] rt_sigaction(SIGTTOU, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fbca46ead60}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fbca46ead60}, 8) = 0 [pid 11639] rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fbca46ead60}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fbca46ead60}, 8) = 0 [pid 11639] rt_sigaction(SIGQUIT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fbca46ead60}, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fbca46ead60}, 8) = 0 [pid 11639] rt_sigaction(SIGCHLD, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7fbca46ead60}, {sa_handler=0x55c5974b0f70, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7fbca46ead60}, 8) = 0 [pid 11639] rt_sigaction(SIGCHLD, {sa_handler=0x55c5974b0f70, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7fbca46ead60}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7fbca46ead60}, 8) = 0 [pid 11639] rt_sigaction(SIGINT, {sa_handler=0x55c5974d18a0, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fbca46ead60}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fbca46ead60}, 8) = 0 [pid 11639] dup2(4, 1) = 1 [pid 11639] close(4) = 0 [pid 11639] close(3) = 0 [pid 11639] rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 [pid 11639] openat(AT_FDCWD, "/root/ogt1/keywords/metest", O_RDONLY) = 3 [pid 11639] read(3, "\nprintf 'current keyword %d of %"..., 4096) = 119 [pid 11639] write(1, "\nprintf 'current keyword %d of %"..., 119 <unfinished ...> [pid 11633] <... read resumed>"\nprintf 'current keyword %d of %"..., 512) = 119 [pid 11639] <... write resumed>) = 119 [pid 11633] read(3, <unfinished ...> [pid 11639] read(3, "", 4096) = 0 [pid 11639] close(3) = 0 [pid 11639] exit_group(0) = ? [pid 11633] <... read resumed>"", 512) = 0 [pid 11639] +++ exited with 0 +++ --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=11639, si_uid=0, si_status=0, si_utime=0, si_stime=0} --- wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], WNOHANG, NULL) = 11639 wait4(-1, 0x7fffd1d2ba98, WNOHANG, NULL) = -1 ECHILD (No child processes) rt_sigreturn({mask=[INT]}) = 0 close(3) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0 rt_sigaction(SIGINT, {sa_handler=0x55c5974ae490, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fbca46ead60}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fbca46ead60}, 8) = 0 rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fbca46ead60}, {sa_handler=0x55c5974ae490, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fbca46ead60}, 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 write(2, "++ addkw[1]='\nprintf '\\''current"..., 136++ addkw[1]=' printf '\''current keyword %d of %d in total ( -> %s <- ) ( code : %s )\n'\'' $[1+kws_i] ${#kws[@]} "$kws_kw" "$kws_code" ) = 136 write(2, " '\n", 3 ' ) = 3 write(2, "++ addkw_i=1\n", 13++ addkw_i=1 ) = 13 write(2, "++ (( addkws++ ))\n", 20++ (( addkws++ )) ) = 20 write(2, "++ addkw_now=$'\\0341\\034'\n", 26++ addkw_now=$'\0341\034' ) = 26 write(2, "++ dat[${addkw_now}take]=0\n", 27++ dat[${addkw_now}take]=0 ) = 27 write(2, "++ dat[${addkw_now}code]='\nprint"..., 149++ dat[${addkw_now}code]=' printf '\''current keyword %d of %d in total ( -> %s <- ) ( code : %s )\n'\'' $[1+kws_i] ${#kws[@]} "$kws_kw" "$kws_code" ) = 149 write(2, " '\n", 3 ' ) = 3 write(2, "++ [[ -v addkw[++addkw_i] ]]\n", 29++ [[ -v addkw[++addkw_i] ]] ) = 29 write(2, "++ dat[$nspace${SUBSEP}kw$SUBSEP"..., 53++ dat[$nspace${SUBSEP}kw$SUBSEP${addkw[addkw_i]}]=1 ) = 53 write(2, "++ [[ -v addkw[++addkw_i] ]]\n", 29++ [[ -v addkw[++addkw_i] ]] ) = 29 write(2, "++ [[ -v addkwf[++addkwf_i] ]]\n", 31++ [[ -v addkwf[++addkwf_i] ]] ) = 31 write(2, "+ kws=(metest)\n", 15+ kws=(metest) ) = 15 write(2, "+ kws_i=-1\n", 11+ kws_i=-1 ) = 11 write(2, "+ [[ -v kws[++kws_i] ]]\n", 24+ [[ -v kws[++kws_i] ]] ) = 24 write(2, "+ kws_kw=metest\n", 16+ kws_kw=metest ) = 16 write(2, "+ kws_p1=$'\\034'\n", 17+ kws_p1=$'\034' ) = 17 write(2, "+ kws_id=1\n", 11+ kws_id=1 ) = 11 write(2, "+ kws_p2=$'\\0341\\034'\n", 22+ kws_p2=$'\0341\034' ) = 22 write(2, "+ kws_code='\nprintf '\\''current "..., 135+ kws_code=' printf '\''current keyword %d of %d in total ( -> %s <- ) ( code : %s )\n'\'' $[1+kws_i] ${#kws[@]} "$kws_kw" "$kws_code" ) = 135 write(2, " '\n", 3 ' ) = 3 write(2, "+ [[ ! -n \nprintf 'current keywo"..., 127+ [[ ! -n printf 'current keyword %d of %d in total ( -> %s <- ) ( code : %s )\n' $[1+kws_i] ${#kws[@]} "$kws_kw" "$kws_code" ) = 127 write(2, " ]]\n", 5 ]] ) = 5 write(2, "+ (( 0 < ( kws_take = 0 ) ))\n", 31+ (( 0 < ( kws_take = 0 ) )) ) = 31 write(2, "+ kws_args=()\n", 14+ kws_args=() ) = 14 write(2, "+ eval -- '\nprintf '\\''current k"..., 134+ eval -- ' printf '\''current keyword %d of %d in total ( -> %s <- ) ( code : %s )\n'\'' $[1+kws_i] ${#kws[@]} "$kws_kw" "$kws_code" ) = 134 write(2, " '\n", 3 ' ) = 3 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 write(2, "++ printf 'current keyword %d of"..., 210++ printf 'current keyword %d of %d in total ( -> %s <- ) ( code : %s )\n' 1 1 metest ' printf '\''current keyword %d of %d in total ( -> %s <- ) ( code : %s )\n'\'' $[1+kws_i] ${#kws[@]} "$kws_kw" "$kws_code" ) = 210 write(2, " '\n", 3 ' ) = 3 brk(0x55c5993c7000) = 0x55c5993c7000 write(1, "current keyword 1 of 1 in total "..., 175current keyword 1 of 1 in total ( -> metest <- ) ( code : printf 'current keyword %d of %d in total ( -> %s <- ) ( code : %s )\n' $[1+kws_i] ${#kws[@]} "$kws_kw" "$kws_code" ) = 175 write(1, " )\n", 4 ) ) = 4 write(2, "+ [[ -v kws[++kws_i] ]]\n", 24+ [[ -v kws[++kws_i] ]] ) = 24 brk(0x55c5993c8000) = 0x55c5993c8000 brk(0x55c5993ca000) = 0x55c5993ca000 brk(0x55c5993ce000) = 0x55c5993ce000 brk(0x55c5993d6000) = 0x55c5993d6000 brk(0x55c5993e6000) = 0x55c5993e6000 brk(0x55c599406000) = 0x55c599406000 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbca3db7000 brk(0x55c5993e6000) = 0x55c5993e6000 mmap(NULL, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbca3d37000 munmap(0x7fbca3db7000, 262144) = 0 mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbca3c37000 munmap(0x7fbca3d37000, 524288) = 0 mmap(NULL, 2097152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbca3a37000 munmap(0x7fbca3c37000, 1048576) = 0 mmap(NULL, 4194304, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbca3637000 munmap(0x7fbca3a37000, 2097152) = 0 mmap(NULL, 8388608, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbca2e37000 munmap(0x7fbca3637000, 4194304) = 0 mmap(NULL, 16777216, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbca1e37000 munmap(0x7fbca2e37000, 8388608) = 0 mmap(NULL, 33554432, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbc9fe37000 munmap(0x7fbca1e37000, 16777216) = 0 mmap(NULL, 67108864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbc9be37000 munmap(0x7fbc9fe37000, 33554432) = 0 mmap(NULL, 134217728, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbc93e37000 munmap(0x7fbc9be37000, 67108864) = 0 mmap(NULL, 268435456, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbc83e37000 munmap(0x7fbc93e37000, 134217728) = 0 ^C--- SIGINT {si_signo=SIGINT, si_code=SI_KERNEL} --- strace: Process 11633 detached bash-5.1#
kws
Description: Binary data