On Wed 11-05-16 15:59:38, Michal Hocko wrote: > On Wed 11-05-16 11:41:28, Peter Zijlstra wrote: > > On Wed, May 11, 2016 at 11:31:27AM +0200, Michal Hocko wrote: > > > > > Care to cook up a full patch? > > > > compile tested only, if someone could please test it? > > I have tried to run the test case from Tetsuo[1] with a small printk to > show the interrupted writer case: > [ 2753.596678] XXX: Writer interrupted. Woken waiters:0 > [ 2998.266978] XXX: Writer interrupted. Woken waiters:0 > > which means rwsem_atomic_update(-RWSEM_WAITING_BIAS, sem) path which is > the problematic case. oom_reaper was always able to succeed so I guess > the patch works as expected. I will leave the test run for longer to be > sure.
And just for the reference I am able to reproduce the lockup without the patch applied and the same test case and a debugging patch [ 1522.036379] XXX interrupted. list_is_singular:1 [ 1523.040462] oom_reaper: unable to reap pid:3736 (tgid=3736) I still cannot say I would understand why the pending RWSEM_WAITING_BIAS matters but I would probably need to look at the code again with a clean head, __rwsem_wake is quite tricky... -- Michal Hocko SUSE Labs