Re: Crash in __wake_up_common
From: Peter Zijlstra
Date: Wed Apr 20 2016 - 05:41:30 EST
On Tue, Apr 19, 2016 at 05:37:48PM +0300, Nikolay Borisov wrote:
>
> ffffffff810e08be points to this line in __wake_up_common:
> list_for_each_entry_safe(curr, next, &q->task_list, task_list) {
>
> This is the wait_queue_head_t:
>
> crash> struct wait_queue_head_t ffff880438ef52c8
> struct wait_queue_head_t {
> lock = {
> {
> rlock = {
> raw_lock = {
> val = {
> counter = 1
> }
> }
> }
> }
> },
> task_list = {
> next = 0x0,
> prev = 0xffff880438ef52d8
> }
> }
>
> nr_exclusive seems to be 1, and mode is 3 (TASK_NORMAL).
>
> The spl module is coming from zfs(ZoL) but I dunno whether this might
> be a bug in the scheduler or in the zfs. The line which led to the
> __wake_up is this:
>
> wake_up(&tq->tq_wait_waitq);
Given that the waitqueue code is rather widely used, I suspect this is a
fail in zfs. But given the license issues I'm not going near that code.