"ps -e" without procfs(5)
Mikolaj Golub
trociny at freebsd.org
Mon Nov 14 20:31:42 UTC 2011
On Wed, 9 Nov 2011 14:53:29 +0200 Kostik Belousov wrote:
>> > http://people.freebsd.org/~trociny/env.sys.4.patch
>> >
>> > Investigating cases when EFAULT was returned and if the fallback was
>> > successful I noticed that most of the cases were when p->p_comm changed during
>> > the read, so the process was in exec in that time. In order to avoid this
>> > error I added a check for P_INEXEC flag.
>> And now you return success and nothing gets copied out for the process
>> in P_INEXEC state. Either you should return an error like EAGAIN, or
>> consider the P_INEXEC state as transitional and wait till process
>> leaves it. Or, ignore the state as it was before, and return whatever
>> error proc_rwmem generated (my preference).
KB> Forgot to say that the check does not change much because you drop
KB> process lock immediately after the check, so the process may enter
KB> the INEXEC state right after the check. I believe you already tried
KB> to do this with P_WEXIT.
Ok, eventually I decided not to check for P_INEXEC (as the simplest :-).
The updated patch:
http://people.freebsd.org/~trociny/env.sys.5.patch
--
Mikolaj Golub
More information about the freebsd-hackers
mailing list