Re: ps hang in 241-pre10

Marcelo Tosatti (marcelo@conectiva.com.br)
Sun, 28 Jan 2001 02:01:12 -0200 (BRST)


On Sun, 28 Jan 2001, Marcelo Tosatti wrote:

> On Sat, 27 Jan 2001, Linus Torvalds wrote:
>
> >
> >
> > On Sun, 28 Jan 2001, Marcelo Tosatti wrote:
> > > >
> > > > This is the smoking gun here, I bet, but I'd like to make sure I see the
> > > > whole thing. I don't see _why_ we'd have deadlocked on __wait_on_page(),
> > > > but I think this is the thread that hangs on to the mm semaphore.
> > >
> > > I was able to reproduce it here with dbench.
> > >
> > > Nothing is locked except this dbench thread (the only dbench thread):
> > >
> > > dbench D C1C9FE64 5200 1013 1 (L-TLB) 1370 785
> > > Call Trace: [___wait_on_page+130/160] [truncate_list_pages+100/404] [truncate_inode_pages+93/128] [iput+162/360] [dput+262/356] [fput+121/232] [exit_mmap+218/292]
> > > [mmput+56/80] [do_exit+208/680] [do_signal+566/656] [dput+25/356] [path_release+13/60] [sys_newstat+100/112] [sys_read+188/196] [signal_return+20/24]
> >
> > Ok, this definitely seems to be the pattern.
> >
> > I don't see _what_ is going on, though.
> >
> > I know of one "known bug" in pre10: if you run out of swap-space with
> > shared memory segments, it will do the wrong thing (return 1 without
> > unlocking the page). xmms might trigger this, but I didn't think that
> > dbench used shared memory?
>
> It does. Bingo.
>
> I'm not able to reproduce the problem here with your patch.
>
> Btw, there is another bug in shm_writepage() where it does not set the
> page dirty in case of failure...

Why dont you just put set_page_dirty() back in page_launder() in case
writepage() fails?

Otherwise you'll have to do in every specific implementation of
writepage().

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/