Messages in this thread | | | Subject | Re: workqueue destruction BUG_ON | From | Johannes Berg <> | Date | Tue, 24 Aug 2010 15:17:45 +0200 |
| |
On Tue, 2010-08-24 at 15:07 +0200, Tejun Heo wrote:
> > [ 500.874185] ------------[ cut here ]------------ > > [ 500.875212] kernel BUG at kernel/workqueue.c:2849! > > Are you sure you're running the patched kernel? With the patch > applied, the BUG_ON() wouldn't be on line 2849 (on both rc1 and 2).
Yes:
void destroy_workqueue(struct workqueue_struct *wq) { unsigned int cpu; wq->flags |= WQ_DYING; flush_workqueue(wq); /* * wq list is used to freeze wq, remove from list after * flushing is complete in case freeze races us. */ spin_lock(&workqueue_lock); list_del(&wq->list); spin_unlock(&workqueue_lock);
/* sanity check */ for_each_cwq_cpu(cpu, wq) { struct cpu_workqueue_struct *cwq = get_cwq(cpu, wq); int i;
for (i = 0; i < WORK_NR_COLORS; i++) BUG_ON(cwq->nr_in_flight[i]); 2849: BUG_ON(cwq->nr_active); BUG_ON(!list_empty(&cwq->delayed_works));
Applying the patch reported some offset, but the kernel is just rc1 + wireless stuff.
johannes
| |