• Bug#1069162: Problem starting at boot, MAINPID to kill is a root-owned

    From martin f krafft@21:1/5 to All on Wed Apr 17 11:00:01 2024
    Package: puppetserver
    Version: 7.9.5-2
    Severity: normal

    I found puppetserver failing to boot, because the `ExecStartPost`
    line fails:

    ```
    [Service]
    ExecStartPost=sh -c "while ! head -c1 ${RUNTIME_DIRECTORY}/restart | grep -q '^1'; do kill -0 $MAINPID && sleep 1 || exit 1; done"
    ```

    Adding a little debugging output, I find `$MAINPID` pointing to the wrong process, and the `kill` failing:

    ```
    sh[653]: + ps -fp 652
    sh[653]: UID PID PPID C STIME TTY TIME CMD
    sh[653]: root 652 1 0 10:34 ? 00:00:00 (java)
    sh[653]: + kill -0 652 Apr 17 10:18:27
    sh[653]: sh: 1: kill: Operation not permitted
    ```

    It's unclear to me why `$MAINPID` points at the root-owned `java` process, or why that process is even started as root, given that `User=puppet` is specified.

    This only happens during boot, and not 100% of the time. When the service is restarted later, it works fine.

    -- System Information:
    Debian Release: trixie/sid
    APT prefers unstable
    APT policy: (500, 'unstable'), (1, 'experimental')
    Architecture: amd64 (x86_64)

    Kernel: Linux 6.6.13-amd64 (SMP w/8 CPU threads; PREEMPT)
    Locale: LANG=en_NZ, LC_CTYPE=en_NZ.UTF-8 (charmap=UTF-8), LANGUAGE=en_NZ:en Shell: /bin/sh linked to /usr/bin/dash
    Init: systemd (via /run/systemd/system)
    LSM: AppArmor: enabled

    Versions of packages puppetserver depends on:
    ii default-jre-headless 2:1.17-75
    pn jruby <none>
    pn libclj-time-clojure <none>
    pn libclojure-java <none>
    pn libcomidi-clojure <none>
    pn libcommons-exec-java <none>
    ii libcommons-io-java 2.16.0-1
    pn libcommons-lang-java <none>
    pn libdropwizard-metrics-java <none>
    pn libdujour-version-check-clojure <none>
    pn libjruby-utils-clojure <none>
    pn libkitchensink-clojure <none>
    pn libliberator-clojure <none>
    pn libprismatic-schema-clojure <none>
    pn libpuppetlabs-http-client-clojure <none>
    pn libpuppetlabs-i18n-clojure <none>
    pn libpuppetlabs-ring-middleware-clojure <none>
    pn libraynes-fs-clojure <none>
    pn librbac-client-clojure <none>
    pn libsemver-clojure <none>
    pn libshell-utils-clojure <none>
    pn libslingshot-clojure <none>
    pn libssl-utils-clojure <none>
    pn libtrapperkeeper-authorization-clojure <none>
    pn libtrapperkeeper-clojure <none>
    pn libtrapperkeeper-comidi-metrics-clojure <none>
    pn libtrapperkeeper-filesystem-watcher-clojure <none>
    pn libtrapperkeeper-metrics-clojure <none>
    pn libtrapperkeeper-scheduler-clojure <none>
    pn libtrapperkeeper-status-clojure <none>
    pn libtrapperkeeper-webserver-jetty9-clojure <none>
    pn libyaml-snake-java <none>
    ii procps 2:4.0.4-4
    pn puppet-agent <none>
    ii ruby 1:3.1+nmu1
    ii ruby-concurrent 1.2.3-2
    pn ruby-deep-merge <none>
    pn ruby-fast-gettext <none>
    pn ruby-gettext <none>
    pn ruby-hocon <none>
    ii ruby-locale 2.1.3-1
    pn ruby-puppet-resource-api <none>
    pn ruby-puppetserver-ca-cli <none>
    pn ruby-semantic-puppet <none>
    pn ruby-text <none>

    Versions of packages puppetserver recommends:
    pn puppet-module-puppetlabs-mailalias-core <none>

    puppetserver suggests no packages.


    --
    .''`. martin f. krafft <madduck@d.o>
    : :' : proud Debian developer
    `. `'` http://people.debian.org/~madduck
    `- Debian - when you have better things to do than fixing systems

    <!DOCTYPE html>

    <html>
    <head>
    <meta content="text/html; charset=utf-8" http-equiv="content-type"/>
    <meta content="width=device-width, initial-scale=1.0" name="viewport"/>
    </head>
    <body style="font-family: Lato, Calibri, Tahoma, sans-serif; max-width: 32em"> <p style="text-align: justify; text-justify: auto">Package: puppetserver<br/> Version: 7.9.5-2<br/>
    Severity: normal</p>
    <p style="text-align: justify; text-justify: auto">I found puppetserver failing to boot, because the <code>ExecStartPost</code> line fails:</p>
    <div class="codehilite" style="background: #f8f8f8"><pre style="line-height: 125%"><span></span><code>[Service]
    ExecStartPost=sh -c &quot;while ! head -c1 ${RUNTIME_DIRECTORY}/restart | grep -q &#39;^1&#39;; do kill -0 $MAINPID &amp;&amp; sleep 1 || exit 1; done&quot;
    </code></pre></div>
    <p style="text-align: justify; text-justify: auto">Adding a little debugging output, I find <code>$MAINPID</code> pointing to the wrong<br/>
    process, and the <code>kill</code> failing:</p>
    <div class="codehilite" style="background: #f8f8f8"><pre style="line-height: 125%"><span></span><code>sh[653]: + ps -fp 652
    sh[653]: UID PID PPID C STIME TTY TIME CMD
    sh[653]: root 652 1 0 10:34 ? 00:00:00 (java)
    sh[653]: + kill -0 652 Apr 17 10:18:27
    sh[653]: sh: 1: kill: Operation not permitted
    </code></pre></div>
    <p style="text-align: justify; text-justify: auto">It&rsquo;s unclear to me why <code>$MAINPID</code> points at the root-owned <code>java</code> process, or<br/>
    why that process is even started as root, given that <code>User=puppet</code> is<br/>
    specified.</p>
    <p style="text-align: justify; text-justify: auto">This only happens during boot, and not 100% of the time. When the service is<br/>
    restarted later, it works fine.</p>
    <p style="text-align: justify; text-justify: auto">&ndash; System Information:<br/>
    Debian Release: trixie/sid<br/>
    APT prefers unstable<br/>
    APT policy: (500, &lsquo;unstable&rsquo;), (1, &lsquo;experimental&rsquo;)<br/>
    Architecture: amd64 (x86_64)</p>
    <p style="text-align: justify; text-justify: auto">Kernel: Linux 6.6.13-amd64 (SMP w/8 CPU threads; PREEMPT)<br/>
    Locale: LANG=en_NZ, LC_CTYPE=en_NZ.UTF-8 (charmap=UTF-8), LANGUAGE=en_NZ:en<br/>
    Shell: /bin/sh linked to /usr/bin/dash<br/>
    Init: systemd (via /run/systemd/system)<br/>
    LSM: AppArmor: enabled</p>
    <p style="text-align: justify; text-justify: auto">Versions of packages puppetserver depends on:<br/>
    ii default-jre-headless 2:1.17-75<br/>
    pn jruby <none><br/>
    pn libclj-time-clojure <none><br/>
    pn libclojure-java <none><br/>
    pn libcomidi-clojure <none><br/>
    pn libcommons-exec-java <none><br/>
    ii libcommons-io-java 2.16.0-1<br/>
    pn libcommons-lang-java <none><br/>
    pn libdropwizard-metrics-java <none><br/>
    pn libdujour-version-check-clojure <none><br/>
    pn libjruby-utils-clojure <none><br/>
    pn libkitchensink-clojure <none><br/>
    pn libliberator-clojure <none><br/>
    pn libprismatic-schema-clojure <none><br/>
    pn libpuppetlabs-http-client-clojure <none><br/>
    pn libpuppetlabs-i18n-clojure <none><br/>
    pn libpuppetlabs-ring-middleware-clojure <none><br/>
    pn libraynes-fs-clojure <none><br/>
    pn librbac-client-clojure <none><br/>
    pn libsemver-clojure <none><br/>
    pn libshell-utils-clojure <none><br/>
    pn libslingshot-clojure <none><br/>
    pn libssl-utils-clojure <none><br/>
    pn libtrapperkeeper-authorization-clojure <none><br/>
    pn libtrapperkeeper-clojure <none><br/>
    pn libtrapperkeeper-comidi-metrics-clojure <none><br/>
    pn libtrapperkeeper-filesystem-watcher-clojure <none><br/>
    pn libtrapperkeeper-metrics-clojure <none><br/>
    pn libtrapperkeeper-scheduler-clojure <none><br/>
    pn libtrapperkeeper-status-clojure <none><br/>
    pn libtrapperkeeper-webserver-jetty9-clojure <none><br/>
    pn libyaml-snake-java <none><br/>
    ii procps 2:4.0.4-4<br/>
    pn puppet-agent <none><br/>
    ii ruby 1:3.1+nmu1<br/>
    ii ruby-concurrent 1.2.3-2<br/>
    pn ruby-deep-merge <none><br/>
    pn ruby-fast-gettext <none><br/>
    pn ruby-gettext <none><br/>
    pn ruby-hocon <none><br/>
    ii ruby-locale 2.1.3-1<br/>
    pn ruby-puppet-resource-api <none><br/>
    pn ruby-puppetserver-ca-cli <none><br/>
    pn ruby-semantic-puppet <none><br/>
    pn ruby-text <none></none></none></none></none></none></none></none></none></none></none></none></none></none></none></none></none></none></none></none></none></none></none></none></none></none></none></none></none></
    none></none></none></none></none></none></none></none></none></none></none></p> <p style="text-align: justify; text-justify: auto">Versions of packages puppetserver recommends:<br/>
    pn puppet-module-puppetlabs-mailalias-core <none></none></p>
    <p style="text-align: justify; text-justify: auto">puppetserver suggests no packages.</p>
    <div id="signature" style="font-family: Lato, Calibri, Tahoma, sans-serif; max-width: 32em"><span class="sig_separator" style="display: none">-- </span>

    <dt>.&rsquo;&lsquo;`. martin f. krafft <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#109;&#97;&#100;&#100;&#117;&#99;&#107;&#64;&#100;&#46;&#111;">&#109;&#97;&#100;&#100;&#117;&#99;&#107;&#64;&#100;&#46;&#111;</a></dt>
    <dd>:&rsquo; : proud Debian developer<br/> <code>.</code>&lsquo;<code>http://people.debian.org/~madduck</code>- Debian - when you have better things to do than fixing systems</dd>
    </dl>
    </div>
    </body>
    </html>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?J=C3=A9r=C3=B4me?= Charao@21:1/5 to All on Wed Apr 17 14:40:02 2024
    Thanks for the bug report, that's a strange one indeed!

    One thing I'm wondering however, considering you're running unstable, is
    if the problem also occurs with the latest version of the puppetserver
    package, which is currently 8.4.0-3.

    -- Jérôme

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)