Re: [sched/core] 8a8c69c327: WARNING: CPU: 0 PID: 8 at kernel/locking/lockdep.c:3548 lock_release

From: Wanpeng Li
Date: Fri Mar 17 2017 - 09:03:57 EST


2017-03-17 4:02 GMT+08:00 kernel test robot <fengguang.wu@xxxxxxxxx>:
> Greetings,
>
> 0day kernel testing robot got the below dmesg and the first bad commit is
>
> https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched/core
>
> commit 8a8c69c32778865affcedc2111bb5d938b50516f
> Author: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> AuthorDate: Tue Oct 4 16:04:35 2016 +0200
> Commit: Ingo Molnar <mingo@xxxxxxxxxx>
> CommitDate: Thu Mar 16 09:46:22 2017 +0100
>
> sched/core: Add rq->lock wrappers
>
> The missing update_rq_clock() check can work with partial rq->lock
> wrappery, since a missing wrapper can cause the warning to not be
> emitted when it should have, but cannot cause the warning to trigger
> when it should not have.
>
> The duplicate update_rq_clock() check however can cause false warnings
> to trigger. Therefore add more comprehensive rq->lock wrappery.
>
> Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
> Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
> Cc: Mike Galbraith <efault@xxxxxx>
> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx>

Please refer to: https://lkml.org/lkml/2017/3/16/1131

Regards,
Wanpeng Li

>
> 26ae58d23b sched/core: Add WARNING for multiple update_rq_clock() calls
> 8a8c69c327 sched/core: Add rq->lock wrappers
> 15ff991e80 sched/core: Avoid double update_rq_clock() in move_queued_task()
> 69f0dcef5b Merge branch 'timers/urgent'
> +------------------------------------------------------+------------+------------+------------+------------+
> | | 26ae58d23b | 8a8c69c327 | 15ff991e80 | 69f0dcef5b |
> +------------------------------------------------------+------------+------------+------------+------------+
> | boot_successes | 39 | 6 | 7 | 5 |
> | boot_failures | 0 | 10 | 9 | 9 |
> | WARNING:at_kernel/locking/lockdep.c:#lock_release | 0 | 10 | 9 | 9 |
> | WARNING:at_kernel/locking/lockdep.c:#lock_unpin_lock | 0 | 10 | 9 | 9 |
> +------------------------------------------------------+------------+------------+------------+------------+
>
> [main] Setsockopt(1 28 68b000 4) on fd 376 [16:3:0]
> [main] Setsockopt(1 b 68b000 fc) on fd 377 [1:2:1]
> [main] Setsockopt(1 e 68b000 f2) on fd 381 [1:2:1]
> [main] 375 sockets created based on info from socket cachefile.
> [ 17.557099] ------------[ cut here ]------------
> [ 17.557589] WARNING: CPU: 0 PID: 8 at kernel/locking/lockdep.c:3548 lock_release+0x302/0x550
> [ 17.558684] releasing a pinned lock
> [ 17.559073] Modules linked in:
> [ 17.559412] CPU: 0 PID: 8 Comm: rcu_sched Not tainted 4.11.0-rc2-00217-g8a8c69c #5
> [ 17.560228] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.9.3-20161025_171302-gandalf 04/01/2014
> [ 17.561316] Call Trace:
> [ 17.561590] dump_stack+0x86/0xc1
> [ 17.561946] __warn+0xbb/0xe0
> [ 17.562259] ? push_rt_task+0xec/0x2b0
> [ 17.562649] warn_slowpath_fmt+0x4a/0x50
> [ 17.563062] ? sched_clock+0x9/0x10
> [ 17.563426] lock_release+0x302/0x550
> [ 17.563807] _raw_spin_unlock+0x1a/0x40
> [ 17.564213] push_rt_task+0xec/0x2b0
> [ 17.564585] push_rt_tasks+0x10/0x20
> [ 17.564969] __balance_callback+0x7e/0x90
> [ 17.565403] __schedule+0x55d/0x660
> [ 17.565784] schedule+0x23/0x40
> [ 17.566136] rcu_gp_kthread+0xae/0xa50
> [ 17.566544] kthread+0x125/0x130
> [ 17.566904] ? force_qs_rnp+0x1f0/0x1f0
> [ 17.567320] ? __kthread_bind_mask+0x70/0x70
> [ 17.567780] ret_from_fork+0x31/0x40
> [ 17.568190] ---[ end trace a3dc39f9b76a0708 ]---
> [ 17.568764] ------------[ cut here ]------------
> [ 17.568764] ------------[ cut here ]------------
> [ 17.569251] WARNING: CPU: 0 PID: 8 at kernel/locking/lockdep.c:3670 lock_unpin_lock+0xcd/0x140
> [ 17.570311] unpinning an unpinned lock
> [ 17.570696] Modules linked in:
> [ 17.571022] CPU: 0 PID: 8 Comm: rcu_sched Tainted: G W 4.11.0-rc2-00217-g8a8c69c #5
> [ 17.571933] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.9.3-20161025_171302-gandalf 04/01/2014
> [ 17.573011] Call Trace:
> [ 17.573284] dump_stack+0x86/0xc1
> [ 17.573644] __warn+0xbb/0xe0
> [ 17.573975] warn_slowpath_fmt+0x4a/0x50
> [ 17.574398] lock_unpin_lock+0xcd/0x140
> [ 17.574811] __balance_callback+0x55/0x90
> [ 17.575241] __schedule+0x55d/0x660
> [ 17.575604] schedule+0x23/0x40
> [ 17.575939] rcu_gp_kthread+0xae/0xa50
> [ 17.576327] kthread+0x125/0x130
> [ 17.576663] ? force_qs_rnp+0x1f0/0x1f0
> [ 17.577064] ? __kthread_bind_mask+0x70/0x70
> [ 17.577503] ret_from_fork+0x31/0x40
> [ 17.577885] ---[ end trace a3dc39f9b76a0709 ]---
> [main] Generating file descriptors
>
> # HH:MM RESULT GOOD BAD GOOD_BUT_DIRTY DIRTY_NOT_BAD
> git bisect start 6b636a485c6caff6e9b24011298eafba3ca2a8ee 4495c08e84729385774601b5146d51d9e5849f81 --
> git bisect bad 55bc6d7f980cff4f3c64a8bb68dbcc8f21bf6c6d # 01:11 B 0 12 23 0 Merge 'input/master' into devel-spot-201703162058
> git bisect bad b5a68e900a6fef3d4bfba66492870fc8a9716b29 # 01:31 B 0 1 12 0 Merge 'usb/usb-testing' into devel-spot-201703162058
> git bisect bad fc33633bf286c6dd7034b68da01d29734b597494 # 01:41 B 3 8 0 2 Merge 'pza/imx-drm/next' into devel-spot-201703162058
> git bisect bad 90e002d71f66656e07086db304de3cc47db8f648 # 02:00 B 3 9 0 0 Merge 'tip/sched/core' into devel-spot-201703162058
> git bisect good 656fda9ce4b5c22bc3dc0d5f02d49413aa8b6d13 # 02:10 G 12 0 0 0 Merge 'tip/locking/urgent' into devel-spot-201703162058
> git bisect good 501434c37e631976e649a83a7c931e0f326ce580 # 02:20 G 12 0 0 0 Merge 'tip/x86/mm' into devel-spot-201703162058
> git bisect good a911686589f1804905e99a290e7505e2b77b57d5 # 02:34 G 12 0 0 0 Merge 'tip/sched/urgent' into devel-spot-201703162058
> git bisect bad 7134b3e941613dcb959b4b178cc4a35e45cbbc0d # 02:46 B 3 9 0 0 sched/core: Add ENQUEUE_NOCLOCK to ENQUEUE_RESTORE
> git bisect good 26ae58d23b94a075ae724fd18783a3773131cfbc # 02:57 G 12 0 0 0 sched/core: Add WARNING for multiple update_rq_clock() calls
> git bisect bad 0a67d1ee30ef1efe6a412b3590e08734902aed43 # 03:09 B 0 8 19 0 sched/core: Add {EN,DE}QUEUE_NOCLOCK flags
> git bisect bad 8a8c69c32778865affcedc2111bb5d938b50516f # 03:18 B 3 4 0 1 sched/core: Add rq->lock wrappers
> # first bad commit: [8a8c69c32778865affcedc2111bb5d938b50516f] sched/core: Add rq->lock wrappers
> git bisect good 26ae58d23b94a075ae724fd18783a3773131cfbc # 03:26 G 33 0 0 0 sched/core: Add WARNING for multiple update_rq_clock() calls
> # extra tests with CONFIG_DEBUG_INFO_REDUCED
> git bisect bad 8a8c69c32778865affcedc2111bb5d938b50516f # 03:38 B 2 7 0 0 sched/core: Add rq->lock wrappers
> # extra tests on HEAD of linux-devel/devel-spot-201703162058
> git bisect bad 6b636a485c6caff6e9b24011298eafba3ca2a8ee # 03:38 B 2 13 0 2 0day head guard for 'devel-spot-201703162058'
> # extra tests on tree/branch tip/sched/core
> git bisect bad 15ff991e8047561bb4a4e800ec60f60939be5fd4 # 03:50 B 5 7 0 1 sched/core: Avoid double update_rq_clock() in move_queued_task()
> # extra tests on tree/branch tip/master
> git bisect bad 69f0dcef5b048e05c7dd0818dd746cc2a6840aa1 # 04:02 B 5 9 0 0 Merge branch 'timers/urgent'
>
> ---
> 0-DAY kernel test infrastructure Open Source Technology Center
> https://lists.01.org/pipermail/lkp Intel Corporation