Messages in this thread | | | Date | Tue, 05 Feb 2013 18:17:12 -0800 | From | Ben Greear <> | Subject | Re: Question on lockdep and MAX_LOCK_DEPTH |
| |
On 02/05/2013 05:54 PM, Steven Rostedt wrote:
> I'm not sure the swapper task is part of the 'do_each_thread()' loop. > > Perhaps what you want to do is add a: > > lockdep_print_held_locks(current);
I'll add that and test...
> I'm curious. Does your code grab a read lock? If you grab the same read > lock multiple times it adds to the list each time. Thus if you have > anything like: > > for (i = 0; i < 100; i++ ) { > read_lock(&lock); > } > > for (i = 0; i < 100; i++) { > read_unlock(&lock); > } > > That will fill up the held locks quite a bit. > > The above code I showed is ridiculous and I doubt you have it, but if > you have something that does lots of recursive reads for some reason, > that could be an issue.
I have only one read/write lock in my module, and it looks like I always lock it as a writer (will fix that soon for performance reasons, but it should be valid locking I think).
I have no rcu locks at all in my module currently.
I've seen similar lockups on another machine that does not use this module, but it uses a hacked up pktgen. I haven't found a test case that reproduces this on a clean upstream build, but I am still fairly suspicious that it isn't my code. Famous last words I'm sure :)
Thanks, Ben
-- Ben Greear <greearb@candelatech.com> Candela Technologies Inc http://www.candelatech.com
| |