Browse Source

Provide tests for thread-safety

These scripts currently produce HTML output that is directly
piped into an HTML file on alioth.

There are three categories. The first two check external
library calls to use the ones specified by POSIX to be
thread-safe. The main profile excludes functions that are
thread-safe on Linux or glibc in general, while the portable
output strictly follows posix.

The internal.html output lists internal function calls, such
as configuration setting.

This is supposed to be automated further at some point, so
we can automatically check for regressions.
tags/devuan/2.0.1+devuan1
Julian Andres Klode 5 years ago
parent
commit
77242b1e21
3 changed files with 101 additions and 0 deletions
  1. +7
    -0
      test/thread-safety/not-thread-safe.sh
  2. +3
    -0
      test/thread-safety/thread-check-internal.txt
  3. +91
    -0
      test/thread-safety/thread-check.txt

+ 7
- 0
test/thread-safety/not-thread-safe.sh View File

@@ -0,0 +1,7 @@
git grep -p --color -n -E "$(grep -v ^# thread-check.txt | sed 's/(.*/\\\\ *\\\\(/' | xargs | tr ' ' '|')" \
apt-inst/ apt-pkg/ | ansi2html | ssh alioth.debian.org 'cat > /home/groups/apt/htdocs/not-thread-safe/index.html'
git grep -p --color -n -E "$(grep ^# thread-check.txt | cut -f2 -d# | sed 's/(.*/\\\\ *\\\\(/' | xargs | tr ' ' '|')" \
apt-inst/ apt-pkg/ | ansi2html | ssh alioth.debian.org 'cat > /home/groups/apt/htdocs/not-thread-safe/portable.html'

git grep -p --color -n -E "$(grep -v ^# thread-check-internal.txt | sed 's/(.*/\\\\ *\\\\(/' | xargs | tr ' ' '|')" \
apt-inst/ apt-pkg/ | ansi2html | ssh alioth.debian.org 'cat > /home/groups/apt/htdocs/not-thread-safe/internal.html'

+ 3
- 0
test/thread-safety/thread-check-internal.txt View File

@@ -0,0 +1,3 @@
CndSet()
Set()
Clear()

+ 91
- 0
test/thread-safety/thread-check.txt View File

@@ -0,0 +1,91 @@
asctime()
basename()
catgets()
crypt()
ctermid() if passed a non-NULL argument
ctime()
dbm_clearerr()
dbm_close()
dbm_delete()
dbm_error()
dbm_fetch()
dbm_firstkey()
dbm_nextkey()
dbm_open()
dbm_store()
dirname()
dlerror()
drand48()
ecvt() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
encrypt()
endgrent()
endpwent()
endutxent()
fcvt() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
ftw()
gcvt() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
getc_unlocked()
getchar_unlocked()
getdate()
#getenv()
getgrent()
getgrgid()
getgrnam()
gethostbyaddr() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
gethostbyname() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
gethostent()
getlogin()
getnetbyaddr()
getnetbyname()
getnetent()
getopt()
getprotobyname()
getprotobynumber()
getprotoent()
getpwent()
getpwnam()
getpwuid()
getservbyname()
getservbyport()
getservent()
getutxent()
getutxid()
getutxline()
gmtime()
hcreate()
hdestroy()
hsearch()
inet_ntoa()
l64a()
lgamma()
lgammaf()
lgammal()
localeconv()
localtime()
lrand48()
mrand48()
nftw()
#nl_langinfo()
ptsname()
putc_unlocked()
putchar_unlocked()
putenv()
pututxline()
rand()
#readdir()
setenv()
setgrent()
setkey()
setpwent()
setutxent()
#strerror()
strsignal() [Added in POSIX.1-2008]
strtok()
#system() [Added in POSIX.1-2008]
tmpnam() if passed a non-NULL argument
ttyname()
unsetenv()
wcrtomb() if its final argument is NULL
wcsrtombs() if its final argument is NULL
wcstombs()
wctomb()

Loading…
Cancel
Save