'call-with-container' fails to mount /dev/mqueue with EBUSY (on Ubuntu)

  • Open
  • quality assurance status badge
Details
4 participants
  • Ben Woodcroft
  • Konrad Hinsen
  • Leo Famulari
  • Ludovic Courtès
Owner
unassigned
Submitted by
Konrad Hinsen
Severity
normal

Debbugs page

K
K
Konrad Hinsen wrote on 19 May 2016 08:17
Test failure on "make check" from a fresh git checkout (commit 9684e30b9b597b93ae9c797ba8f3b40eff893ebe)
(address . bug-guix@gnu.org)
573DD91E.5080702@fastmail.net
SKIP: tests/base32.scm
PASS: tests/base64.scm
PASS: tests/cpio.scm
PASS: tests/hash.scm
PASS: tests/pk-crypto.scm
PASS: tests/pki.scm
PASS: tests/sets.scm
PASS: tests/gnu-maintenance.scm
PASS: tests/substitute.scm
PASS: tests/builders.scm
PASS: tests/derivations.scm
PASS: tests/grafts.scm
PASS: tests/ui.scm
PASS: tests/records.scm
PASS: tests/upstream.scm
PASS: tests/combinators.scm
PASS: tests/utils.scm
PASS: tests/build-utils.scm
PASS: tests/packages.scm
SKIP: tests/snix.scm
PASS: tests/hackage.scm
PASS: tests/cran.scm
PASS: tests/elpa.scm
PASS: tests/store.scm
PASS: tests/monads.scm
PASS: tests/gexp.scm
PASS: tests/nar.scm
PASS: tests/union.scm
PASS: tests/profiles.scm
PASS: tests/syscalls.scm
SKIP: tests/gremlin.scm
PASS: tests/lint.scm
PASS: tests/publish.scm
PASS: tests/scripts.scm
PASS: tests/size.scm
PASS: tests/graph.scm
PASS: tests/challenge.scm
PASS: tests/cve.scm
PASS: tests/file-systems.scm
PASS: tests/system.scm
PASS: tests/services.scm
PASS: tests/scripts-build.scm
PASS: tests/containers.scm
PASS: tests/import-utils.scm
PASS: tests/pypi.scm
PASS: tests/cpan.scm
PASS: tests/gem.scm
PASS: tests/guix-build.sh
PASS: tests/guix-download.sh
PASS: tests/guix-hash.sh
PASS: tests/guix-package.sh
PASS: tests/guix-package-net.sh
PASS: tests/guix-system.sh
PASS: tests/guix-archive.sh
PASS: tests/guix-authenticate.sh
PASS: tests/guix-environment.sh
FAIL: tests/guix-environment-container.sh
PASS: tests/guix-graph.sh
PASS: tests/guix-lint.sh
PASS: tests/guix-register.sh
PASS: tests/guix-gc.sh
PASS: tests/guix-daemon.sh
============================================================================
Testsuite summary for GNU Guix 0.10.0
============================================================================
# TOTAL: 565
# PASS: 561
# SKIP: 3
# XFAIL: 0
# FAIL: 1
# XPASS: 0
# ERROR: 0
============================================================================
See ./test-suite.log
Please report to bug-guix@gnu.org
============================================================================
Attachment: test-suite.log
L
L
Ludovic Courtès wrote on 20 May 2016 05:12
(name . Konrad Hinsen)(address . konrad.hinsen@fastmail.net)
87lh35exmv.fsf@gnu.org
Hi Konrad,

Konrad Hinsen <konrad.hinsen@fastmail.net> skribis:

Toggle quote (20 lines)
> FAIL: tests/guix-environment-container
> ======================================
>
> + set -e
> + guix environment --version
> guix environment (GNU Guix) 0.10.0
> Copyright (C) 2016 the Guix authors
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.
> + guile -c '((@@ (guix scripts environment) assert-container-features))'
> + tmpdir=t-guix-environment-20990
> + trap 'rm -r "$tmpdir"' EXIT
> + mkdir t-guix-environment-20990
> + guix environment --container --ad-hoc --bootstrap guile-bootstrap -- guile -c '(exit 42)'
> accepted connection from pid 21005, user hinsen
> + test 1 = 42
> + rm -r t-guix-environment-20990
> FAIL tests/guix-environment-container.sh (exit status: 1)

Could you show the output of “uname -srvo” on this machine? What
distribution does it run?

Also, from the top-level build directory, could you run:

./pre-inst-env strace -f -s 234 -o log \
guix environment --container --ad-hoc --bootstrap guile-bootstrap \
-- guile -c '(exit 42)'

and send the ‘log’ file (gzipped)?

Thanks for your report!

Ludo’.
K
K
Konrad Hinsen wrote on 20 May 2016 11:42
(name . Ludovic Courtès)(address . ludo@gnu.org)
573F5A7D.4020008@fastmail.net
Hi Ludovic,

> Could you show the output of “uname -srvo” on this machine? What
Toggle quote (2 lines)
> distribution does it run?

$ uname -srvo
Linux 4.4.0-22-generic #40-Ubuntu SMP Thu May 12 22:03:46 UTC 2016 GNU/Linux

The base system is Ubuntu 16.04, to which I added the Guix binary
distribution 0.10.

Toggle quote (6 lines)
> Also, from the top-level build directory, could you run:
>
> ./pre-inst-env strace -f -s 234 -o log \
> guix environment --container --ad-hoc --bootstrap guile-bootstrap \
> -- guile -c '(exit 42)'

$ guix environment guix

[dev] $ ./pre-inst-env strace -f -s 234 -o log guix environment
--container --ad-hoc --bootstrap guile-bootstrap -- guile -c '(exit 42)'
guix environment: error: failed to connect to
`/usr/local/var/guix/daemon-socket/socket': No such file or directory

The log file is attached, but I somehow suspect that the above error
message already suggests what's going on - but not to me!

Konrad.
Attachment: log.gz
L
L
Leo Famulari wrote on 20 May 2016 15:48
(name . Konrad Hinsen)(address . konrad.hinsen@fastmail.net)
20160520224810.GA4494@jasmine
On Fri, May 20, 2016 at 08:42:05PM +0200, Konrad Hinsen wrote:
Toggle quote (3 lines)
> $ uname -srvo
> Linux 4.4.0-22-generic #40-Ubuntu SMP Thu May 12 22:03:46 UTC 2016 GNU/Linux

I'd guess that Ubuntu, like Debian, by default disables the unprivileged
creation of containers.

What is the value of '/proc/sys/kernel/unprivileged_userns_clone'?

Toggle quote (5 lines)
> [dev] $ ./pre-inst-env strace -f -s 234 -o log guix environment --container
> --ad-hoc --bootstrap guile-bootstrap -- guile -c '(exit 42)'
> guix environment: error: failed to connect to
> `/usr/local/var/guix/daemon-socket/socket': No such file or directory

I think this is unrelated.

If you followed the instructions in the manual while installing Guix
[0], then your daemon's socket should be in /var/guix. When building
Guix from the Git checkout, did you set the value of localstatedir like
this when configuring?

$ ./configure --localstatedir=/var

If not, it defaults to '/usr/local'. If that's what happened, can you
reconfigure as shown above, and try Ludo's command again?

[0]
K
K
Konrad Hinsen wrote on 21 May 2016 00:21
(name . Leo Famulari)(address . leo@famulari.name)
57400C83.8010208@fastmail.net
Hi Leo,

> I'd guess that Ubuntu, like Debian, by default disables the unprivileged
Toggle quote (4 lines)
> creation of containers.
>
> What is the value of '/proc/sys/kernel/unprivileged_userns_clone'?

$ cat /proc/sys/kernel/unprivileged_userns_clone
1

Toggle quote (7 lines)
> If you followed the instructions in the manual while installing Guix
> [0], then your daemon's socket should be in /var/guix. When building
> Guix from the Git checkout, did you set the value of localstatedir like
> this when configuring?
>
> $ ./configure --localstatedir=/var

No. I just followed the instructions under "contributing" blindly.

Toggle quote (3 lines)
> If not, it defaults to '/usr/local'. If that's what happened, can you
> reconfigure as shown above, and try Ludo's command again?

I did:

$ ./configure --localstatedir=/var
$ make check

The environment test case still fails. Then again

[dev]$ ./pre-inst-env strace -f -s 234 -o log guix environment
--container --ad-hoc --bootstrap guile-bootstrap -- guile -c '(exit 42)'
substitute: warning: failed to install locale: Invalid argument
substitute: updating list of substitutes from
'https://mirror.hydra.gnu.org'... substitute: updating list of
substitutes from 'https://mirror.hydra.gnu.org'... substitute: updating
list of substitutes from 'https://mirror.hydra.gnu.org'... substitute:
updating list of substitutes from 'https://mirror.hydra.gnu.org'... 100.0%
substitute: updating list of substitutes from 'https://hydra.gnu.org'...
100.0%
The following derivations will be built:
/gnu/store/n1mv18v7dvjx3zz6xwryqw6mvfjj68ls-profile.drv
/gnu/store/90b3v64bp7rjpsd841bxflh7a2h544f9-module-import.drv
/gnu/store/sc9w2yza3af4p0vjgkkwf7jmdh1m05n6-module-import-compiled.drv
The following file will be downloaded:
/gnu/store/aiz8db2gni401wc9fgidmcggxyb1czis-guile-bootstrap-2.0
warning: failed to install locale: Invalid argument

Found valid signature for
/gnu/store/aiz8db2gni401wc9fgidmcggxyb1czis-guile-bootstrap-2.0
From
Downloading aiz8db...-guile-bootstrap-2.0 (12.1MiB installed)...
1.1MiB/s 00:03 | 3.4MiB transferred


No error message this time. The log is attached.

Konrad.
Attachment: log.gz
B
B
Ben Woodcroft wrote on 21 May 2016 03:37
57403A7D.3090002@uq.edu.au
On 21/05/16 17:21, Konrad Hinsen wrote:
Toggle quote (2 lines)
> No error message this time. The log is attached.

From teh log:
> 10526 mkdir("/tmp/guix-directory.2EiFxS/dev/mqueue", 0775) = 0
> 10526 mount("mqueue", "/tmp/guix-directory.2EiFxS//dev/mqueue",
"mqueue", MS_NOSUID|MS_NODEV|MS_NOEXEC, NULL) = -1 EBUSY (Device or
resource busy)

This then might be the same issue as discussed previously

I managed to reproduce this using a binary download too on a different
machine, I suspect that there is something Ubuntu/Xenial-specific at play.
ben
L
L
Leo Famulari wrote on 21 May 2016 08:19
(name . Ben Woodcroft)(address . b.woodcroft@uq.edu.au)
20160521151910.GA25589@jasmine
On Sat, May 21, 2016 at 08:37:49PM +1000, Ben Woodcroft wrote:
Toggle quote (11 lines)
> On 21/05/16 17:21, Konrad Hinsen wrote:
> > No error message this time. The log is attached.
>
> From teh log:
> > 10526 mkdir("/tmp/guix-directory.2EiFxS/dev/mqueue", 0775) = 0
> > 10526 mount("mqueue", "/tmp/guix-directory.2EiFxS//dev/mqueue", "mqueue",
> MS_NOSUID|MS_NODEV|MS_NOEXEC, NULL) = -1 EBUSY (Device or resource busy)
>
> This then might be the same issue as discussed previously
> http://lists.gnu.org/archive/html/help-guix/2016-05/msg00006.html

A quick scan through the mqueue man pages suggests mq_notify(3):

"mq_notify - register for notification when a message is available

[...]

EBUSY Another process has already registered to receive
notification for this message queue."
L
L
Ludovic Courtès wrote on 21 May 2016 11:25
retitle
(address . request@debbugs.gnu.org)
87zirjtgio.fsf@gnu.org
retitle 23582 'call-with-container' fails to mount /dev/mqueue with EBUSY (on Ubuntu)
thanks
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 23582@patchwise.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 23582
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch