Created attachment 7766 [details] my fix for the bug Hi all, After the fix mentioned in https://bugzilla.redhat.com/show_bug.cgi?id=477705, I can still reproduce the bug on a dual-core armv7 board. As the Linux kernel only guarantee a per-page atomicity when doing fork, just adding a atomic_write_barrier is not enough to protect the stack_used/stack_cache lists. We need to stop threads which tried to modify the lists when a thread is doing fork, only then the child process could get a coherent list, and the __reclaim_stacks could do the right job. In fork, we have already done such things for io locks(see _IO_list_lock (),_IO_list_resetlock () and _IO_list_unlock () in __libc_fork). I belive we should also add some similar codes to protect the stack_used/stack_cache lists. I have made a patch(see the attachment), is that ok for trunk?
Created attachment 7771 [details] fix for trunk
I'm closing this in favour of bug 26104 and contains my analysis. We should discuss the issue in bug 26104. I don't think that adding additional locking is the right solution.
Marking as duplicate of 26104. *** This bug has been marked as a duplicate of bug 26104 ***