Patchwork Tests fail: osutil.so: failed to map segment from shared object: Operation not permitted

login
register
mail settings
Submitter anatoly techtonik
Date June 18, 2014, 9:29 a.m.
Message ID <CAPkN8xJx_JW2gLZbSLBiKgvj3PkFfpkfwfSPkYgD=5+W1KUBCQ@mail.gmail.com>
Download mbox | patch
Permalink /patch/5014/
State Rejected
Headers show

Comments

anatoly techtonik - June 18, 2014, 9:29 a.m.
# ./run-tests.py test-tag.t
Greg Ward - June 19, 2014, 1:42 a.m.
On 18 June 2014, anatoly techtonik said:
> # ./run-tests.py test-tag.t
> 
> --- /root/delme/hg/tests/test-tag.t
> +++ /root/delme/hg/tests/test-tag.t.err
> @@ -1,405 +1,24 @@
>    $ hg init test
> +  Traceback (most recent call last):
> +    File "/usr/bin/hg", line 36, in <module>
> +      mercurial.util.setbinary(fp)
> +    File
> "/tmp/hgtests.XBeRv0/install/lib/python/mercurial/demandimport.py", line
> 106, in __getattribute__
> +      self._load()
> +    File
> "/tmp/hgtests.XBeRv0/install/lib/python/mercurial/demandimport.py", line
> 78, in _load
> +      mod = _hgextimport(_import, head, globals, locals, None, level)
> +    File
> "/tmp/hgtests.XBeRv0/install/lib/python/mercurial/demandimport.py", line
> 47, in _hgextimport
> +      return importfunc(name, globals, *args)
> +    File "/tmp/hgtests.XBeRv0/install/lib/python/mercurial/util.py", line
> 66, in <module>
> +      statfiles = getattr(osutil, 'statfiles', platform.statfiles)
> +    File
> "/tmp/hgtests.XBeRv0/install/lib/python/mercurial/demandimport.py", line
> 106, in __getattribute__
> +      self._load()
> +    File
> "/tmp/hgtests.XBeRv0/install/lib/python/mercurial/demandimport.py", line
> 78, in _load
> +      mod = _hgextimport(_import, head, globals, locals, None, level)
> +    File
> "/tmp/hgtests.XBeRv0/install/lib/python/mercurial/demandimport.py", line
> 47, in _hgextimport
> +      return importfunc(name, globals, *args)
> +  ImportError: /tmp/hgtests.XBeRv0/install/lib/python/mercurial/osutil.so:
> failed to map segment from shared object: Operation not permitted
> +  [1]

Your runtime environment is badly broken. Not sure what more Mercurial
can or should do in the face of such a fundamental problem.

       Greg
anatoly techtonik - June 19, 2014, 5:32 a.m.
On Thu, Jun 19, 2014 at 4:42 AM, Greg Ward <greg@gerg.ca> wrote:

> On 18 June 2014, anatoly techtonik said:
> > # ./run-tests.py test-tag.t
> >
> > --- /root/delme/hg/tests/test-tag.t
> > +++ /root/delme/hg/tests/test-tag.t.err
> > @@ -1,405 +1,24 @@
> >    $ hg init test
> > +  Traceback (most recent call last):
> > +    File "/usr/bin/hg", line 36, in <module>
> > +      mercurial.util.setbinary(fp)
> > +    File
> > "/tmp/hgtests.XBeRv0/install/lib/python/mercurial/demandimport.py", line
> > 106, in __getattribute__
> > +      self._load()
> > +    File
> > "/tmp/hgtests.XBeRv0/install/lib/python/mercurial/demandimport.py", line
> > 78, in _load
> > +      mod = _hgextimport(_import, head, globals, locals, None, level)
> > +    File
> > "/tmp/hgtests.XBeRv0/install/lib/python/mercurial/demandimport.py", line
> > 47, in _hgextimport
> > +      return importfunc(name, globals, *args)
> > +    File "/tmp/hgtests.XBeRv0/install/lib/python/mercurial/util.py",
> line
> > 66, in <module>
> > +      statfiles = getattr(osutil, 'statfiles', platform.statfiles)
> > +    File
> > "/tmp/hgtests.XBeRv0/install/lib/python/mercurial/demandimport.py", line
> > 106, in __getattribute__
> > +      self._load()
> > +    File
> > "/tmp/hgtests.XBeRv0/install/lib/python/mercurial/demandimport.py", line
> > 78, in _load
> > +      mod = _hgextimport(_import, head, globals, locals, None, level)
> > +    File
> > "/tmp/hgtests.XBeRv0/install/lib/python/mercurial/demandimport.py", line
> > 47, in _hgextimport
> > +      return importfunc(name, globals, *args)
> > +  ImportError:
> /tmp/hgtests.XBeRv0/install/lib/python/mercurial/osutil.so:
> > failed to map segment from shared object: Operation not permitted
> > +  [1]
>
> Your runtime environment is badly broken. Not sure what more Mercurial
> can or should do in the face of such a fundamental problem.


What exactly is broken? Then it is broken for all services that run on
drone.io

Could it be that in some Linux contexts execution from /tmp is forbidden.
SELinux or something?
Julien Cristau - June 19, 2014, 7:31 a.m.
On Thu, Jun 19, 2014 at 08:32:18 +0300, anatoly techtonik wrote:

> What exactly is broken? Then it is broken for all services that run on
> drone.io
> 
> Could it be that in some Linux contexts execution from /tmp is forbidden.
> SELinux or something?

or your /tmp is mounted noexec.

Cheers,
Julien
anatoly techtonik - June 19, 2014, 9:51 a.m.
On Thu, Jun 19, 2014 at 10:31 AM, Julien Cristau <julien.cristau@logilab.fr>
wrote:

> On Thu, Jun 19, 2014 at 08:32:18 +0300, anatoly techtonik wrote:
>
> > What exactly is broken? Then it is broken for all services that run on
> > drone.io
> >
> > Could it be that in some Linux contexts execution from /tmp is forbidden.
> > SELinux or something?
>
> or your /tmp is mounted noexec.
>

How to check? `mount` output from drone doesn't show anything.

$ mount
overlayfs on / type overlayfs (rw)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
devpts on /dev/lxc/console type devpts
(rw,noexec,nosuid,relatime,gid=5,mode=620,ptmxmode=000)
devpts on /dev/lxc/tty1 type devpts
(rw,noexec,nosuid,relatime,gid=5,mode=620,ptmxmode=000)
devpts on /dev/lxc/tty2 type devpts
(rw,noexec,nosuid,relatime,gid=5,mode=620,ptmxmode=000)
devpts on /dev/lxc/tty3 type devpts
(rw,noexec,nosuid,relatime,gid=5,mode=620,ptmxmode=000)
devpts on /dev/lxc/tty4 type devpts
(rw,noexec,nosuid,relatime,gid=5,mode=620,ptmxmode=000)
devpts on /dev/ptmx type devpts (rw,relatime,mode=600,ptmxmode=666)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)

https://drone.io/bitbucket.org/techtonik/hg/4
Simon King - June 19, 2014, 10:15 a.m.
On Thu, Jun 19, 2014 at 10:51 AM, anatoly techtonik <techtonik@gmail.com> wrote:
> On Thu, Jun 19, 2014 at 10:31 AM, Julien Cristau <julien.cristau@logilab.fr>
> wrote:
>>
>> On Thu, Jun 19, 2014 at 08:32:18 +0300, anatoly techtonik wrote:
>>
>> > What exactly is broken? Then it is broken for all services that run on
>> > drone.io
>> >
>> > Could it be that in some Linux contexts execution from /tmp is
>> > forbidden.
>> > SELinux or something?
>>
>> or your /tmp is mounted noexec.
>
>
> How to check? `mount` output from drone doesn't show anything.
>
> $ mount
> overlayfs on / type overlayfs (rw)
> proc on /proc type proc (rw,noexec,nosuid,nodev)
> sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
> devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
> devpts on /dev/lxc/console type devpts
> (rw,noexec,nosuid,relatime,gid=5,mode=620,ptmxmode=000)
> devpts on /dev/lxc/tty1 type devpts
> (rw,noexec,nosuid,relatime,gid=5,mode=620,ptmxmode=000)
> devpts on /dev/lxc/tty2 type devpts
> (rw,noexec,nosuid,relatime,gid=5,mode=620,ptmxmode=000)
> devpts on /dev/lxc/tty3 type devpts
> (rw,noexec,nosuid,relatime,gid=5,mode=620,ptmxmode=000)
> devpts on /dev/lxc/tty4 type devpts
> (rw,noexec,nosuid,relatime,gid=5,mode=620,ptmxmode=000)
> devpts on /dev/ptmx type devpts (rw,relatime,mode=600,ptmxmode=666)
> none on /sys/fs/fuse/connections type fusectl (rw)
> none on /sys/kernel/debug type debugfs (rw)
> none on /sys/kernel/security type securityfs (rw)
> none on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
> none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
> none on /run/shm type tmpfs (rw,nosuid,nodev)
>
> https://drone.io/bitbucket.org/techtonik/hg/4
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel@selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
>

Perhaps /tmp is some sort of symlink into the /run tree, which appears
to be noexec.

You could try using the --tmpdir parameter to run-tests.py to put the
files somewhere else (but I've no idea where that should be.
Presumably the area where the code is checked out to would allow
executables, so you could try somewhere in there)

Simon
anatoly techtonik - June 19, 2014, 10:57 p.m.
On Thu, Jun 19, 2014 at 1:15 PM, Simon King <simon@simonking.org.uk> wrote:

> On Thu, Jun 19, 2014 at 10:51 AM, anatoly techtonik <techtonik@gmail.com>
> wrote:
> > On Thu, Jun 19, 2014 at 10:31 AM, Julien Cristau <
> julien.cristau@logilab.fr>
> > wrote:
> >>
> >> On Thu, Jun 19, 2014 at 08:32:18 +0300, anatoly techtonik wrote:
> >>
> >> > What exactly is broken? Then it is broken for all services that run on
> >> > drone.io
> >> >
> >> > Could it be that in some Linux contexts execution from /tmp is
> >> > forbidden.
> >> > SELinux or something?
> >>
> >> or your /tmp is mounted noexec.
> >
> >
> > How to check? `mount` output from drone doesn't show anything.
> >
> > $ mount
> > overlayfs on / type overlayfs (rw)
> > proc on /proc type proc (rw,noexec,nosuid,nodev)
> > sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
> > devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
> > devpts on /dev/lxc/console type devpts
> > (rw,noexec,nosuid,relatime,gid=5,mode=620,ptmxmode=000)
> > devpts on /dev/lxc/tty1 type devpts
> > (rw,noexec,nosuid,relatime,gid=5,mode=620,ptmxmode=000)
> > devpts on /dev/lxc/tty2 type devpts
> > (rw,noexec,nosuid,relatime,gid=5,mode=620,ptmxmode=000)
> > devpts on /dev/lxc/tty3 type devpts
> > (rw,noexec,nosuid,relatime,gid=5,mode=620,ptmxmode=000)
> > devpts on /dev/lxc/tty4 type devpts
> > (rw,noexec,nosuid,relatime,gid=5,mode=620,ptmxmode=000)
> > devpts on /dev/ptmx type devpts (rw,relatime,mode=600,ptmxmode=666)
> > none on /sys/fs/fuse/connections type fusectl (rw)
> > none on /sys/kernel/debug type debugfs (rw)
> > none on /sys/kernel/security type securityfs (rw)
> > none on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
> > none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
> > none on /run/shm type tmpfs (rw,nosuid,nodev)
> >
> > https://drone.io/bitbucket.org/techtonik/hg/4
> >
> > _______________________________________________
> > Mercurial-devel mailing list
> > Mercurial-devel@selenic.com
> > http://selenic.com/mailman/listinfo/mercurial-devel
> >
>
> Perhaps /tmp is some sort of symlink into the /run tree, which appears
> to be noexec.
>

How to check? `ls -la /` doesn't show any symlinks.
https://drone.io/bitbucket.org/techtonik/hg/7


> You could try using the --tmpdir parameter to run-tests.py to put the
> files somewhere else (but I've no idea where that should be.
> Presumably the area where the code is checked out to would allow
> executables, so you could try somewhere in there)
>

Doesn't help. See output above. Directory is created ok.

Patch

--- /root/delme/hg/tests/test-tag.t
+++ /root/delme/hg/tests/test-tag.t.err
@@ -1,405 +1,24 @@ 
   $ hg init test
+  Traceback (most recent call last):
+    File "/usr/bin/hg", line 36, in <module>
+      mercurial.util.setbinary(fp)
+    File
"/tmp/hgtests.XBeRv0/install/lib/python/mercurial/demandimport.py", line
106, in __getattribute__
+      self._load()
+    File
"/tmp/hgtests.XBeRv0/install/lib/python/mercurial/demandimport.py", line
78, in _load
+      mod = _hgextimport(_import, head, globals, locals, None, level)
+    File
"/tmp/hgtests.XBeRv0/install/lib/python/mercurial/demandimport.py", line
47, in _hgextimport
+      return importfunc(name, globals, *args)
+    File "/tmp/hgtests.XBeRv0/install/lib/python/mercurial/util.py", line
66, in <module>
+      statfiles = getattr(osutil, 'statfiles', platform.statfiles)
+    File
"/tmp/hgtests.XBeRv0/install/lib/python/mercurial/demandimport.py", line
106, in __getattribute__
+      self._load()
+    File
"/tmp/hgtests.XBeRv0/install/lib/python/mercurial/demandimport.py", line
78, in _load
+      mod = _hgextimport(_import, head, globals, locals, None, level)
+    File
"/tmp/hgtests.XBeRv0/install/lib/python/mercurial/demandimport.py", line
47, in _hgextimport
+      return importfunc(name, globals, *args)
+  ImportError: /tmp/hgtests.XBeRv0/install/lib/python/mercurial/osutil.so:
failed to map segment from shared object: Operation not permitted
+  [1]
   $ cd test
+  $TESTTMP.sh: line 4: cd: test: No such file or directory

   $ echo a > a
-  $ hg add a
-  $ hg commit -m "test"
-  $ hg history
-  changeset:   0:acb14030fe0a
-  tag:         tip
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     test
...

-- 
anatoly t.