[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-frameworks-devel
Subject:    Re: Review Request 129197: Fix tests on FreeBSD
From:       Gleb Popov <6yearold () gmail ! com>
Date:       2016-10-31 7:41:07
Message-ID: 20161031074107.5235.8274 () mimi ! kde ! org
[Download RAW message or body]

--===============9114112601481742533==
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit



> On Oct. 16, 2016, 4:12 p.m., Tobias Berner wrote:
> > I'm kind of unsure if this is right. Yes, the tests run now, but isn't the issue \
> > rather in the way kpty works (or fails to work on FreeBSD)?
> 
> Gleb Popov wrote:
> From what i've understood, this boils down to `KPtyDevicePrivate::_k_canRead()` \
> method in kptydevice.cpp. The line 284 
> if (!::ioctl(q->masterFd(), PTY_BYTES_AVAILABLE, (char *) &available))
> 
> returns 0 in `available` and this makes method return `false`. This, in turn, make \
> `waitFor*` methods return false too. 
> Now you mention it, i'm also unsure if this `ioctl` behaves different on Linux.
> 
> Oswald Buddenhagen wrote:
> i've been trying to make sense of the freebsd pts layer, and utterly failed. the \
> documentation is anything between abysmal and non-existing. i suggest you find and \
> invite an actual expert. 
> kptyprocess keeps both ends of the pty open, so whether the child process is \
> running or not should be irrelevant. apparently, it's not. maybe this is somehow \
> related to whether the tty is the process' controlling terminal. 
> you can try the following:
> - remove the freebsd case from the PTY_BYTES_AVAILABLE definition near the top. \
> this was introduced 2008, before freebsd 8's release, which got an entirely new pts \
>                 layer. it may just work with the generic code now.
> - try replacing the masterFd() with slaveFd() in the above ioctl. that would be \
> kinda broken, but at least it would be a data point.

This turned out to be a bug in Qt itself. `QProcess` unit tests are also failing with \
the same `.waitForFinished()` error. So, we'll first deal with it and then i'll get \
back on this.


- Gleb


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/129197/#review100039
-----------------------------------------------------------


On Oct. 16, 2016, 2:44 p.m., Gleb Popov wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/129197/
> -----------------------------------------------------------
> 
> (Updated Oct. 16, 2016, 2:44 p.m.)
> 
> 
> Review request for KDE Frameworks, Adriaan de Groot, Tobias Berner, Oswald \
> Buddenhagen, and Martin Tobias Holmedahl Sandsmark. 
> 
> Repository: kpty
> 
> 
> Description
> -------
> 
> Apparently, KPtyDevice can't be operated on after KPtyProcess finishes. Tweak tests \
> accordingly, so they actually test things while the process is still running. 
> 
> Diffs
> -----
> 
> autotests/kptyprocesstest.cpp 8b0b5b0 
> 
> Diff: https://git.reviewboard.kde.org/r/129197/diff/
> 
> 
> Testing
> -------
> 
> make test on FreeBSD
> 
> 
> Thanks,
> 
> Gleb Popov
> 
> 


--===============9114112601481742533==
MIME-Version: 1.0
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: 7bit




<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/129197/">https://git.reviewboard.kde.org/r/129197/</a>
  </td>
    </tr>
   </table>
   <br />





<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: \
10px;">  <p style="margin-top: 0;">On October 16th, 2016, 4:12 p.m. MSK, <b>Tobias \
Berner</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'm kind of unsure if this is right. Yes, the tests \
run now, but isn't the issue rather in the way kpty works (or fails to work on \
FreeBSD)?</p></pre>  </blockquote>




 <p>On October 16th, 2016, 4:22 p.m. MSK, <b>Gleb Popov</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;">From \
what i've understood, this boils down to <code style="text-rendering: inherit;color: \
#4444cc;padding: 0;white-space: normal;margin: 0;line-height: \
inherit;">KPtyDevicePrivate::_k_canRead()</code> method in kptydevice.cpp. The line \
284</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%"><span></span>if (!::ioctl(q-&gt;masterFd(), \
PTY_BYTES_AVAILABLE, (char *) &amp;available)) </pre></div>
</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: \
inherit;white-space: inherit;">returns 0 in <code style="text-rendering: \
inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: \
inherit;">available</code> and this makes method return <code style="text-rendering: \
inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: \
inherit;">false</code>. This, in turn, make <code style="text-rendering: \
inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: \
inherit;">waitFor*</code> methods return false too.</p> <p style="padding: \
0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Now \
you mention it, i'm also unsure if this <code style="text-rendering: inherit;color: \
#4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">ioctl</code> \
behaves different on Linux.</p></pre>  </blockquote>





 <p>On October 29th, 2016, 12:07 p.m. MSK, <b>Oswald Buddenhagen</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've \
been trying to make sense of the freebsd pts layer, and utterly failed. the \
documentation is anything between abysmal and non-existing. i suggest you find and \
invite an actual expert.</p> <p style="padding: 0;text-rendering: inherit;margin: \
0;line-height: inherit;white-space: inherit;">kptyprocess keeps both ends of the pty \
open, so whether the child process is running or not should be irrelevant. \
apparently, it's not. maybe this is somehow related to whether the tty is the \
process' controlling terminal.</p> <p style="padding: 0;text-rendering: \
inherit;margin: 0;line-height: inherit;white-space: inherit;">you can try the \
                following:
- remove the freebsd case from the PTY_BYTES_AVAILABLE definition near the top. this \
was introduced 2008, before freebsd 8's release, which got an entirely new pts layer. \
                it may just work with the generic code now.
- try replacing the masterFd() with slaveFd() in the above ioctl. that would be kinda \
broken, but at least it would be a data point.</p></pre>  </blockquote>








</blockquote>

<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;">This \
turned out to be a bug in Qt itself. <code style="text-rendering: inherit;color: \
#4444cc;padding: 0;white-space: normal;margin: 0;line-height: \
inherit;">QProcess</code> unit tests are also failing with the same <code \
style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: \
0;line-height: inherit;">.waitForFinished()</code> error. So, we'll first deal with \
it and then i'll get back on this.</p></pre> <br />










<p>- Gleb</p>


<br />
<p>On October 16th, 2016, 2:44 p.m. MSK, Gleb Popov 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 Frameworks, Adriaan de Groot, Tobias Berner, Oswald \
Buddenhagen, and Martin Tobias Holmedahl Sandsmark.</div> <div>By Gleb Popov.</div>


<p style="color: grey;"><i>Updated Oct. 16, 2016, 2:44 p.m.</i></p>









<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
kpty
</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;">Apparently, KPtyDevice can't be operated on after \
KPtyProcess finishes. Tweak tests accordingly, so they actually test things while the \
process is still running.</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;">make test on FreeBSD</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>autotests/kptyprocesstest.cpp <span style="color: grey">(8b0b5b0)</span></li>

</ul>

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






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







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


--===============9114112601481742533==--


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic