>> The fork() problem is due to memory registration aggravated by
>> registration cache. Memory registration in itself is a hack from
>> the OS
>> point of view, and you already know a lot about the various problems
>> related to registration cache.
> So Gleb is indicating that this is a problem in the pipeline protocol
> which does not use a registration cache. I think the registration
> cache, while increasing the probability of badness after fork, is not
> the culprit.
Indeed, it makes things worse by extending the vulnerability outside the
time frame of an asynchronous communication. Without the registration
cache, the bad case is limited to a process that forks while a com is
pending and touches the same pages before they are read/written by the
hardware. This is not very likely because the window of time is very
small, but still possible. However, it is not limited to the last
partial page of the buffer, it can happen for any pinned page.