<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="12" style="border: 1px #c9c399 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://git.reviewboard.kde.org/r/128909/">https://git.reviewboard.kde.org/r/128909/</a>
     </td>
    </tr>
   </table>
   <br />










<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On September 15th, 2016, 1:29 a.m. CEST, <b>Aleix Pol Gonzalez</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  


<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
 <thead>
  <tr>
   <th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
    <a href="https://git.reviewboard.kde.org/r/128909/diff/2/?file=476882#file476882line133" style="color: black; font-weight: bold; text-decoration: underline;">processcore/helper.cpp</a>
    <span style="font-weight: normal;">

     (Diff revision 2)

    </span>
   </th>
  </tr>
 </thead>



 
 

 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">133</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="kt">int</span> <span class="n">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span></pre></td>
  </tr>

 </tbody>

</table>

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;"><code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">KAUTH_HELPER_MAIN</code> doesn't work on OS X?</p></pre>
 </blockquote>



 <p>On September 15th, 2016, 10:17 a.m. CEST, <b>René J.V. Bertin</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Thanks for picking up on this, I'd forgotten to make a comment about it.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I think the macro does work, it's KAuth which currently doesn't seem to work for me. It also doesn't in my Linux build, btw, but there at least it gives some error output suggesting tries to use polkit and possibly even the processlist helper from my KDE4 desktop. </p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">The explicit implementation on OS X wasn't because of the macro, it was to allow running setuid root. Initial testing didn't show any benefit to that, but it could well be that's because KAuth still fails somewhere and then simply aborts the requested operation.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Suggestions very welcome, but if we can't get this to work I'll probably want to disable changing process priorities.</p></pre>
 </blockquote>





 <p>On September 15th, 2016, 10:26 a.m. CEST, <b>René J.V. Bertin</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">As to testing with setuid root: it looks it won't be trivial to hack KAuth out of helper.cpp . Is there a way to take KAuth out of the loop one way or another - for instance instruct it to do nothing when already running with the required privileges, or to ignore failures?</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I'm fully aware why Qt disables running setuid root, but I'd hope the risk is minimal in a helper app like this that is designed to work as root (and doesn't "linger").</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Also, the helper is started via DBus, right? Doesn't DBus provide a mechanism to launch a service with elevated privileges?</p></pre>
 </blockquote>





 <p>On September 15th, 2016, 10:59 a.m. CEST, <b>René J.V. Bertin</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">FWIW, after I uninstalled the KDE4 helper app from my Linux system (<code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">apt-get remove ksysguard</code>) I started getting the same error as I see on OS X when I try to increase a process's priority:</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;"><div class="codehilite" style="background: #f8f8f8"><pre style="line-height: 125%">kf5.kauth: Tried to start an invalid action
kf5.kauth: Tried to start an invalid action
</pre></div>
</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">After reinstalling the KDE4 ksysguard package all errors went away and the feature works. Go figure ...
(I don't have KDE4 ksysguard installed on OS X)</p></pre>
 </blockquote>





 <p>On September 15th, 2016, 12:04 p.m. CEST, <b>Aleix Pol Gonzalez</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I suggest dropping the workaround for now and investigate how to get KAuth to work altogether then.</p></pre>
 </blockquote>





 <p>On September 15th, 2016, 12:52 p.m. CEST, <b>René J.V. Bertin</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Not really related, but yeah I guess you're right.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">FWIW, on OS X I see this:</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;"><div class="codehilite" style="background: #f8f8f8"><pre style="line-height: 125%">> KAuthHelperTest -vb -v2
[...]
INFO   : HelperTest::testExecuteJobSignals() QVERIFY(job->data().isEmpty())
   Loc: [/opt/local/var/macports/build/_Volumes_Debian_MP9_site-ports_kf5_KF5-Frameworks/kf5-kauth/work/kauth-5.24.0/autotests/HelperTest.cpp(184)]
PASS   : HelperTest::testExecuteJobSignals()
INFO   : HelperTest::testActionData() entering
INFO   : HelperTest::testActionData() QVERIFY(action.isValid())
   Loc: [/opt/local/var/macports/build/_Volumes_Debian_MP9_site-ports_kf5_KF5-Frameworks/kf5-kauth/work/kauth-5.24.0/autotests/HelperTest.cpp(199)]
INFO   : HelperTest::testActionData() QCOMPARE(action.status(), KAuth::Action::AuthRequiredStatus)
   Loc: [/opt/local/var/macports/build/_Volumes_Debian_MP9_site-ports_kf5_KF5-Frameworks/kf5-kauth/work/kauth-5.24.0/autotests/HelperTest.cpp(201)]
QWARN  : HelperTest::testActionData() QSocketNotifier: Socket notifiers cannot be enabled or disabled from another thread
^C
QFATAL : HelperTest::testActionData() Received signal 2
         Function time: 5229ms Total time: 7337ms
FAIL!  : HelperTest::testActionData() Received a fatal error.
   Loc: [Unknown file(0)]
Totals: 3 passed, 1 failed, 0 skipped, 0 blacklisted
********* Finished testing of HelperTest *********
Exit 1
</pre></div>
</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">That's at least 1 thing that doesn't work as it should; not yet sure what this has to do with the failures I'm seeing (the socket error is platform-agnostic so the KAuth OS X code does cross-thread stuff the Linux code apparently doesn't ... unless it's libdbus that uses threading)
).</p></pre>
 </blockquote>





 <p>On September 15th, 2016, 6:55 p.m. CEST, <b>René J.V. Bertin</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Well ... it turns out I had never "back"ported my modifications to KDE4's Auth Services to KAuth, nor had anybody else in the 2 years since they were committed.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">https://git.reviewboard.kde.org/r/126086/</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">However, that doesn't fix everything. I now have a ksysguard app that obtains authorisation to do whatever it is it wants to do, and that then raises a DBus connection error because it is designed to use a helper for that purpose, which apparently fails to connect (I think it isn't even launched).</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">It seems ksysguard was never designed with platforms in mind where authorisation isn't obtained through a helper that's controlled via DBus. Technically that <em style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">should</em> work on OS X, but in practice KAuth would probably better do without.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">What's the better approach here? Modify the ksysguard helper app so that it's started as a regular helper app and then obtains authorisation on its own? Or rewrite ksysguard so that it doesn't use a helper at all?</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">IMHO, the interest here is much more in providing an example for other applications (and me learning a few new tricks) rather than getting niceness control to work on OS X.
BTW, the scheduler changes should be disabled; can that be done independently from the niceness control?</p></pre>
 </blockquote>







</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">FWIW:</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;"><div class="codehilite" style="background: #f8f8f8"><pre style="line-height: 125%">> sudo /opt/local/libexec/kde5/kauth/ksysguardprocesslist_helper pid0=89746 nicevalue=10
Password:
Dynamic session lookup supported but failed: launchd did not provide a socket path, verify that org.freedesktop.dbus-session.plist is loaded!
Exit 255
</pre></div>
</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">If the current design depends on ksysguardprocesslist_helper being <em style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">launched</em> as root, the above error suggests that won't work on OS X (AFAIU it means the process won't find the DBus session daemon).</p></pre>
<br />




<p>- René J.V.</p>


<br />
<p>On September 15th, 2016, 2:47 p.m. CEST, René J.V. Bertin wrote:</p>








<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="12" style="border: 1px #888a85 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
 <tr>
  <td>

<div>Review request for KDE Base Apps and KDE Software on Mac OS X.</div>
<div>By René J.V. Bertin.</div>


<p style="color: grey;"><i>Updated Sept. 15, 2016, 2:47 p.m.</i></p>









<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
libksysguard
</div>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">This patch implements initial and rather minimal support for OS X, for now focussing purely on process information. That feature is justified as it is used by KDevelop in order to obtain the list of processes one can attach a debugger to.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Mac OS X is tricky because it requires special privileges in order to obtain certain types of information for any running process. For example, even obtaining the number of threads spawned by a foreign process requires privileges that aren't trivial to set up. I've prepared the terrain, but also implemented a fallback strategy that calls <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">ps</code> to be sure that crucial information like the command name is available for all processes.</p></pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">On OS X 10.9.5 with Frameworks 5.24.0 and Qt 5.6.1</p></pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>processcore/CMakeLists.txt <span style="color: grey">(e7c9263)</span></li>

 <li>processcore/Info.plist <span style="color: grey">(PRE-CREATION)</span></li>

 <li>processcore/processes_darwin_p.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>processcore/processes_local_p.cpp <span style="color: grey">(2bc123f)</span></li>

</ul>

<p><a href="https://git.reviewboard.kde.org/r/128909/diff/" style="margin-left: 3em;">View Diff</a></p>



<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">File Attachments </h1>


 <li><a href="https://git.reviewboard.kde.org/media/uploaded/files/2016/09/14/47468811-58cb-40b8-a735-4dd86dce98e1__Screen_Shot_2016-09-14_at_17.38.22.png">Attach to Process widget in KDevelop</a></li>

</ul>




  </td>
 </tr>
</table>







  </div>
 </body>
</html>