> On Oct. 16, 2016, 1: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.

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.


- Oswald


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


On Oct. 16, 2016, 11:44 a.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, 11:44 a.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