Docker Compose: Error While Loading Shared Libraries: Libz.So.1: Failed to Map Segment from Shared Object: Operation Not Permitted

docker compose: Error while loading shared libraries: libz.so.1: failed to map segment from shared object: Operation not permitted

Got it solved by re-mounting the /tmp to give the volume permission to execute (it was accessible with read-only). So this solved:

sudo mount /tmp -o remount,exec

conda.exe: error while loading shared libraries: libz.so.1

The problem may be your /tmp is set to noexec in /etc/fstab. Verify with grep tmp /etc/fstab.

Run the installer with TMPDIR set to a directory you have write permissions to, on a file system with executable permission. i.e.:

mkdir /users/$USER/tmpconda
TMPDIR=/users/$USER/tmpconda bash Miniconda2-latest-Linux-x86_64.sh

Solution was found at Anaconda Issues 11587

A quick test of executability on a file system:

$ touch foo && chmod +x foo && ./foo
-bash: ./foo: Permission denied

noexec will cause "Permission denied" even if x is set on the file.

Docker and Mysql: libz.so.1: cannot open shared object file: Permission denied

So I solved the issue by using the devicemapper storage backend, as suggested by @jpetazzo.

Steps I carried out:

  1. Stopped the docker deamon
  2. Started the docker deamon with command docker -d -s="devicemapper"
  3. Ran the docker run on the Dockerfile command again. And it worked without any problems.

What are possible causes of failed to map segment from shared object: operation not permitted , and how to debug?

The issue was with how the executables were compiled. They needed to be compiled with a cross compiler that properly supported newer arm devices. The compiler I used generated executables that would only work on a subset of arm devices. The issue was not with the different versions of android.

Varnish fails to start with : failed to map segment from shared object: Operation not permitted

As part of varnish's startup, it generates a loadable library of the configuration of it's behaviour. This gets compiled and loaded at run-time by varnishd. This is the thing that is being complained about with the error:

Compiled VCL program failed to load:
./vcl.1P9zoqAU.so: failed to map segment from shared object: Operation not permitted
VCL compilation failed

i.e. it's a dlopen call that's failing. The newer version has a slightly more obvious message where it says:

dlopen(vcl_boot/vgc.so) = failed to map segment from shared object: Operation not permitted

In this case, the directory that the .so is placed in resides on a filesystem that is mounted with the noexec option, which causes the dlopen to fail.

Addressing this requires remounting this file system with the exec option.



Related Topics



Leave a reply



Submit