all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#25476: pivot-root test fails on Ubuntu 16.04
@ 2017-01-18 17:22 Paul Garlick
  2017-01-19 16:23 ` Ludovic Courtès
  2020-02-11  0:16 ` bug#25476: Hunting: pivot-root test fails on foreign distro zimoun
  0 siblings, 2 replies; 13+ messages in thread
From: Paul Garlick @ 2017-01-18 17:22 UTC (permalink / raw)
  To: 25476

[-- Attachment #1: Type: text/plain, Size: 323 bytes --]

Hi,

I have noticed that the pivot-root test on my development system has
started to fail.  After running 'make check' the result: FAIL is
recorded for the syscalls.scm test.

I have recently updated the system.  It is running Ubuntu 16.04.
 Previously, the test passed.  Now:

$ uname -r
4.4.0-59-generic

Best,

Paul.

[-- Attachment #2: Type: text/html, Size: 519 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#25476: pivot-root test fails on Ubuntu 16.04
  2017-01-18 17:22 bug#25476: pivot-root test fails on Ubuntu 16.04 Paul Garlick
@ 2017-01-19 16:23 ` Ludovic Courtès
  2017-01-20 23:20   ` Paul Garlick
  2020-02-11  0:16 ` bug#25476: Hunting: pivot-root test fails on foreign distro zimoun
  1 sibling, 1 reply; 13+ messages in thread
From: Ludovic Courtès @ 2017-01-19 16:23 UTC (permalink / raw)
  To: Paul Garlick; +Cc: 25476

Hi!

Paul Garlick <pgarlick@tourbillion-technology.com> skribis:

> I have noticed that the pivot-root test on my development system has
> started to fail.  After running 'make check' the result: FAIL is
> recorded for the syscalls.scm test.
>
> I have recently updated the system.  It is running Ubuntu 16.04.
>  Previously, the test passed.  Now:
>
> $ uname -r
> 4.4.0-59-generic

That’s on Git master, right?

Could you post tests/syscalls.log?

This test is known to be problematic with recent kernels, as written
above it:

--8<---------------cut here---------------start------------->8---
;; XXX: Skip this test when running Linux > 4.7.5 to work around
;; <https://bugzilla.kernel.org/show_bug.cgi?id=183461>.
(when (or (not perform-container-tests?)
          (version>? (utsname:release (uname)) "4.7.5"))
  (test-skip 1))
--8<---------------cut here---------------end--------------->8---

AFAIK this particular problem was introduced around 4.7.5, as discussed
in the bug report above, but maybe Ubuntu’s 4.4 has it too?

Thanks for your report!

Ludo’.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#25476: pivot-root test fails on Ubuntu 16.04
  2017-01-19 16:23 ` Ludovic Courtès
@ 2017-01-20 23:20   ` Paul Garlick
  2017-01-30 22:32     ` Ludovic Courtès
  0 siblings, 1 reply; 13+ messages in thread
From: Paul Garlick @ 2017-01-20 23:20 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 25476


[-- Attachment #1.1: Type: text/plain, Size: 196 bytes --]

Hi Ludo,
> That’s on Git master, right?
Yes, back on the master branch the test still fails:
$ git describe
v0.11.0-3373-g2df3d14
> Could you post tests/syscalls.log?
> 

Attached.
Best,
Paul.


[-- Attachment #1.2: Type: text/html, Size: 563 bytes --]

[-- Attachment #2: syscalls.log --]
[-- Type: text/x-log, Size: 18628 bytes --]

test-name: mount, ENOENT
location: /data/paul/sourceCode/guix/tests/syscalls.scm:38
source:
+ (test-equal
+   "mount, ENOENT"
+   ENOENT
+   (catch 'system-error
+          (lambda ()
+            (mount "/dev/null" "/does-not-exist" "ext2")
+            #f)
+          (compose system-error-errno list)))
expected-value: 2
actual-value: 2
result: PASS

test-name: umount, ENOENT/EPERM
location: /data/paul/sourceCode/guix/tests/syscalls.scm:46
source:
+ (test-assert
+   "umount, ENOENT/EPERM"
+   (catch 'system-error
+          (lambda () (umount "/does-not-exist") #f)
+          (lambda args
+            (memv (system-error-errno args)
+                  (list EPERM ENOENT)))))
actual-value: (1 2)
result: PASS

test-name: mount-points
location: /data/paul/sourceCode/guix/tests/syscalls.scm:55
source:
+ (test-assert
+   "mount-points"
+   (any (cute member <> (mount-points))
+        '("/" "/proc" "/sys" "/dev")))
actual-value: (/ /sys/kernel/security /dev/shm /run/lock /sys/fs/cgroup /sys/fs/cgroup/systemd /sys/fs/pstore /sys/fs/cgroup/memory /sys/fs/cgroup/net_cls,net_prio /sys/fs/cgroup/pids /sys/fs/cgroup/cpuset /sys/fs/cgroup/cpu,cpuacct /sys/fs/cgroup/blkio /sys/fs/cgroup/devices /sys/fs/cgroup/freezer /sys/fs/cgroup/perf_event /sys/fs/cgroup/hugetlb /proc/sys/fs/binfmt_misc /sys/kernel/debug /dev/mqueue /dev/hugepages /run/rpc_pipefs /sys/fs/fuse/connections /data /run/cgmanager/fs /run/user/1000 /run/user/1000/gvfs)
result: PASS

test-name: swapon, ENOENT/EPERM
location: /data/paul/sourceCode/guix/tests/syscalls.scm:61
source:
+ (test-assert
+   "swapon, ENOENT/EPERM"
+   (catch 'system-error
+          (lambda () (swapon "/does-not-exist") #f)
+          (lambda args
+            (memv (system-error-errno args)
+                  (list EPERM ENOENT)))))
actual-value: (1 2)
result: PASS

test-name: swapoff, ENOENT/EINVAL/EPERM
location: /data/paul/sourceCode/guix/tests/syscalls.scm:69
source:
+ (test-assert
+   "swapoff, ENOENT/EINVAL/EPERM"
+   (catch 'system-error
+          (lambda () (swapoff "/does-not-exist") #f)
+          (lambda args
+            (memv (system-error-errno args)
+                  (list EPERM EINVAL ENOENT)))))
actual-value: (1 22 2)
result: PASS

test-name: mkdtemp!
location: /data/paul/sourceCode/guix/tests/syscalls.scm:77
source:
+ (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))))
actual-value: #t
result: PASS

test-name: statfs, ENOENT
location: /data/paul/sourceCode/guix/tests/syscalls.scm:85
source:
+ (test-equal
+   "statfs, ENOENT"
+   ENOENT
+   (catch 'system-error
+          (lambda () (statfs "/does-not-exist"))
+          (compose system-error-errno list)))
expected-value: 2
actual-value: 2
result: PASS

test-name: statfs
location: /data/paul/sourceCode/guix/tests/syscalls.scm:92
source:
+ (test-assert
+   "statfs"
+   (let ((fs (statfs "/")))
+     (and (file-system? fs)
+          (> (file-system-block-size fs) 0)
+          (>= (file-system-blocks-available fs) 0)
+          (>= (file-system-blocks-free fs)
+              (file-system-blocks-available fs)))))
actual-value: #t
result: PASS

test-name: clone
location: /data/paul/sourceCode/guix/tests/syscalls.scm:109
source:
+ (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))))))))
actual-value: #t
result: PASS

test-name: setns
location: /data/paul/sourceCode/guix/tests/syscalls.scm:122
source:
+ (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 '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))))))))
actual-value: #t
result: PASS

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

test-name: fcntl-flock wait
location: /data/paul/sourceCode/guix/tests/syscalls.scm:188
source:
+ (test-equal
+   "fcntl-flock wait"
+   42
+   (let ((file (open-file temp-file "w0b")))
+     (fcntl-flock file 'write-lock)
+     (match (primitive-fork)
+            (0
+             (dynamic-wind
+               (const #t)
+               (lambda ()
+                 (let ((file (open-file temp-file "r0b")))
+                   (fcntl-flock file 'read-lock)
+                   (primitive-exit (read file)))
+                 (primitive-exit 1))
+               (lambda () (primitive-exit 2))))
+            (pid (display "hello, world!" file)
+                 (force-output file)
+                 (sleep 1)
+                 (seek file 0 SEEK_SET)
+                 (truncate-file file 0)
+                 (write 42 file)
+                 (force-output file)
+                 (fcntl-flock file 'unlock)
+                 (match (waitpid pid)
+                        ((_ . status)
+                         (let ((result (status:exit-val status)))
+                           (close-port file)
+                           result)))))))
expected-value: 42
actual-value: 42
result: PASS

test-name: fcntl-flock non-blocking
location: /data/paul/sourceCode/guix/tests/syscalls.scm:227
source:
+ (test-equal
+   "fcntl-flock non-blocking"
+   EAGAIN
+   (match (pipe)
+          ((input . output)
+           (match (primitive-fork)
+                  (0
+                   (dynamic-wind
+                     (const #t)
+                     (lambda ()
+                       (close-port output)
+                       (read-char input)
+                       (let ((file (open-file temp-file "w0")))
+                         (catch 'flock-error
+                                (lambda ()
+                                  (fcntl-flock file 'write-lock #:wait? #f))
+                                (lambda (key errno)
+                                  (primitive-exit (pk 'errno errno)))))
+                       (primitive-exit -1))
+                     (lambda () (primitive-exit -2))))
+                  (pid (close-port input)
+                       (let ((file (open-file temp-file "w0")))
+                         (fcntl-flock file 'write-lock)
+                         (write 'green-light output)
+                         (force-output output)
+                         (match (waitpid pid)
+                                ((_ . status)
+                                 (let ((result (status:exit-val status)))
+                                   (fcntl-flock file 'unlock)
+                                   (close-port file)
+                                   result)))))))))

;;; (errno 11)
expected-value: 11
actual-value: 11
result: PASS

test-name: all-network-interface-names
location: /data/paul/sourceCode/guix/tests/syscalls.scm:269
source:
+ (test-assert
+   "all-network-interface-names"
+   (match (all-network-interface-names)
+          (((? string? names) ..1) (member "lo" names))))
actual-value: (lo wlan0 eth0)
result: PASS

test-name: network-interface-names
location: /data/paul/sourceCode/guix/tests/syscalls.scm:274
source:
+ (test-assert
+   "network-interface-names"
+   (match (network-interface-names)
+          (((? string? names) ..1)
+           (lset<=
+             string=?
+             names
+             (all-network-interface-names)))))
actual-value: #t
result: PASS

test-name: network-interface-flags
location: /data/paul/sourceCode/guix/tests/syscalls.scm:279
source:
+ (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))))))
actual-value: #t
result: PASS

test-name: loopback-network-interface?
location: /data/paul/sourceCode/guix/tests/syscalls.scm:286
source:
+ (test-equal
+   "loopback-network-interface?"
+   ENODEV
+   (and (loopback-network-interface? "lo")
+        (catch 'system-error
+               (lambda ()
+                 (loopback-network-interface? "nonexistent")
+                 #f)
+               (lambda args (system-error-errno args)))))
expected-value: 19
actual-value: 19
result: PASS

test-name: set-network-interface-flags
location: /data/paul/sourceCode/guix/tests/syscalls.scm:297
source:
+ (test-assert
+   "set-network-interface-flags"
+   (let ((sock (socket AF_INET SOCK_STREAM 0)))
+     (catch 'system-error
+            (lambda ()
+              (set-network-interface-flags sock "lo" IFF_UP))
+            (lambda args
+              (close-port sock)
+              (memv (system-error-errno args)
+                    (list EPERM EACCES))))))
actual-value: (1 13)
result: PASS

test-name: network-interface-address lo
location: /data/paul/sourceCode/guix/tests/syscalls.scm:307
source:
+ (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))
expected-value: #(2 2130706433 0)
actual-value: #(2 2130706433 0)
result: PASS

test-name: set-network-interface-address
location: /data/paul/sourceCode/guix/tests/syscalls.scm:315
source:
+ (test-assert
+   "set-network-interface-address"
+   (let ((sock (socket AF_INET SOCK_STREAM 0)))
+     (catch '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))))))
actual-value: (1 13)
result: PASS

test-name: network-interface-netmask lo
location: /data/paul/sourceCode/guix/tests/syscalls.scm:329
source:
+ (test-equal
+   "network-interface-netmask lo"
+   (make-socket-address
+     AF_INET
+     (inet-pton AF_INET "255.0.0.0")
+     0)
+   (let* ((sock (socket AF_INET SOCK_STREAM 0))
+          (addr (network-interface-netmask sock "lo")))
+     (close-port sock)
+     addr))
expected-value: #(2 4278190080 0)
actual-value: #(2 4278190080 0)
result: PASS

test-name: set-network-interface-netmask
location: /data/paul/sourceCode/guix/tests/syscalls.scm:337
source:
+ (test-assert
+   "set-network-interface-netmask"
+   (let ((sock (socket AF_INET SOCK_STREAM 0)))
+     (catch 'system-error
+            (lambda ()
+              (set-network-interface-netmask
+                sock
+                "nonexistent"
+                (make-socket-address
+                  AF_INET
+                  (inet-pton AF_INET "255.0.0.0")
+                  0)))
+            (lambda args
+              (close-port sock)
+              (memv (system-error-errno args)
+                    (list EPERM EACCES))))))
actual-value: (1 13)
result: PASS

test-name: network-interfaces returns one or more interfaces
location: /data/paul/sourceCode/guix/tests/syscalls.scm:350
source:
+ (test-equal
+   "network-interfaces returns one or more interfaces"
+   '(#t #t #t)
+   (match (network-interfaces)
+          ((interfaces ..1)
+           (list (every interface? interfaces)
+                 (every string? (map interface-name interfaces))
+                 (every (lambda (sockaddr)
+                          (or (vector? sockaddr) (not sockaddr)))
+                        (map interface-address interfaces))))))
expected-value: (#t #t #t)
actual-value: (#t #t #t)
result: PASS

test-name: network-interfaces returns "lo"
location: /data/paul/sourceCode/guix/tests/syscalls.scm:362
source:
+ (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)))))))
expected-value: (#t #(2 2130706433 0))
actual-value: (#t #(2 2130706433 0))
result: PASS

test-name: add-network-route/gateway
location: /data/paul/sourceCode/guix/tests/syscalls.scm:378
source:
+ (test-assert
+   "add-network-route/gateway"
+   (let ((sock (socket AF_INET SOCK_STREAM 0))
+         (gateway
+           (make-socket-address
+             AF_INET
+             (inet-pton AF_INET "192.168.0.1")
+             0)))
+     (catch 'system-error
+            (lambda ()
+              (add-network-route/gateway sock gateway))
+            (lambda args
+              (close-port sock)
+              (memv (system-error-errno args)
+                    (list EPERM EACCES))))))
actual-value: (1 13)
result: PASS

test-name: delete-network-route
location: /data/paul/sourceCode/guix/tests/syscalls.scm:391
source:
+ (test-assert
+   "delete-network-route"
+   (let ((sock (socket AF_INET SOCK_STREAM 0))
+         (destination
+           (make-socket-address AF_INET INADDR_ANY 0)))
+     (catch 'system-error
+            (lambda ()
+              (delete-network-route sock destination))
+            (lambda args
+              (close-port sock)
+              (memv (system-error-errno args)
+                    (list EPERM EACCES))))))
actual-value: (1 13)
result: PASS

test-name: tcgetattr ENOTTY
location: /data/paul/sourceCode/guix/tests/syscalls.scm:401
source:
+ (test-equal
+   "tcgetattr ENOTTY"
+   ENOTTY
+   (catch 'system-error
+          (lambda ()
+            (call-with-input-file
+              "/dev/null"
+              (lambda (port) (tcgetattr (fileno port)))))
+          (compose system-error-errno list)))
expected-value: 25
actual-value: 25
result: PASS

test-name: tcgetattr
location: /data/paul/sourceCode/guix/tests/syscalls.scm:415
source:
+ (test-assert
+   "tcgetattr"
+   (let ((termios (tcgetattr 0)))
+     (and (termios? termios)
+          (> (termios-input-speed termios) 0)
+          (> (termios-output-speed termios) 0))))
result: SKIP

test-name: tcsetattr
location: /data/paul/sourceCode/guix/tests/syscalls.scm:421
source:
+ (test-assert
+   "tcsetattr"
+   (let ((first (tcgetattr 0)))
+     (tcsetattr 0 (tcsetattr-action TCSANOW) first)
+     (equal? first (tcgetattr 0))))
result: SKIP

test-name: terminal-window-size ENOTTY
location: /data/paul/sourceCode/guix/tests/syscalls.scm:426
source:
+ (test-assert
+   "terminal-window-size ENOTTY"
+   (call-with-input-file
+     "/dev/null"
+     (lambda (port)
+       (catch 'system-error
+              (lambda () (terminal-window-size port))
+              (lambda args
+                (memv (system-error-errno args)
+                      (list ENOTTY EINVAL)))))))
actual-value: (25 22)
result: PASS

test-name: terminal-columns
location: /data/paul/sourceCode/guix/tests/syscalls.scm:437
source:
+ (test-assert
+   "terminal-columns"
+   (> (terminal-columns) 0))
actual-value: #t
result: PASS

test-name: terminal-columns non-file port
location: /data/paul/sourceCode/guix/tests/syscalls.scm:440
source:
+ (test-assert
+   "terminal-columns non-file port"
+   (> (terminal-columns
+        (open-input-string
+          "Join us now, share the software!"))
+      0))
actual-value: #t
result: PASS


^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#25476: pivot-root test fails on Ubuntu 16.04
  2017-01-20 23:20   ` Paul Garlick
@ 2017-01-30 22:32     ` Ludovic Courtès
  2017-01-31 16:48       ` Paul Garlick
  0 siblings, 1 reply; 13+ messages in thread
From: Ludovic Courtès @ 2017-01-30 22:32 UTC (permalink / raw)
  To: Paul Garlick; +Cc: 25476

Paul Garlick <pgarlick@tourbillion-technology.com> 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’.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#25476: pivot-root test fails on Ubuntu 16.04
  2017-01-30 22:32     ` Ludovic Courtès
@ 2017-01-31 16:48       ` Paul Garlick
  2017-02-01 13:08         ` Ludovic Courtès
  0 siblings, 1 reply; 13+ messages in thread
From: Paul Garlick @ 2017-01-31 16:48 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 25476


[-- Attachment #1.1: Type: text/plain, Size: 400 bytes --]

> 
> Could you change “(eq? #t result)” to “result”, rerun the test, and
> send
> syscalls.log?
> 
> 
Hi Ludo,
After a 'git pull --rebase' I now have:
$ git describe
v0.12.0-984-gabb7eb7
The pivot-root test still fails.  The 'actual-value' is now #<eof>.  I
have attached the syscalls.log file.  
In fact there is also a new FAIL result, for utmpx-entries.  Is this
unrelated?
Best,
Paul.

[-- Attachment #1.2: Type: text/html, Size: 684 bytes --]

[-- Attachment #2: syscalls.log --]
[-- Type: text/x-log, Size: 19577 bytes --]

test-name: mount, ENOENT
location: /data/paul/sourceCode/guix/tests/syscalls.scm:38
source:
+ (test-equal
+   "mount, ENOENT"
+   ENOENT
+   (catch 'system-error
+          (lambda ()
+            (mount "/dev/null" "/does-not-exist" "ext2")
+            #f)
+          (compose system-error-errno list)))
expected-value: 2
actual-value: 2
result: PASS

test-name: umount, ENOENT/EPERM
location: /data/paul/sourceCode/guix/tests/syscalls.scm:46
source:
+ (test-assert
+   "umount, ENOENT/EPERM"
+   (catch 'system-error
+          (lambda () (umount "/does-not-exist") #f)
+          (lambda args
+            (memv (system-error-errno args)
+                  (list EPERM ENOENT)))))
actual-value: (1 2)
result: PASS

test-name: mount-points
location: /data/paul/sourceCode/guix/tests/syscalls.scm:55
source:
+ (test-assert
+   "mount-points"
+   (any (cute member <> (mount-points))
+        '("/" "/proc" "/sys" "/dev")))
actual-value: (/ /sys/kernel/security /dev/shm /run/lock /sys/fs/cgroup /sys/fs/cgroup/systemd /sys/fs/pstore /sys/fs/cgroup/devices /sys/fs/cgroup/pids /sys/fs/cgroup/memory /sys/fs/cgroup/freezer /sys/fs/cgroup/net_cls,net_prio /sys/fs/cgroup/hugetlb /sys/fs/cgroup/cpu,cpuacct /sys/fs/cgroup/blkio /sys/fs/cgroup/cpuset /sys/fs/cgroup/perf_event /proc/sys/fs/binfmt_misc /dev/hugepages /dev/mqueue /sys/kernel/debug /run/rpc_pipefs /sys/fs/fuse/connections /data /run/cgmanager/fs /run/user/1000 /run/user/1000/gvfs)
result: PASS

test-name: swapon, ENOENT/EPERM
location: /data/paul/sourceCode/guix/tests/syscalls.scm:61
source:
+ (test-assert
+   "swapon, ENOENT/EPERM"
+   (catch 'system-error
+          (lambda () (swapon "/does-not-exist") #f)
+          (lambda args
+            (memv (system-error-errno args)
+                  (list EPERM ENOENT)))))
actual-value: (1 2)
result: PASS

test-name: swapoff, ENOENT/EINVAL/EPERM
location: /data/paul/sourceCode/guix/tests/syscalls.scm:69
source:
+ (test-assert
+   "swapoff, ENOENT/EINVAL/EPERM"
+   (catch 'system-error
+          (lambda () (swapoff "/does-not-exist") #f)
+          (lambda args
+            (memv (system-error-errno args)
+                  (list EPERM EINVAL ENOENT)))))
actual-value: (1 22 2)
result: PASS

test-name: mkdtemp!
location: /data/paul/sourceCode/guix/tests/syscalls.scm:77
source:
+ (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))))
actual-value: #t
result: PASS

test-name: statfs, ENOENT
location: /data/paul/sourceCode/guix/tests/syscalls.scm:85
source:
+ (test-equal
+   "statfs, ENOENT"
+   ENOENT
+   (catch 'system-error
+          (lambda () (statfs "/does-not-exist"))
+          (compose system-error-errno list)))
expected-value: 2
actual-value: 2
result: PASS

test-name: statfs
location: /data/paul/sourceCode/guix/tests/syscalls.scm:92
source:
+ (test-assert
+   "statfs"
+   (let ((fs (statfs "/")))
+     (and (file-system? fs)
+          (> (file-system-block-size fs) 0)
+          (>= (file-system-blocks-available fs) 0)
+          (>= (file-system-blocks-free fs)
+              (file-system-blocks-available fs)))))
actual-value: #t
result: PASS

test-name: clone
location: /data/paul/sourceCode/guix/tests/syscalls.scm:109
source:
+ (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))))))))
actual-value: #t
result: PASS

test-name: setns
location: /data/paul/sourceCode/guix/tests/syscalls.scm:122
source:
+ (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 '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))))))))
actual-value: #t
result: PASS

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))))
+                              result)))))))
expected-value: #t
actual-value: #<eof>
result: FAIL

test-name: fcntl-flock wait
location: /data/paul/sourceCode/guix/tests/syscalls.scm:188
source:
+ (test-equal
+   "fcntl-flock wait"
+   42
+   (let ((file (open-file temp-file "w0b")))
+     (fcntl-flock file 'write-lock)
+     (match (primitive-fork)
+            (0
+             (dynamic-wind
+               (const #t)
+               (lambda ()
+                 (let ((file (open-file temp-file "r0b")))
+                   (fcntl-flock file 'read-lock)
+                   (primitive-exit (read file)))
+                 (primitive-exit 1))
+               (lambda () (primitive-exit 2))))
+            (pid (display "hello, world!" file)
+                 (force-output file)
+                 (sleep 1)
+                 (seek file 0 SEEK_SET)
+                 (truncate-file file 0)
+                 (write 42 file)
+                 (force-output file)
+                 (fcntl-flock file 'unlock)
+                 (match (waitpid pid)
+                        ((_ . status)
+                         (let ((result (status:exit-val status)))
+                           (close-port file)
+                           result)))))))
expected-value: 42
actual-value: 42
result: PASS

test-name: fcntl-flock non-blocking
location: /data/paul/sourceCode/guix/tests/syscalls.scm:227
source:
+ (test-equal
+   "fcntl-flock non-blocking"
+   EAGAIN
+   (match (pipe)
+          ((input . output)
+           (match (primitive-fork)
+                  (0
+                   (dynamic-wind
+                     (const #t)
+                     (lambda ()
+                       (close-port output)
+                       (read-char input)
+                       (let ((file (open-file temp-file "w0")))
+                         (catch 'flock-error
+                                (lambda ()
+                                  (fcntl-flock file 'write-lock #:wait? #f))
+                                (lambda (key errno)
+                                  (primitive-exit (pk 'errno errno)))))
+                       (primitive-exit -1))
+                     (lambda () (primitive-exit -2))))
+                  (pid (close-port input)
+                       (let ((file (open-file temp-file "w0")))
+                         (fcntl-flock file 'write-lock)
+                         (write 'green-light output)
+                         (force-output output)
+                         (match (waitpid pid)
+                                ((_ . status)
+                                 (let ((result (status:exit-val status)))
+                                   (fcntl-flock file 'unlock)
+                                   (close-port file)
+                                   result)))))))))

;;; (errno 11)
expected-value: 11
actual-value: 11
result: PASS

test-name: all-network-interface-names
location: /data/paul/sourceCode/guix/tests/syscalls.scm:269
source:
+ (test-assert
+   "all-network-interface-names"
+   (match (all-network-interface-names)
+          (((? string? names) ..1) (member "lo" names))))
actual-value: (lo wlan0 eth0)
result: PASS

test-name: network-interface-names
location: /data/paul/sourceCode/guix/tests/syscalls.scm:274
source:
+ (test-assert
+   "network-interface-names"
+   (match (network-interface-names)
+          (((? string? names) ..1)
+           (lset<=
+             string=?
+             names
+             (all-network-interface-names)))))
actual-value: #t
result: PASS

test-name: network-interface-flags
location: /data/paul/sourceCode/guix/tests/syscalls.scm:279
source:
+ (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))))))
actual-value: #t
result: PASS

test-name: loopback-network-interface?
location: /data/paul/sourceCode/guix/tests/syscalls.scm:286
source:
+ (test-equal
+   "loopback-network-interface?"
+   ENODEV
+   (and (loopback-network-interface? "lo")
+        (catch 'system-error
+               (lambda ()
+                 (loopback-network-interface? "nonexistent")
+                 #f)
+               (lambda args (system-error-errno args)))))
expected-value: 19
actual-value: 19
result: PASS

test-name: set-network-interface-flags
location: /data/paul/sourceCode/guix/tests/syscalls.scm:297
source:
+ (test-assert
+   "set-network-interface-flags"
+   (let ((sock (socket AF_INET SOCK_STREAM 0)))
+     (catch 'system-error
+            (lambda ()
+              (set-network-interface-flags sock "lo" IFF_UP))
+            (lambda args
+              (close-port sock)
+              (memv (system-error-errno args)
+                    (list EPERM EACCES))))))
actual-value: (1 13)
result: PASS

test-name: network-interface-address lo
location: /data/paul/sourceCode/guix/tests/syscalls.scm:307
source:
+ (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))
expected-value: #(2 2130706433 0)
actual-value: #(2 2130706433 0)
result: PASS

test-name: set-network-interface-address
location: /data/paul/sourceCode/guix/tests/syscalls.scm:315
source:
+ (test-assert
+   "set-network-interface-address"
+   (let ((sock (socket AF_INET SOCK_STREAM 0)))
+     (catch '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))))))
actual-value: (1 13)
result: PASS

test-name: network-interface-netmask lo
location: /data/paul/sourceCode/guix/tests/syscalls.scm:329
source:
+ (test-equal
+   "network-interface-netmask lo"
+   (make-socket-address
+     AF_INET
+     (inet-pton AF_INET "255.0.0.0")
+     0)
+   (let* ((sock (socket AF_INET SOCK_STREAM 0))
+          (addr (network-interface-netmask sock "lo")))
+     (close-port sock)
+     addr))
expected-value: #(2 4278190080 0)
actual-value: #(2 4278190080 0)
result: PASS

test-name: set-network-interface-netmask
location: /data/paul/sourceCode/guix/tests/syscalls.scm:337
source:
+ (test-assert
+   "set-network-interface-netmask"
+   (let ((sock (socket AF_INET SOCK_STREAM 0)))
+     (catch 'system-error
+            (lambda ()
+              (set-network-interface-netmask
+                sock
+                "nonexistent"
+                (make-socket-address
+                  AF_INET
+                  (inet-pton AF_INET "255.0.0.0")
+                  0)))
+            (lambda args
+              (close-port sock)
+              (memv (system-error-errno args)
+                    (list EPERM EACCES))))))
actual-value: (1 13)
result: PASS

test-name: network-interfaces returns one or more interfaces
location: /data/paul/sourceCode/guix/tests/syscalls.scm:350
source:
+ (test-equal
+   "network-interfaces returns one or more interfaces"
+   '(#t #t #t)
+   (match (network-interfaces)
+          ((interfaces ..1)
+           (list (every interface? interfaces)
+                 (every string? (map interface-name interfaces))
+                 (every (lambda (sockaddr)
+                          (or (vector? sockaddr) (not sockaddr)))
+                        (map interface-address interfaces))))))
expected-value: (#t #t #t)
actual-value: (#t #t #t)
result: PASS

test-name: network-interfaces returns "lo"
location: /data/paul/sourceCode/guix/tests/syscalls.scm:362
source:
+ (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)))))))
expected-value: (#t #(2 2130706433 0))
actual-value: (#t #(2 2130706433 0))
result: PASS

test-name: add-network-route/gateway
location: /data/paul/sourceCode/guix/tests/syscalls.scm:378
source:
+ (test-assert
+   "add-network-route/gateway"
+   (let ((sock (socket AF_INET SOCK_STREAM 0))
+         (gateway
+           (make-socket-address
+             AF_INET
+             (inet-pton AF_INET "192.168.0.1")
+             0)))
+     (catch 'system-error
+            (lambda ()
+              (add-network-route/gateway sock gateway))
+            (lambda args
+              (close-port sock)
+              (memv (system-error-errno args)
+                    (list EPERM EACCES))))))
actual-value: (1 13)
result: PASS

test-name: delete-network-route
location: /data/paul/sourceCode/guix/tests/syscalls.scm:391
source:
+ (test-assert
+   "delete-network-route"
+   (let ((sock (socket AF_INET SOCK_STREAM 0))
+         (destination
+           (make-socket-address AF_INET INADDR_ANY 0)))
+     (catch 'system-error
+            (lambda ()
+              (delete-network-route sock destination))
+            (lambda args
+              (close-port sock)
+              (memv (system-error-errno args)
+                    (list EPERM EACCES))))))
actual-value: (1 13)
result: PASS

test-name: tcgetattr ENOTTY
location: /data/paul/sourceCode/guix/tests/syscalls.scm:401
source:
+ (test-equal
+   "tcgetattr ENOTTY"
+   ENOTTY
+   (catch 'system-error
+          (lambda ()
+            (call-with-input-file
+              "/dev/null"
+              (lambda (port) (tcgetattr (fileno port)))))
+          (compose system-error-errno list)))
expected-value: 25
actual-value: 25
result: PASS

test-name: tcgetattr
location: /data/paul/sourceCode/guix/tests/syscalls.scm:415
source:
+ (test-assert
+   "tcgetattr"
+   (let ((termios (tcgetattr 0)))
+     (and (termios? termios)
+          (> (termios-input-speed termios) 0)
+          (> (termios-output-speed termios) 0))))
result: SKIP

test-name: tcsetattr
location: /data/paul/sourceCode/guix/tests/syscalls.scm:421
source:
+ (test-assert
+   "tcsetattr"
+   (let ((first (tcgetattr 0)))
+     (tcsetattr 0 (tcsetattr-action TCSANOW) first)
+     (equal? first (tcgetattr 0))))
result: SKIP

test-name: terminal-window-size ENOTTY
location: /data/paul/sourceCode/guix/tests/syscalls.scm:426
source:
+ (test-assert
+   "terminal-window-size ENOTTY"
+   (call-with-input-file
+     "/dev/null"
+     (lambda (port)
+       (catch 'system-error
+              (lambda () (terminal-window-size port))
+              (lambda args
+                (memv (system-error-errno args)
+                      (list ENOTTY EINVAL)))))))
actual-value: (25 22)
result: PASS

test-name: terminal-columns
location: /data/paul/sourceCode/guix/tests/syscalls.scm:437
source:
+ (test-assert
+   "terminal-columns"
+   (> (terminal-columns) 0))
actual-value: #t
result: PASS

test-name: terminal-columns non-file port
location: /data/paul/sourceCode/guix/tests/syscalls.scm:440
source:
+ (test-assert
+   "terminal-columns non-file port"
+   (> (terminal-columns
+        (open-input-string
+          "Join us now, share the software!"))
+      0))
actual-value: #t
result: PASS

test-name: utmpx-entries
location: /data/paul/sourceCode/guix/tests/syscalls.scm:444
source:
+ (test-assert
+   "utmpx-entries"
+   (match (utmpx-entries)
+          (((? utmpx? entries) ...)
+           (every (lambda (entry)
+                    (match (utmpx-user entry)
+                           ((? string?) (> (utmpx-pid entry) 0))
+                           (#f #t)))
+                  entries))))
actual-value: #f
result: FAIL

test-name: read-utmpx, EOF
location: /data/paul/sourceCode/guix/tests/syscalls.scm:455
source:
+ (test-assert
+   "read-utmpx, EOF"
+   (eof-object? (read-utmpx (%make-void-port "r"))))
actual-value: #t
result: PASS

test-name: read-utmpx
location: /data/paul/sourceCode/guix/tests/syscalls.scm:460
source:
+ (test-assert
+   "read-utmpx"
+   (let ((result
+           (call-with-input-file
+             "/var/run/utmpx"
+             read-utmpx)))
+     (or (utmpx? result) (eof-object? result))))
result: SKIP


^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#25476: pivot-root test fails on Ubuntu 16.04
  2017-01-31 16:48       ` Paul Garlick
@ 2017-02-01 13:08         ` Ludovic Courtès
  2017-02-01 15:33           ` Paul Garlick
  0 siblings, 1 reply; 13+ messages in thread
From: Ludovic Courtès @ 2017-02-01 13:08 UTC (permalink / raw)
  To: Paul Garlick; +Cc: 25476

Hi,

Paul Garlick <pgarlick@tourbillion-technology.com> 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))))
> +                              result)))))))
> expected-value: #t
> actual-value: #<eof>
> result: FAIL

That would mean the child process exited with 0, yet it didn’t write
anything to stdout.  Not sure how this can happen.

> test-name: utmpx-entries
> location: /data/paul/sourceCode/guix/tests/syscalls.scm:444
> source:
> + (test-assert
> +   "utmpx-entries"
> +   (match (utmpx-entries)
> +          (((? utmpx? entries) ...)
> +           (every (lambda (entry)
> +                    (match (utmpx-user entry)
> +                           ((? string?) (> (utmpx-pid entry) 0))
> +                           (#f #t)))
> +                  entries))))
> actual-value: #f
> result: FAIL

This one is unrelated.

Could you try this:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guile
GNU Guile 2.0.13
Copyright (C) 1995-2016 Free Software Foundation, Inc.

Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.

Enter `,help' for help.
scheme@(guile-user)> ,use(guix build syscalls)
scheme@(guile-user)> (utmpx-entries)
$1 = (#<<utmpx-entry> type: 6 …> …)
scheme@(guile-user)> ,use(srfi srfi-1)
scheme@(guile-user)> (find (lambda (entry) (and (string? (utmpx-user entry))(zero? (utmpx-pid entry)))) (utmpx-entries))
$2 = #f
--8<---------------cut here---------------end--------------->8---

Most likely the assumption made in this test doesn’t hold on your system
for some reason.

Thank you,
Ludo’.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#25476: pivot-root test fails on Ubuntu 16.04
  2017-02-01 13:08         ` Ludovic Courtès
@ 2017-02-01 15:33           ` Paul Garlick
  2017-02-11 21:29             ` Ludovic Courtès
  0 siblings, 1 reply; 13+ messages in thread
From: Paul Garlick @ 2017-02-01 15:33 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 25476

[-- Attachment #1: Type: text/plain, Size: 2228 bytes --]

Hi Ludo,

Here is the output from the guile session:

paul$ ./pre-inst-env guile
GNU Guile 2.0.13
Copyright (C) 1995-2016 Free Software Foundation, Inc.

Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.

Enter `,help' for help.
scheme@(guile-user)> ,use(guix build syscalls)
scheme@(guile-user)> (utmpx-entries)
$1 = (#<<utmpx-entry> type: 2 pid: 0 line: "~" id: (126 126 0 0) user:
"reboot" host: "4.4.0-59-generic" termination: 0 exit: 0 session: 0
time: #<time type: time-utc nanosecond: 627310000 second: 1485945677>
address: (0 0 0 0)> #<<utmpx-entry> type: 1 pid: 53 line: "~" id: (126
126 0 0) user: "runlevel" host: "4.4.0-59-generic" termination: 0 exit:
0 session: 0 time: #<time type: time-utc nanosecond: 441012000 second:
1485945740> address: (0 0 0 0)> #<<utmpx-entry> type: 6 pid: 1589 line:
"tty1" id: (116 116 121 49) user: "LOGIN" host: #f termination: 0 exit:
0 session: 1589 time: #<time type: time-utc nanosecond: 643444000
second: 1485945740> address: (0 0 0 0)> #<<utmpx-entry> type: 7 pid:
1908 line: "tty7" id: (58 48 0 0) user: "paul" host: ":0" termination:
0 exit: 0 session: 0 time: #<time type: time-utc nanosecond: 705038000
second: 1485945754> address: (0 0 0 0)> #<<utmpx-entry> type: 7 pid:
2486 line: "pts/11" id: (47 49 49 0) user: "paul" host: ":0.0"
termination: 0 exit: 0 session: 0 time: #<time type: time-utc
nanosecond: 115640000 second: 1485945809> address: (0 0 0 0)> #<<utmpx-
entry> type: 7 pid: 2486 line: "pts/2" id: (47 50 0 0) user: "paul"
host: ":0.0" termination: 0 exit: 0 session: 0 time: #<time type: time-
utc nanosecond: 916844000 second: 1485947271> address: (0 0 0 0)>)
scheme@(guile-user)> ,use(srfi srfi-1)
scheme@(guile-user)> (find (lambda (entry) (and (string? (utmpx-user 
entry))(zero? (utmpx-pid entry)))) (utmpx-entries))
$2 = #<<utmpx-entry> type: 2 pid: 0 line: "~" id: (126 126 0 0) user:
"reboot" host: "4.4.0-59-generic" termination: 0 exit: 0 session: 0
time: #<time type: time-utc nanosecond: 627310000 second: 1485945677>
address: (0 0 0 0)>

The $2 ##SELECTION_END##output is not false in this case.

Paul.

[-- Attachment #2: Type: text/html, Size: 2655 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#25476: pivot-root test fails on Ubuntu 16.04
  2017-02-01 15:33           ` Paul Garlick
@ 2017-02-11 21:29             ` Ludovic Courtès
  2017-02-13 22:16               ` Paul Garlick
  0 siblings, 1 reply; 13+ messages in thread
From: Ludovic Courtès @ 2017-02-11 21:29 UTC (permalink / raw)
  To: Paul Garlick; +Cc: 25476

Paul Garlick <pgarlick@tourbillion-technology.com> skribis:

> scheme@(guile-user)> (find (lambda (entry) (and (string? (utmpx-user 
> entry))(zero? (utmpx-pid entry)))) (utmpx-entries))
> $2 = #<<utmpx-entry> type: 2 pid: 0 line: "~" id: (126 126 0 0) user: "reboot" host: "4.4.0-59-generic" termination: 0 exit: 0 session: 0 time: #<time type: time-utc nanosecond: 627310000 second:
> 1485945677> address: (0 0 0 0)>
>
> The $2 output is not false in this case.

I think a1a8b7f2e20513a3ad968e74e7ec52546404e3c6 fixes this.

Thanks!

Ludo’.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#25476: pivot-root test fails on Ubuntu 16.04
  2017-02-11 21:29             ` Ludovic Courtès
@ 2017-02-13 22:16               ` Paul Garlick
  2017-02-13 22:31                 ` Ludovic Courtès
  0 siblings, 1 reply; 13+ messages in thread
From: Paul Garlick @ 2017-02-13 22:16 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 25476

[-- Attachment #1: Type: text/plain, Size: 330 bytes --]

> I think a1a8b7f2e20513a3ad968e74e7ec52546404e3c6 fixes this.
> 
> 
Yes, confirmed.  The utmpx-entries test now passes.
The pivot-root test still fails.  One thought; I made a change to the
guix-daemon.service file, at about the same time as updating Ubuntu to
16.04, setting TMPDIR to /data/tmp.  Could that be related?
Paul.

[-- Attachment #2: Type: text/html, Size: 500 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#25476: pivot-root test fails on Ubuntu 16.04
  2017-02-13 22:16               ` Paul Garlick
@ 2017-02-13 22:31                 ` Ludovic Courtès
  0 siblings, 0 replies; 13+ messages in thread
From: Ludovic Courtès @ 2017-02-13 22:31 UTC (permalink / raw)
  To: Paul Garlick; +Cc: 25476

Hi Paul,

Paul Garlick <pgarlick@tourbillion-technology.com> skribis:

>> I think a1a8b7f2e20513a3ad968e74e7ec52546404e3c6 fixes this.
>> 
>> 
> Yes, confirmed.  The utmpx-entries test now passes.

Great, thanks for checking.

> The pivot-root test still fails.  One thought; I made a change to the
> guix-daemon.service file, at about the same time as updating Ubuntu to
> 16.04, setting TMPDIR to /data/tmp.  Could that be related?

I don’t think so: ‘make check’ spawns its own daemon, which uses a store
at $builddir/test-tmp.  And this particular test does not rely on the
daemon.

Ludo’.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#25476: Hunting: pivot-root test fails on foreign distro
  2017-01-18 17:22 bug#25476: pivot-root test fails on Ubuntu 16.04 Paul Garlick
  2017-01-19 16:23 ` Ludovic Courtès
@ 2020-02-11  0:16 ` zimoun
  2020-02-11 11:34   ` Ludovic Courtès
  1 sibling, 1 reply; 13+ messages in thread
From: zimoun @ 2020-02-11  0:16 UTC (permalink / raw)
  To: 25476; +Cc: hydromasha, pgarlick

Dear,

This bug seems fixed by  a1a8b7f2e20513a3ad968e74e7ec52546404e3c6 as
explained here [1].

Any objection to close it?
Or new information blocking the closing?

[1] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=25476#29


Thank you in advance.

All the best,
simon

^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#25476: Hunting: pivot-root test fails on foreign distro
  2020-02-11  0:16 ` bug#25476: Hunting: pivot-root test fails on foreign distro zimoun
@ 2020-02-11 11:34   ` Ludovic Courtès
  2020-02-11 13:39     ` zimoun
  0 siblings, 1 reply; 13+ messages in thread
From: Ludovic Courtès @ 2020-02-11 11:34 UTC (permalink / raw)
  To: zimoun; +Cc: 25476-done, pgarlick, hydromasha

Hi,

zimoun <zimon.toutoune@gmail.com> skribis:

> This bug seems fixed by  a1a8b7f2e20513a3ad968e74e7ec52546404e3c6 as
> explained here [1].

Well this commit fixes one of the issues discussed here (the utmpx test
failure), but not the ‘pivot-root’ test failure itself.

However, it seems that the ‘pivot-root’ test is now skipped in practice
on most systems so…

Turns out I found how to make it work again in commit
1deca767be1b84b96633e317f3fcdd5165f95df3.  Let me know if anything’s
amiss.

Finally closing!  :-)

Ludo’.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#25476: Hunting: pivot-root test fails on foreign distro
  2020-02-11 11:34   ` Ludovic Courtès
@ 2020-02-11 13:39     ` zimoun
  0 siblings, 0 replies; 13+ messages in thread
From: zimoun @ 2020-02-11 13:39 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 25476-done

Hi Ludo,

On Tue, 11 Feb 2020 at 12:35, Ludovic Courtès <ludo@gnu.org> wrote:
> zimoun <zimon.toutoune@gmail.com> skribis:
>
> > This bug seems fixed by  a1a8b7f2e20513a3ad968e74e7ec52546404e3c6 as
> > explained here [1].
>
> Well this commit fixes one of the issues discussed here (the utmpx test
> failure), but not the ‘pivot-root’ test failure itself.

D'oh!
I missed this part.


> However, it seems that the ‘pivot-root’ test is now skipped in practice
> on most systems so…

Ok so let if the bug show up again. :-)


> Turns out I found how to make it work again in commit
> 1deca767be1b84b96633e317f3fcdd5165f95df3.  Let me know if anything’s
> amiss.

Cool!

Thank you for the fix.


Cheers,
simon

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2020-02-11 13:41 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-01-18 17:22 bug#25476: pivot-root test fails on Ubuntu 16.04 Paul Garlick
2017-01-19 16:23 ` Ludovic Courtès
2017-01-20 23:20   ` Paul Garlick
2017-01-30 22:32     ` Ludovic Courtès
2017-01-31 16:48       ` Paul Garlick
2017-02-01 13:08         ` Ludovic Courtès
2017-02-01 15:33           ` Paul Garlick
2017-02-11 21:29             ` Ludovic Courtès
2017-02-13 22:16               ` Paul Garlick
2017-02-13 22:31                 ` Ludovic Courtès
2020-02-11  0:16 ` bug#25476: Hunting: pivot-root test fails on foreign distro zimoun
2020-02-11 11:34   ` Ludovic Courtès
2020-02-11 13:39     ` zimoun

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.