Messages in this thread | | | Date | Tue, 3 Jul 2018 09:40:44 -0700 | From | "Paul E. McKenney" <> | Subject | Re: WARN_ON_ONCE() in process_one_work()? |
| |
On Mon, Jul 02, 2018 at 09:05:18PM -0700, Paul E. McKenney wrote: > On Mon, Jul 02, 2018 at 02:05:40PM -0700, Tejun Heo wrote: > > Hello, Paul. > > > > Sorry about the late reply. > > > > On Wed, Jun 20, 2018 at 12:29:01PM -0700, Paul E. McKenney wrote: > > > 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? > > > > Hmm... I checked the code paths but couldn't spot anything suspicious. > > Can you please apply the following patch and see whether it triggers > > before hitting the warn and if so report what it says? > > I will apply this, but be advised that I have not seen that WARN_ON_ONCE() > trigger since. :-/
But I get a build error:
kernel/workqueue.o: In function `worker_attach_to_pool': workqueue.c:(.text+0x63c): undefined reference to `cpuhp_target_state' workqueue.c:(.text+0x647): undefined reference to `cpuhp_current_state' /home/paulmck/public_git/linux-rcu/Makefile:1015: recipe for target 'vmlinux' failed
My guess is that the worker_attach_to_pool() code needs to change so as to invoke cpuhp_current_state() and cpuhp_target_state() only in CONFIG_HOTPLUG_CPU=y kernels, but I figured I should defer to you.
Thanx, Paul
| |