> 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
> 
>

Reply via email to