Skip to content

Linux systemd conflict - help requested #4125

Open
@RichardHaselgrove

Description

@RichardHaselgrove

We recently resolved - #4105 - a problem where a systemd configuration entry (PrivateTmp=true) was found to be the culprit in making idle detection fail.

I'm now encountering a different problem, which appears to require that we set PrivateTmp=true again, to work round a different problem. Obviously these two needs are incompatible.

The new problem arises at GPUGrid, where they are beta-testing a new app which requires the Wrapper app to perform a software installation. The wrapper command is

    <task>
        <application>/usr/bin/flock</application>
	<command_line>$PROJECT_DIR/miniconda.lock -c "/bin/bash ./miniconda-installer.sh -b -u -p $PROJECT_DIR/miniconda &&
                      $PROJECT_DIR/miniconda/bin/conda install -m -y -p gpugridpy --file requirements.txt "
	</command_line>
	<setenv>PATH=/usr/bin:/bin</setenv>
	<time_limit>1800</time_limit>
	<weight>10</weight>
    </task>

If PrivateTmp=false (the new default), this command fails with

21:48:18 (21729): wrapper: running /usr/bin/flock (/var/lib/boinc-client/projects/www.gpugrid.net/miniconda.lock -c "/bin/bash ./miniconda-installer.sh -b -u -p /var/lib/boinc-client/projects/www.gpugrid.net/miniconda &&
                      /var/lib/boinc-client/projects/www.gpugrid.net/miniconda/bin/conda install -m -y -p gpugridpy --file requirements.txt ")
[21755] INTERNAL ERROR: cannot create temporary directory!
[21759] INTERNAL ERROR: cannot create temporary directory!
21:48:19 (21729): /usr/bin/flock exited; CPU time 0.118700
21:48:19 (21729): app exit status: 0x1
21:48:19 (21729): called boinc_finish(195)

If PrivateTmp=true, the wrapper task succeeds, and the full BOINC job carries on to a successful conclusion.

Could the systemd crew - @BryanQuigley, @Germano0, @smoe - please put their thinking caps on and suggest how this might be resolved? I'm assuming that the basic problem in the 'false' case is that the system /tmp/ structure is read-only to BOINC?

https://man7.org/linux/man-pages/man5/systemd.exec.5.html has details which may be relevant:

   PrivateTmp=
       Takes a boolean argument. If true, sets up a new file system
       namespace for the executed processes and mounts private /tmp/ and
       /var/tmp/ directories inside it that are not shared by processes
       outside of the namespace. This is useful to secure access to
       temporary files of the process, but makes sharing between
       processes via /tmp/ or /var/tmp/ impossible. 

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    Status

    Backlog

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions