From owner-svn-src-user@FreeBSD.ORG Fri May 15 08:29:25 2015 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B9F00BA9; Fri, 15 May 2015 08:29:25 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 8E81C19FC; Fri, 15 May 2015 08:29:25 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4F8TPgK093075; Fri, 15 May 2015 08:29:25 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4F8TPOR093074; Fri, 15 May 2015 08:29:25 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201505150829.t4F8TPOR093074@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Fri, 15 May 2015 08:29:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r282946 - user/pho/stress2/misc X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 15 May 2015 08:29:25 -0000 Author: pho Date: Fri May 15 08:29:24 2015 New Revision: 282946 URL: https://svnweb.freebsd.org/changeset/base/282946 Log: Added description of two out of *many* problems found by this scenario, use pgrep(1), added en extra search directory to fts(2) and added the possibility to run the test as root. Sponsored by: EMC / Isilon storage division Modified: user/pho/stress2/misc/syscall4.sh Modified: user/pho/stress2/misc/syscall4.sh ============================================================================== --- user/pho/stress2/misc/syscall4.sh Fri May 15 07:57:47 2015 (r282945) +++ user/pho/stress2/misc/syscall4.sh Fri May 15 08:29:24 2015 (r282946) @@ -31,6 +31,15 @@ # Threaded syscall(2) fuzz test inspired by the iknowthis test suite # by Tavis Ormandy +# Sample problems found: +# Thread stuck in stopprof. +# http://people.freebsd.org/~pho/stress/log/kostik732.txt +# Fixed by r275121. + +# panic: td 0xcbe1ac40 is not suspended. +# https://people.freebsd.org/~pho/stress/log/kostik807.txt +# Fixed by r282944. + [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 . ../default.cfg @@ -64,7 +73,8 @@ while [ $((`date '+%s'` - st)) -lt $((10 (cd $mntpoint; /tmp/syscall4 $* ) & start=`date '+%s'` while [ $((`date '+%s'` - start)) -lt $sleeptime ]; do - ps aux | grep -v grep | egrep -q "syscall4$" || break +# ps aux | grep -v grep | egrep -q "syscall4$" || break + pgrep syscall4 > /dev/null || break sleep .5 done while pkill -9 syscall4; do @@ -192,15 +202,16 @@ test(void *arg __unused) FTS *fts; FTSENT *p; int ftsoptions; - char *args[5]; + char *args[6]; int i; ftsoptions = FTS_PHYSICAL; args[0] = "/dev"; args[1] = "/proc"; args[2] = "/usr/compat/linux/proc"; - args[3] = "."; - args[4] = 0; + args[3] = "/ifs"; + args[4] = "."; + args[5] = 0; for (;;) { for (i = 0; i < N; i++) @@ -290,11 +301,15 @@ main(int argc, char **argv) if ((pw = getpwnam("nobody")) == NULL) err(1, "no such user: nobody"); - if (setgroups(1, &pw->pw_gid) || - setegid(pw->pw_gid) || setgid(pw->pw_gid) || - seteuid(pw->pw_uid) || setuid(pw->pw_uid)) - err(1, "Can't drop privileges to \"nobody\""); - endpwent(); + if (getenv("USE_ROOT")) + fprintf(stderr, "Running syscall4 as root.\n"); + else { + if (setgroups(1, &pw->pw_gid) || + setegid(pw->pw_gid) || setgid(pw->pw_gid) || + seteuid(pw->pw_uid) || setuid(pw->pw_uid)) + err(1, "Can't drop privileges to \"nobody\""); + endpwent(); + } limit.rlim_cur = limit.rlim_max = 1000; #if defined(RLIMIT_NPTS)