mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-03-09 15:50:02 +00:00
disable 'vmstate' builtin when using system's malloc(3)
Related discussion: https://github.com/ksh93/ksh/issues/95#issuecomment-664010969 src/cmd/ksh93/tests/leaks.sh: - When ksh is compiled to use the system's malloc(3) instead of AST vmalloc(3), the vmstate builtin returns either nothing or zero. Detect this as a regression test failure and refuse to run tests. - Tweak iterations. Tests don't need 500 or 1000 runs for vmstate. src/cmd/ksh93/data/builtins.c: - Do not compile in vmstate builtin when using system's malloc(3).
This commit is contained in:
parent
a2f13c19f2
commit
6f50ff6497
2 changed files with 9 additions and 7 deletions
|
@ -156,8 +156,10 @@ const struct shtable3 shtab_builtins[] =
|
||||||
CMDLIST(uname)
|
CMDLIST(uname)
|
||||||
CMDLIST(wc)
|
CMDLIST(wc)
|
||||||
CMDLIST(sync)
|
CMDLIST(sync)
|
||||||
|
#if !_std_malloc && !_AST_std_malloc
|
||||||
CMDLIST(vmstate)
|
CMDLIST(vmstate)
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
#if SHOPT_REGRESS
|
#if SHOPT_REGRESS
|
||||||
"__regress__", NV_BLTIN|BLT_ENV, bltin(__regress__),
|
"__regress__", NV_BLTIN|BLT_ENV, bltin(__regress__),
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -39,8 +39,8 @@ function getmem
|
||||||
}
|
}
|
||||||
unit=bytes
|
unit=bytes
|
||||||
n=$(getmem)
|
n=$(getmem)
|
||||||
if ! let "$n == $n" 2>/dev/null # not a number?
|
if ! let "($n) == ($n) && n > 0" # not a non-zero number?
|
||||||
then err\_exit "$LINENO" "'vmstate' output unexpected; tests cannot be run. (expected a number; got $(printf %q "$n"))"
|
then err\_exit "$LINENO" "vmstate built-in command not functioning; tests cannot be run"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ done
|
||||||
data="(v=;sid=;di=;hi=;ti='1328244300';lv='o';id='172.3.161.178';var=(k='conn_num._total';u=;fr=;l='Number of Connections';n='22';t='number';))"
|
data="(v=;sid=;di=;hi=;ti='1328244300';lv='o';id='172.3.161.178';var=(k='conn_num._total';u=;fr=;l='Number of Connections';n='22';t='number';))"
|
||||||
read -C stat <<< "$data"
|
read -C stat <<< "$data"
|
||||||
before=$(getmem)
|
before=$(getmem)
|
||||||
for ((i=0; i < 500; i++))
|
for ((i=0; i < 100; i++))
|
||||||
do print -r -- "$data"
|
do print -r -- "$data"
|
||||||
done | while read -u$n -C stat
|
done | while read -u$n -C stat
|
||||||
do :
|
do :
|
||||||
|
@ -95,7 +95,7 @@ for ((i=0; i < 10; i++))
|
||||||
do read -C stat <<< "$data"
|
do read -C stat <<< "$data"
|
||||||
done
|
done
|
||||||
before=$(getmem)
|
before=$(getmem)
|
||||||
for ((i=0; i < 500; i++))
|
for ((i=0; i < 100; i++))
|
||||||
do read -C stat <<< "$data"
|
do read -C stat <<< "$data"
|
||||||
done
|
done
|
||||||
after=$(getmem)
|
after=$(getmem)
|
||||||
|
@ -107,7 +107,7 @@ after=$(getmem)
|
||||||
# See https://www.mail-archive.com/ast-users@lists.research.att.com/msg01016.html
|
# See https://www.mail-archive.com/ast-users@lists.research.att.com/msg01016.html
|
||||||
typeset -A stuff
|
typeset -A stuff
|
||||||
before=$(getmem)
|
before=$(getmem)
|
||||||
for (( i=0; i<1000; i++ ))
|
for (( i=0; i<100; i++ ))
|
||||||
do
|
do
|
||||||
unset stuff[xyz]
|
unset stuff[xyz]
|
||||||
typeset -A stuff[xyz]
|
typeset -A stuff[xyz]
|
||||||
|
@ -129,12 +129,12 @@ command -v ls >/dev/null # add something to hash table
|
||||||
PATH=/dev/null true # set/restore PATH & clear hash table
|
PATH=/dev/null true # set/restore PATH & clear hash table
|
||||||
# ...test for leak:
|
# ...test for leak:
|
||||||
before=$(getmem)
|
before=$(getmem)
|
||||||
for ((i=0; i<16; i++))
|
for ((i=0; i<100; i++))
|
||||||
do PATH=/dev/null true # set/restore PATH & clear hash table
|
do PATH=/dev/null true # set/restore PATH & clear hash table
|
||||||
command -v ls # do PATH search, add to hash table
|
command -v ls # do PATH search, add to hash table
|
||||||
done >/dev/null
|
done >/dev/null
|
||||||
after=$(getmem)
|
after=$(getmem)
|
||||||
(( after > before )) && err_exit 'memory leak on PATH reset before subshell PATH search' \
|
(( after > before+32 )) && err_exit 'memory leak on PATH reset before subshell PATH search' \
|
||||||
"(leaked $((after - before)) $unit)"
|
"(leaked $((after - before)) $unit)"
|
||||||
|
|
||||||
# ======
|
# ======
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue