WARN_ON_ONCE() in process_one_work()?

From: Paul E. McKenney
Date: Wed Jun 20 2018 - 15:27:15 EST


Hello!

I have hit this WARN_ON_ONCE() in process_one_work:

WARN_ON_ONCE(!(pool->flags & POOL_DISASSOCIATED) &&
raw_smp_processor_id() != pool->cpu);

This looks like it is my rcu_gp workqueue (see splat below), and it
appears to be intermittent. This happens on rcutorture scenario SRCU-N,
which does random CPU-hotplug operations (in case that helps).

Is this related to the recent addition of WQ_MEM_RECLAIM? Either way,
what should I do to further debug this?

Thanx, Paul

[ 828.791694] WARNING: CPU: 2 PID: 3 at /home/paulmck/public_git/linux-rcu/kernel/workqueue.c:2069 process_one_work+0x49/0x3c0
[ 828.794850] Modules linked in:
[ 828.795748] CPU: 2 PID: 3 Comm: rcu_gp Not tainted 4.18.0-rc1+ #1
[ 828.797436] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014
[ 828.800059] Workqueue: (null) (rcu_gp)
[ 828.801373] RIP: 0010:process_one_work+0x49/0x3c0
[ 828.802690] Code: 00 00 00 00 4c 0f 44 e0 49 8b 44 24 08 44 8b a8 00 01 00 00 41 83 e5 20 f6 45 10 04 75 0e 65 8b 05 6c 99 79 68 3b 45 04 74 02 <0f> 0b 48 ba eb 83 b5 80 46 86 c8 61 48 0f af d6 48 c1 ea 3a 48 8b
[ 828.807871] RSP: 0000:ffff8a3c400e7e70 EFLAGS: 00010002
[ 828.809314] RAX: 0000000000000002 RBX: ffff88acdfc206e0 RCX: ffff88acdfc206e0
[ 828.811307] RDX: ffff88acdfc206d8 RSI: ffff88acdfc197b8 RDI: ffff88acde80c6c0
[ 828.813253] RBP: ffff88acdfc206c0 R08: 0000000000000000 R09: 0000000000000000
[ 828.815239] R10: ffff8a3c400e7e48 R11: 0000000000000000 R12: ffff88acdfc24900
[ 828.817073] R13: 0000000000000000 R14: ffff88acde80c6c0 R15: ffff88acde80c6e8
[ 828.819071] FS: 0000000000000000(0000) GS:ffff88acdfd00000(0000) knlGS:0000000000000000
[ 828.821361] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 828.822971] CR2: 00000000000000b0 CR3: 000000001040a000 CR4: 00000000000006e0
[ 828.824935] Call Trace:
[ 828.825653] rescuer_thread+0x201/0x320
[ 828.826744] kthread+0xf3/0x130
[ 828.827618] ? process_one_work+0x3c0/0x3c0
[ 828.828758] ? kthread_destroy_worker+0x40/0x40
[ 828.830019] ret_from_fork+0x35/0x40
[ 828.831028] ---[ end trace 4197eb078bf0edac ]---