Hi, I am new at kernel programming. I have written a driver for a custom device, running on arm board. It works well (for last few months). I happen to look at kernel logs and I seen, [231250.894334] ------------[ cut here ]------------ [231250.899146] WARNING: at kernel/workqueue.c:1953 process_one_work+0x398/0x52c() [231250.906491] Modules linked in: bcmdhd cfg80211 <XYZ> [231250.911885] [<c0016450>] (unwind_backtrace+0x0/0x144) from [<c05c04f0>] (dump_stack+0x20/0x24) [231250.920672] [<c05c04f0>] (dump_stack+0x20/0x24) from [<c006c330>] (warn_slowpath_common+0x5c/0x74) [231250.929757] [<c006c330>] (warn_slowpath_common+0x5c/0x74) from [<c006c374>] (warn_slowpath_null+0x2c/0x34) [231250.939581] [<c006c374>] (warn_slowpath_null+0x2c/0x34) from [<c0088f08>] (process_one_work+0x398/0x52c) [231250.949232] [<c0088f08>] (process_one_work+0x398/0x52c) from [<c00895c8>] (rescuer_thread+0x184/0x230) [231250.958708] [<c00895c8>] (rescuer_thread+0x184/0x230) from [<c008dd60>] (kthread+0xac/0xb4) [231250.967236] [<c008dd60>] (kthread+0xac/0xb4) from [<c000fd4c>] (kernel_thread_exit+0x0/0x8) [231250.975755] ---[ end trace 9f9c2187c0bee21b ]--- The device is still working after this. No issues in operation. I am just sceptical about analyzing this issue? Do I need to check more? If yes how? with this trace? Thanks, Sagar
On 2014-10-08 12:43:58 (+0530), Sagar Padhye <sgr.m.pdy@gmail.com> wrote:
I am new at kernel programming. I have written a driver for a custom device, running on arm board. It works well (for last few months). I happen to look at kernel logs and I seen,
[231250.899146] WARNING: at kernel/workqueue.c:1953 process_one_work+0x398/0x52c()
You triggered a warning in the code.
The device is still working after this. No issues in operation. I am just sceptical about analyzing this issue? Do I need to check more? If yes how? with this trace?
Yes, this indicates a potential problem. You start my looking at line 1953 in kernel/workqueue.c, where you'll see which specific warning you're triggering. It's probably this one:
/* ensure we're on the correct CPU */ WARN_ON_ONCE(!(pool->flags & POOL_DISASSOCIATED) && raw_smp_processor_id() != pool->cpu);
Regards, Kristof
On Wed, Oct 08, 2014 at 11:33:57AM +0200, Kristof Provost wrote:
On 2014-10-08 12:43:58 (+0530), Sagar Padhye <sgr.m.pdy@gmail.com> wrote:
I am new at kernel programming. I have written a driver for a custom device, running on arm board. It works well (for last few months). I happen to look at kernel logs and I seen,
[231250.899146] WARNING: at kernel/workqueue.c:1953 process_one_work+0x398/0x52c()
You triggered a warning in the code. Yes, I got that
The device is still working after this. No issues in operation. I am just sceptical about analyzing this issue? Do I need to check more? If yes how? with this trace?
Yes, this indicates a potential problem. The issue is not reproducible. Haven't seen in over 6 months. And the module is working just fine after the log. Is there a way I can get more info on this e.g. more stacktrace that will end up in module's work function (if this occurs again)? You start my looking at line 1953 in kernel/workqueue.c, where you'll see which specific warning you're triggering.
It's probably this one:
/* ensure we're on the correct CPU */ WARN_ON_ONCE(!(pool->flags & POOL_DISASSOCIATED) && raw_smp_processor_id() != pool->cpu); They are, 1952 WARN_ON_ONCE(!(worker->flags & (WORKER_UNBOUND | WORKER_REBIND)) && 1953 raw_smp_processor_id() != gcwq->cpu); But I am not sure what they signify :(
Thanks, Sagar
participants (2)
-
Kristof Provost -
Sagar Padhye