Messages in this thread | | | Date | Wed, 23 Jan 2008 13:31:49 +0000 | From | Pavel Machek <> | Subject | Re: [PATCH] printk deadlocks if called with runqueue lock held |
| |
Hi!
> I thought that one could place a printk anywhere without worrying. > But it seems that it is not wise to place a printk where the runqueue > lock is held. > > I just spent two hours debugging why some of my code was locking up, > to find that the lockup was caused by some debugging printk's that > I had in the scheduler. The printk's were only in rare paths so > they shouldn't be too much of a problem, but after I hit the printk > the system locked up. > > Thinking that it was locking up on my code I went looking down the > wrong path. I finally found (after examining an NMI dump) that > the lockup happened because printk was trying to wakeup the klogd > daemon, which caused a deadlock when the try_to_wakeup code tries > to grab the runqueue lock.
Could try_to_wakeup use trylock, and only avoid wakeup if lock is already held? Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
| |