Subject: bug#25476: pivot-root test fails on Ubuntu 16.04

From: [email-masked] (Ludovic Courtès)
Date: Mon, 30 Jan 2017 23:32:05 +0100

Paul Garlick <[email-masked]> skribis:

> test-name: pivot-root
> location: /data/paul/sourceCode/guix/tests/syscalls.scm:154
> source:
> + (test-equal
> +   "pivot-root"
> +   #t
> +   (match (pipe)
> +          ((in . out)
> +           (match (clone (logior CLONE_NEWUSER CLONE_NEWNS SIGCHLD))
> +                  (0
> +                   (dynamic-wind
> +                     (const #t)
> +                     (lambda ()
> +                       (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)))))
> +                     (lambda () (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))))))))
> expected-value: #t
> actual-value: #f
> result: FAIL

Hmm, not sure why this is failing.  Most likely (file-exists? "/test")
returns #f.

Could you change “(eq? #t result)” to “result”, rerun the test, and send
syscalls.log?

Thanks,
Ludo’.