This is the mail archive of the libc-help@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Concurrency semantics of fork



On 09-11-2015 22:41, Carlos O'Donell wrote:
> On 11/09/2015 12:35 PM, Adhemerval Zanella wrote:
>>
>>
>> On 03-11-2015 09:39, Florian Weimer wrote:
>>> Does fork behave as if it performs an acquire load of the process memory
>>> regions it duplicates?
>>
>> I believe this is open to implementation, although I curious to understand
>> which scenario you are thinking where the memory semantics for the 
>> duplicated regions should take in consideration.
> 
> Assume a lockless malloc implementation and then fork. What guarantees does
> the child have with regards to the state of the structures in such a malloc
> implementation?
> 
> If COW behaves as if it was an acquire load of the process memory region it
> duplicates then you can say something useful about the state of malloc
> structures in the child that has a forked copy.

I am still trying to figure the issue you are raising: although COW does 
implicit sharing, my understanding is the pages are still independent
regarding memory semantic.  It should not stop memory reordering regarding
any other process that might sharing the pages.

> 
> I think vfork and fork have to behave as full barriers. After such a full
> barrier you can say something useful about the state of the child.

You mean 'unshare' all the possible COW pages for the process? Or regarding
internal GLIBC states regarding the process itself?

> 
> Cheers,
> Carlos.
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]