From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Vong Subject: bug#21410: [TEST-FAIL] 2 tests failed when running `make check' on Debian Date: Fri, 4 Sep 2015 23:02:57 +0800 Message-ID: <20150904230257.5425eb8a@debian> References: <20150904144440.2f14182d@debian> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="MP_/4S8E7CpR0vWTevUPHgBml5U" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:37277) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZXsXA-0006eS-Bm for bug-guix@gnu.org; Fri, 04 Sep 2015 11:04:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZXsX4-0007vt-P6 for bug-guix@gnu.org; Fri, 04 Sep 2015 11:04:08 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:56717) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZXsX4-0007vD-Jd for bug-guix@gnu.org; Fri, 04 Sep 2015 11:04:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1ZXsX4-00089w-6I for bug-guix@gnu.org; Fri, 04 Sep 2015 11:04:02 -0400 In-Reply-To: <20150904144440.2f14182d@debian> Sender: "Debbugs-submit" Resent-Message-ID: List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org To: "Thompson, David" , 21410@debbugs.gnu.org --MP_/4S8E7CpR0vWTevUPHgBml5U Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi Dave, Please see the reply below. 2015-09-04 22:12 GMT+08:00, Thompson, David : > Hello Alex, > > On Fri, Sep 4, 2015 at 2:44 AM, Alex Vong wrote: >> Hi everyone, >> >> I tried to compile Guix on Debian Sid, >> the compilation succeeded, >> but the 2 of the tests in the Testsuit failed. >> >> The following is what commands I have run, >> all commands are run as non-root: >> >> $ git clone git://git.savannah.gnu.org/guix.git >> $ cd guix >> $ ./bootstrap >> $ ./configure >> $ make -j4 >> $ make -j4 check >> >> The Testsuite summary (test-suite.log) is inlined below: >> >> ====================================== >> GNU Guix 0.8.3: ./test-suite.log >> ====================================== >> >> # TOTAL: 47 >> # PASS: 45 >> # SKIP: 0 >> # XFAIL: 0 >> # FAIL: 2 >> # XPASS: 0 >> # ERROR: 0 >> >> .. contents:: :depth: 2 >> >> FAIL: tests/syscalls >> ==================== >> >> ;;; note: source file ./srfi/srfi-64.scm >> ;;; newer than compiled >> /usr/lib/x86_64-linux-gnu/guile/2.0/ccache/srfi/srfi-64.go >> ERROR: In procedure primitive-load: >> ERROR: In procedure scm_i_lreadparen: tests/syscalls.scm:128:14: end of >> file >> %%%% Starting test syscalls (Writing full log to "syscalls.log") >> tests/syscalls.scm:85: FAIL clone >> tests/syscalls.scm:98: FAIL setns >> ;;; note: source file ./srfi/srfi-64.scm >> ;;; newer than compiled >> /usr/lib/x86_64-linux-gnu/guile/2.0/ccache/srfi/srfi-64.go >> %%%% Starting test syscalls (Writing full log to "syscalls.log") >> tests/syscalls.scm:85: FAIL clone >> tests/syscalls.scm:98: FAIL setns >> tests/syscalls.scm:127: FAIL pivot-root >> # of expected passes 15 >> # of unexpected failures 3 >> >> FAIL: tests/containers >> ====================== >> >> %%%% Starting test containers (Writing full log to "containers.log") >> tests/containers.scm:37: FAIL call-with-container, user namespace >> tests/containers.scm:45: FAIL call-with-container, uts namespace >> tests/containers.scm:55: FAIL call-with-container, pid namespace >> tests/containers.scm:70: FAIL call-with-container, mnt namespace >> tests/containers.scm:77: FAIL call-with-container, all namespaces >> tests/containers.scm:83: FAIL container-excursion >> # of unexpected failures 6 >> ;;; note: source file ./srfi/srfi-64.scm >> ;;; newer than compiled >> /usr/lib/x86_64-linux-gnu/guile/2.0/ccache/srfi/srfi-64.go >> FAIL tests/containers.scm (exit status: 1) > > Could you attach the containers.log and syscalls.log files so I could > see some more detail? > Sure, they are in the attahment. > Also, what version of Linux and glibc are you using? > kernel version: $ uname -a Linux debian 4.1.0-2-amd64 #1 SMP Debian 4.1.6-1 (2015-08-23) x86_64 GNU/Linux libc version: $ LC_ALL=C ldd --version ldd (Debian GLIBC 2.19-19) 2.19 Copyright (C) 2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Roland McGrath and Ulrich Drepper. > Thanks! > > - Dave > Thanks for the quick reply as well! Cheers, Alex --MP_/4S8E7CpR0vWTevUPHgBml5U Content-Type: text/x-log Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=containers.log %%%% Starting test containers Group begin: containers Test begin: test-name: "call-with-container, user namespace" source-file: "tests/containers.scm" source-line: 37 source-form: (test-assert "call-with-container, user namespace" (zero? (call-with-container (quote ()) (lambda () (assert-exit (and (zero? (getuid)) (zero? (getgid))))) #:namespaces (quote (user))))) Test end: result-kind: fail actual-value: #f actual-error: (system-error "open-file" "~A: ~S" ("No such file or directory" "/proc/-1/setgroups") (2)) Test begin: test-name: "call-with-container, uts namespace" source-file: "tests/containers.scm" source-line: 45 source-form: (test-assert "call-with-container, uts namespace" (zero? (call-with-container (quote ()) (lambda () (sethostname "test-container") (primitive-exit 0)) #:namespaces (quote (user uts))))) Test end: result-kind: fail actual-value: #f actual-error: (system-error "open-file" "~A: ~S" ("No such file or directory" "/proc/-1/setgroups") (2)) Test begin: test-name: "call-with-container, pid namespace" source-file: "tests/containers.scm" source-line: 55 source-form: (test-assert "call-with-container, pid namespace" (zero? (call-with-container (quote ()) (lambda () (match (primitive-fork) (0 (assert-exit (= 2 (getpid)))) (pid (primitive-exit (match (waitpid pid) ((_ . status) (status:exit-val status))))))) #:namespaces (quote (user pid))))) Test end: result-kind: fail actual-value: #f actual-error: (system-error "open-file" "~A: ~S" ("No such file or directory" "/proc/-1/setgroups") (2)) Test begin: test-name: "call-with-container, mnt namespace" source-file: "tests/containers.scm" source-line: 70 source-form: (test-assert "call-with-container, mnt namespace" (zero? (call-with-container (quote (("none" device "/testing" "tmpfs" () #f #f))) (lambda () (assert-exit (file-exists? "/testing"))) #:namespaces (quote (user mnt))))) Test end: result-kind: fail actual-value: #f actual-error: (system-error "open-file" "~A: ~S" ("No such file or directory" "/proc/-1/setgroups") (2)) Test begin: test-name: "call-with-container, all namespaces" source-file: "tests/containers.scm" source-line: 77 source-form: (test-assert "call-with-container, all namespaces" (zero? (call-with-container (quote ()) (lambda () (primitive-exit 0))))) Test end: result-kind: fail actual-value: #f actual-error: (system-error "open-file" "~A: ~S" ("No such file or directory" "/proc/-1/setgroups") (2)) Test begin: test-name: "container-excursion" source-file: "tests/containers.scm" source-line: 83 source-form: (test-assert "container-excursion" (call-with-temporary-directory (lambda (root) (match (list (pipe) (pipe)) (((start-in . start-out) (end-in . end-out)) (define (container) (close end-out) (close start-in) (write (quote ready) start-out) (close start-out) (read end-in) (close end-in)) (define (namespaces pid) (let ((pid (number->string pid))) (map (lambda (ns) (readlink (string-append "/proc/" pid "/ns/" ns))) (quote ("user" "ipc" "uts" "net" "pid" "mnt"))))) (let* ((pid (run-container root (quote ()) %namespaces 1 container)) (container-namespaces (namespaces pid)) (result (begin (close start-out) (read start-in) (close start-in) (container-excursion pid (lambda () (match (primitive-fork) (0 (assert-exit (equal? container-namespaces (namespaces (getpid))))) (fork-pid (matc h (waitpid fork-pid) ((_ . status) (primitive-exit (status:exit-val status))))))))))) (close end-in) (write (quote done) end-out) (close end-out) (waitpid pid) (zero? result))))))) Test end: result-kind: fail actual-value: #f actual-error: (system-error "open-file" "~A: ~S" ("No such file or directory" "/proc/-1/setgroups") (2)) Group end: containers # of unexpected failures 6 --MP_/4S8E7CpR0vWTevUPHgBml5U Content-Type: text/x-log Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=syscalls.log %%%% Starting test syscalls Group begin: syscalls Test begin: test-name: "mount, ENOENT" source-file: "tests/syscalls.scm" source-line: 33 source-form: (test-equal "mount, ENOENT" ENOENT (catch (quote system-error) (lambda () (mount "/dev/null" "/does-not-exist" "ext2") #f) (compose system-error-errno list))) Test end: result-kind: pass actual-value: 2 expected-value: 2 Test begin: test-name: "umount, ENOENT/EPERM" source-file: "tests/syscalls.scm" source-line: 41 source-form: (test-assert "umount, ENOENT/EPERM" (catch (quote system-error) (lambda () (umount "/does-not-exist") #f) (lambda args (memv (system-error-errno args) (list EPERM ENOENT))))) Test end: result-kind: pass actual-value: (1 2) Test begin: test-name: "mount-points" source-file: "tests/syscalls.scm" source-line: 50 source-form: (test-assert "mount-points" (any (cute member <> (mount-points)) (quote ("/" "/proc" "/sys" "/dev")))) Test end: result-kind: pass actual-value: ("/" "/run/lock" "/sys/fs/pstore" "/run/shm" "/run/rpc_pipefs" "/proc/sys/fs/binfmt_misc" "/sys/fs/cgroup" "/run/cgmanager/fs" "/run/user/116" "/run/user/1000" "/media/alexvong1995/e6466814-8885-4b47-ad1c-a8ad4e3f4552") Test begin: test-name: "swapon, ENOENT/EPERM" source-file: "tests/syscalls.scm" source-line: 56 source-form: (test-assert "swapon, ENOENT/EPERM" (catch (quote system-error) (lambda () (swapon "/does-not-exist") #f) (lambda args (memv (system-error-errno args) (list EPERM ENOENT))))) Test end: result-kind: pass actual-value: (1 2) Test begin: test-name: "swapoff, ENOENT/EINVAL/EPERM" source-file: "tests/syscalls.scm" source-line: 64 source-form: (test-assert "swapoff, ENOENT/EINVAL/EPERM" (catch (quote system-error) (lambda () (swapoff "/does-not-exist") #f) (lambda args (memv (system-error-errno args) (list EPERM EINVAL ENOENT))))) Test end: result-kind: pass actual-value: (1 22 2) Test begin: test-name: "mkdtemp!" source-file: "tests/syscalls.scm" source-line: 72 source-form: (test-assert "mkdtemp!" (let* ((tmp (or (getenv "TMPDIR") "/tmp")) (dir (mkdtemp! (string-append tmp "/guix-test-XXXXXX")))) (and (file-exists? dir) (begin (rmdir dir) #t)))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "clone" source-file: "tests/syscalls.scm" source-line: 85 source-form: (test-assert "clone" (match (clone (logior CLONE_NEWUSER SIGCHLD)) (0 (primitive-exit 42)) (pid (and (not (equal? (readlink (user-namespace pid)) (readlink (user-namespace (getpid))))) (match (waitpid pid) ((_ . status) (= 42 (status:exit-val status)))))))) Test end: result-kind: fail actual-value: #f actual-error: (system-error "readlink" "~A" ("No such file or directory") (2)) Test begin: test-name: "setns" source-file: "tests/syscalls.scm" source-line: 98 source-form: (test-assert "setns" (match (clone (logior CLONE_NEWUSER SIGCHLD)) (0 (primitive-exit 0)) (clone-pid (match (pipe) ((in . out) (match (primitive-fork) (0 (close in) (call-with-input-file (user-namespace clone-pid) (lambda (port) (setns (port->fdes port) 0))) (write (quote done) out) (close out) (primitive-exit 0)) (fork-pid (close out) (read in) (let ((result (and (equal? (readlink (user-namespace clone-pid)) (readlink (user-namespace fork-pid)))))) (waitpid clone-pid) (waitpid fork-pid) result)))))))) Test end: result-kind: fail actual-value: #f actual-error: (system-error "readlink" "~A" ("No such file or directory") (2)) %%%% Starting test syscalls Group begin: syscalls Test begin: test-name: "mount, ENOENT" source-file: "tests/syscalls.scm" source-line: 33 source-form: (test-equal "mount, ENOENT" ENOENT (catch (quote system-error) (lambda () (mount "/dev/null" "/does-not-exist" "ext2") #f) (compose system-error-errno list))) Test end: result-kind: pass actual-value: 2 expected-value: 2 Test begin: test-name: "umount, ENOENT/EPERM" source-file: "tests/syscalls.scm" source-line: 41 source-form: (test-assert "umount, ENOENT/EPERM" (catch (quote system-error) (lambda () (umount "/does-not-exist") #f) (lambda args (memv (system-error-errno args) (list EPERM ENOENT))))) Test end: result-kind: pass actual-value: (1 2) Test begin: test-name: "mount-points" source-file: "tests/syscalls.scm" source-line: 50 source-form: (test-assert "mount-points" (any (cute member <> (mount-points)) (quote ("/" "/proc" "/sys" "/dev")))) Test end: result-kind: pass actual-value: ("/" "/run/lock" "/sys/fs/pstore" "/run/shm" "/run/rpc_pipefs" "/proc/sys/fs/binfmt_misc" "/sys/fs/cgroup" "/run/cgmanager/fs" "/run/user/116" "/run/user/1000" "/media/alexvong1995/e6466814-8885-4b47-ad1c-a8ad4e3f4552") Test begin: test-name: "swapon, ENOENT/EPERM" source-file: "tests/syscalls.scm" source-line: 56 source-form: (test-assert "swapon, ENOENT/EPERM" (catch (quote system-error) (lambda () (swapon "/does-not-exist") #f) (lambda args (memv (system-error-errno args) (list EPERM ENOENT))))) Test end: result-kind: pass actual-value: (1 2) Test begin: test-name: "swapoff, ENOENT/EINVAL/EPERM" source-file: "tests/syscalls.scm" source-line: 64 source-form: (test-assert "swapoff, ENOENT/EINVAL/EPERM" (catch (quote system-error) (lambda () (swapoff "/does-not-exist") #f) (lambda args (memv (system-error-errno args) (list EPERM EINVAL ENOENT))))) Test end: result-kind: pass actual-value: (1 22 2) Test begin: test-name: "mkdtemp!" source-file: "tests/syscalls.scm" source-line: 72 source-form: (test-assert "mkdtemp!" (let* ((tmp (or (getenv "TMPDIR") "/tmp")) (dir (mkdtemp! (string-append tmp "/guix-test-XXXXXX")))) (and (file-exists? dir) (begin (rmdir dir) #t)))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "clone" source-file: "tests/syscalls.scm" source-line: 85 source-form: (test-assert "clone" (match (clone (logior CLONE_NEWUSER SIGCHLD)) (0 (primitive-exit 42)) (pid (and (not (equal? (readlink (user-namespace pid)) (readlink (user-namespace (getpid))))) (match (waitpid pid) ((_ . status) (= 42 (status:exit-val status)))))))) Test end: result-kind: fail actual-value: #f actual-error: (system-error "readlink" "~A" ("No such file or directory") (2)) Test begin: test-name: "setns" source-file: "tests/syscalls.scm" source-line: 98 source-form: (test-assert "setns" (match (clone (logior CLONE_NEWUSER SIGCHLD)) (0 (primitive-exit 0)) (clone-pid (match (pipe) ((in . out) (match (primitive-fork) (0 (close in) (call-with-input-file (user-namespace clone-pid) (lambda (port) (setns (port->fdes port) 0))) (write (quote done) out) (close out) (primitive-exit 0)) (fork-pid (close out) (read in) (let ((result (and (equal? (readlink (user-namespace clone-pid)) (readlink (user-namespace fork-pid)))))) (waitpid clone-pid) (waitpid fork-pid) result)))))))) Test end: result-kind: fail actual-value: #f actual-error: (system-error "open-file" "~A: ~S" ("No such file or directory" "/proc/-1/ns/user") (2)) Test begin: test-name: "pivot-root" source-file: "tests/syscalls.scm" source-line: 127 source-form: (test-assert "pivot-root" (match (pipe) ((in . out) (match (clone (logior CLONE_NEWUSER CLONE_NEWNS SIGCHLD)) (0 (close in) (call-with-temporary-directory (lambda (root) (let ((put-old (string-append root "/real-root"))) (mount "none" root "tmpfs") (mkdir put-old) (call-with-output-file (string-append root "/test") (lambda (port) (display "testing\n" port))) (pivot-root root put-old) (write (file-exists? "/test") out) (close out)))) (primitive-exit 0)) (pid (close out) (let ((result (read in))) (close in) (and (zero? (match (waitpid pid) ((_ . status) (status:exit-val status)))) (eq? #t result)))))))) Test end: result-kind: fail actual-value: #f actual-error: (system-error "waitpid" "~A" ("No child processes") (10)) Test begin: test-name: "all-network-interface-names" source-file: "tests/syscalls.scm" source-line: 155 source-form: (test-assert "all-network-interface-names" (match (all-network-interface-names) (((? string? names) ..1) (member "lo" names)))) Test end: result-kind: pass actual-value: ("lo") Test begin: test-name: "network-interface-names" source-file: "tests/syscalls.scm" source-line: 160 source-form: (test-assert "network-interface-names" (match (network-interface-names) (((? string? names) ..1) (lset<= string=? names (all-network-interface-names))))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "network-interface-flags" source-file: "tests/syscalls.scm" source-line: 165 source-form: (test-assert "network-interface-flags" (let* ((sock (socket AF_INET SOCK_STREAM 0)) (flags (network-interface-flags sock "lo"))) (close-port sock) (and (not (zero? (logand flags IFF_LOOPBACK))) (not (zero? (logand flags IFF_UP)))))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "loopback-network-interface?" source-file: "tests/syscalls.scm" source-line: 172 source-form: (test-equal "loopback-network-interface?" ENODEV (and (loopback-network-interface? "lo") (catch (quote system-error) (lambda () (loopback-network-interface? "nonexistent") #f) (lambda args (system-error-errno args))))) Test end: result-kind: pass actual-value: 19 expected-value: 19 Test begin: test-name: "set-network-interface-flags" source-file: "tests/syscalls.scm" source-line: 183 source-form: (test-assert "set-network-interface-flags" (let ((sock (socket AF_INET SOCK_STREAM 0))) (catch (quote system-error) (lambda () (set-network-interface-flags sock "lo" IFF_UP)) (lambda args (close-port sock) (memv (system-error-errno args) (list EPERM EACCES)))))) Test end: result-kind: pass actual-value: (1 13) Test begin: test-name: "network-interface-address lo" source-file: "tests/syscalls.scm" source-line: 193 source-form: (test-equal "network-interface-address lo" (make-socket-address AF_INET (inet-pton AF_INET "127.0.0.1") 0) (let* ((sock (socket AF_INET SOCK_STREAM 0)) (addr (network-interface-address sock "lo"))) (close-port sock) addr)) Test end: result-kind: pass actual-value: #(2 2130706433 0) expected-value: #(2 2130706433 0) Test begin: test-name: "set-network-interface-address" source-file: "tests/syscalls.scm" source-line: 201 source-form: (test-assert "set-network-interface-address" (let ((sock (socket AF_INET SOCK_STREAM 0))) (catch (quote system-error) (lambda () (set-network-interface-address sock "nonexistent" (make-socket-address AF_INET (inet-pton AF_INET "127.12.14.15") 0))) (lambda args (close-port sock) (memv (system-error-errno args) (list EPERM EACCES)))))) Test end: result-kind: pass actual-value: (1 13) Test begin: test-name: "network-interfaces returns one or more interfaces" source-file: "tests/syscalls.scm" source-line: 215 source-form: (test-equal "network-interfaces returns one or more interfaces" (quote (#t #t #t)) (match (network-interfaces) ((interfaces ..1) (list (every interface? interfaces) (every string? (map interface-name interfaces)) (every vector? (map interface-address interfaces)))))) Test end: result-kind: pass actual-value: (#t #t #t) expected-value: (#t #t #t) Test begin: test-name: "network-interfaces returns \"lo\"" source-file: "tests/syscalls.scm" source-line: 223 source-form: (test-equal "network-interfaces returns \"lo\"" (list #t (make-socket-address AF_INET (inet-pton AF_INET "127.0.0.1") 0)) (match (filter (lambda (interface) (string=? "lo" (interface-name interface))) (network-interfaces)) ((loopbacks ..1) (list (every (lambda (lo) (not (zero? (logand IFF_LOOPBACK (interface-flags lo))))) loopbacks) (match (find (lambda (lo) (= AF_INET (sockaddr:fam (interface-address lo)))) loopbacks) (#f #f) (lo (interface-address lo))))))) Test end: result-kind: pass actual-value: (#t #(2 2130706433 0)) expected-value: (#t #(2 2130706433 0)) Group end: syscalls # of expected passes 15 # of unexpected failures 3 --MP_/4S8E7CpR0vWTevUPHgBml5U--