[Click] [PATCH 2/2] Task: Kill process_pending dead lock
Roman Chertov
rchertov at cs.ucsb.edu
Mon Sep 15 17:28:43 EDT 2008
Eddie,
Would this be a problem if in kernel mode a large config was dumped
into a write handler via proclikefs? Maybe Jelena's crashes were caused
by that.
I can conduct a few stress tests. What are the key requirements for
the test to see if the new changes work or not?
Roman
Eddie Kohler wrote:
> Joonwoo,
>
> > I took look into this lock up issue and I think I found something.
> >
> > RoutherThread::driver() calls run_tasks() with locked tasks.
> > But after calling run_tasks(), current processor can be changed since
> > schedule() might be called (eg. ScheduleLinux element)
> > So I think that's problem. How do you think?
>
> I totally agree that this could be a problem.
>
> It looks like EXCLUSIVE handlers never really worked before. :(
>
> So my current analysis is this. It is not appropriate for a thread to
> call blocking functions and/or schedule() when that thread has prevented
> preemption via get_cpu(). My prior patches prevented preemption.
>
> The solution is to separate "locking the task list" from "blocking task
> execution." Clickfs, when executing an exclusive handler, "blocks task
> execution." A thread that wants to examine the task list "locks" the list.
>
> This commit:
> http://www.read.cs.ucla.edu/gitweb?p=click;a=commit;h=ede0c6b0a1cface05e8d8e2e3496ee7fcd5ee143
> introduces separate APIs for locking the list and blocking task
> execution. Exclusive handlers block task execution, but do not lock the
> task list. I believe that task execution, in this patch, does not
> prevent preemption. I believe the locking works out too. User-level
> multithreading tests appear OK.
>
> Any willing stresstesters? Pretty please? :)
>
> Eddie
> _______________________________________________
> click mailing list
> click at amsterdam.lcs.mit.edu
> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>
More information about the click
mailing list