Skip to content

Instantly share code, notes, and snippets.

@dvyukov
Created January 21, 2016 10:01
Show Gist options
  • Save dvyukov/428a0c9bfaa867d8ce84 to your computer and use it in GitHub Desktop.
Save dvyukov/428a0c9bfaa867d8ce84 to your computer and use it in GitHub Desktop.
[ 2688.712133] ======================================================
[ 2688.714127] [ INFO: possible circular locking dependency detected ]
[ 2688.714127] 4.4.0+ #273 Not tainted
[ 2688.714127] -------------------------------------------------------
[ 2688.719151] kworker/u10:4/6892 is trying to acquire lock:
[ 2688.719151] (routelock){+.+...}, at: [<ffffffff82d1e3e0>] n_tracerouter_receivebuf+0x20/0x40
[ 2688.719151]
[ 2688.719151] but task is already holding lock:
[ 2688.723409] (&buf->lock){+.+...}, at: [<ffffffff82d05a11>] flush_to_ldisc+0xe1/0x7f0
[ 2688.723409]
[ 2688.723409] which lock already depends on the new lock.
[ 2688.723409]
[ 2688.723409]
[ 2688.723409] the existing dependency chain (in reverse order) is:
[ 2688.723409]
-> #3 (&buf->lock){+.+...}:
[ 2688.723409] [<ffffffff8145a28c>] lock_acquire+0x1dc/0x430
[ 2688.723409] [<ffffffff8632fe9f>] _raw_spin_lock_irqsave+0x9f/0xd0
[ 2688.723409] [<ffffffff82ce3c40>] tty_get_pgrp+0x20/0x80
[ 2688.723409] [<ffffffff82cf230a>] __isig+0x1a/0x50
[ 2688.728344] [<ffffffff82cf43de>] isig+0xae/0x2c0
[ 2688.728344] [<ffffffff82cf7192>] n_tty_receive_signal_char+0x22/0xf0
[ 2688.728344] [<ffffffff82cfaefe>] n_tty_receive_char_special+0x126e/0x2b30
[ 2688.728344] [<ffffffff82cfe163>] n_tty_receive_buf_common+0x19a3/0x2400
[ 2688.728344] [<ffffffff82cfebf3>] n_tty_receive_buf2+0x33/0x40
[ 2688.728344] [<ffffffff82d05cef>] flush_to_ldisc+0x3bf/0x7f0
[ 2688.728344] [<ffffffff8139fd36>] process_one_work+0x796/0x1440
[ 2688.728344] 2016/01/21 03:56:29 executing program 1:
mmap(&(0x7f0000000000)=nil, (0x2000), 0x3, 0x32, 0xffffffffffffffff, 0x0)
setxattr(&(0x7f0000002000-0x7)="636f6e74726f6c", &(0x7f0000001000)="2b232c766d6e6574316d643573756d2f00", &(0x7f0000001000+0xc7f)="00", 0x1, 0x2)
r0 = fcntl$getown(0xffffffffffffff9c, 0x9)
ioprio_get$pid(0x1, r0)
[<ffffffff813a0abb>] worker_thread+0xdb/0xfc0
[ 2688.738223] [<ffffffff813b423f>] kthread+0x23f/0x2d0
[ 2688.738223] [<ffffffff863308af>] ret_from_fork+0x3f/0x70
[ 2688.738223]
-> #2 (&o_tty->termios_rwsem/1){++++..}:
[ 2688.738223] [<ffffffff8145a28c>] lock_acquire+0x1dc/0x430
[ 2688.738223] [<ffffffff8632bc77>] down_read+0x47/0x60
[ 2688.738223] [<ffffffff82cfc84d>] n_tty_receive_buf_common+0x8d/0x2400
[ 2688.738223] [<ffffffff82cfebf3>] n_tty_receive_buf2+0x33/0x40
[ 2688.738223] [<ffffffff82d05cef>] flush_to_ldisc+0x3bf/0x7f0
[ 2688.738223] [<ffffffff8139fd36>] process_one_work+0x796/0x1440
[ 2688.738223] [<ffffffff813a0abb>] worker_thread+0xdb/0xfc0
[ 2688.738223] [<ffffffff813b423f>] kthread+0x23f/0x2d0
[ 2688.738223] [<ffffffff863308af>] ret_from_fork+0x3f/0x70
[ 2688.738223]
-> #1 (&port->buf.lock/1){+.+...}:
[ 2688.738223] [<ffffffff8145a28c>] lock_acquire+0x1dc/0x430
[ 2688.738223] [<ffffffff86326831>] mutex_lock_nested+0xb1/0xa50
[ 2688.738223] [<ffffffff82d1e41f>] n_tracerouter_open+0x1f/0x210
[ 2688.738223] [<ffffffff82d033a8>] tty_ldisc_open.isra.2+0x78/0xd0
[ 2688.738223] [<ffffffff82d03992>] tty_set_ldisc+0x292/0x8a0
[ 2688.738223] [<ffffffff82cec5ee>] tty_ioctl+0xb2e/0x2160
[ 2688.738223] [<ffffffff817ebfbc>] do_vfs_ioctl+0x18c/0xfb0
[ 2688.738223] [<ffffffff817ece6f>] SyS_ioctl+0x8f/0xc0
[ 2688.738223] [<ffffffff863304f6>] entry_SYSCALL_64_fastpath+0x16/0x7a
[ 2688.738223]
-> #0 (routelock){+.+...}:
[ 2688.738223] [<ffffffff8145692b>] __lock_acquire+0x31eb/0x4700
[ 2688.738223] [<ffffffff8145a28c>] lock_acquire+0x1dc/0x430
[ 2688.738223] [<ffffffff86326831>] mutex_lock_nested+0xb1/0xa50
[ 2688.738223] [<ffffffff82d1e3e0>] n_tracerouter_receivebuf+0x20/0x40
[ 2688.738223] [<ffffffff82d05eb4>] flush_to_ldisc+0x584/0x7f0
[ 2688.738223] [<ffffffff8139fd36>] process_one_work+0x796/0x1440
[ 2688.738223] [<ffffffff813a0abb>] worker_thread+0xdb/0xfc0
[ 2688.738223] [<ffffffff813b423f>] kthread+0x23f/0x2d0
[ 2688.738223] [<ffffffff863308af>] ret_from_fork+0x3f/0x70
[ 2688.738223]
[ 2688.738223] other info that might help us debug this:
[ 2688.738223]
[ 2688.738223] Chain exists of:
routelock --> &o_tty->termios_rwsem/1 --> &buf->lock
[ 2688.738223] Possible unsafe locking scenario:
[ 2688.738223]
[ 2688.738223] CPU0 CPU1
[ 2688.738223] ---- ----
[ 2688.738223] lock(&buf->lock);
[ 2688.738223] lock(&o_tty->termios_rwsem/1);
[ 2688.738223] lock(&buf->lock);
[ 2688.738223] lock(routelock);
[ 2688.738223]
[ 2688.738223] *** DEADLOCK ***
[ 2688.738223]
[ 2688.738223] 4 locks held by kworker/u10:4/6892:
[ 2688.738223] #0: ("events_unbound"){.+.+.+}, at: [<ffffffff8139fc3a>] process_one_work+0x69a/0x1440
[ 2688.738223] #1: ((&buf->work)){+.+...}, at: [<ffffffff8139fc6a>] process_one_work+0x6ca/0x1440
[ 2688.738223] #2: (&tty->ldisc_sem){++++++}, at: [<ffffffff82d02dcb>] tty_ldisc_ref+0x1b/0x80
[ 2688.738223] #3: (&buf->lock){+.+...}, at: [<ffffffff82d05a11>] flush_to_ldisc+0xe1/0x7f0
[ 2688.738223]
[ 2688.738223] stack backtrace:
[ 2688.738223] CPU: 3 PID: 6892 Comm: kworker/u10:4 Not tainted 4.4.0+ #273
[ 2688.738223] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
[ 2688.738223] Workqueue: events_unbound flush_to_ldisc
[ 2688.738223] 00000000ffffffff ffff880044b277d0 ffffffff8299464d ffffffff88fb0dd0
[ 2688.738223] ffffffff88ff3a00 ffffffff88fad620 ffff880044b27820 ffffffff8144fb58
[ 2688.738223] ffff8800572697c0 ffff88005726a082 0000000000000000 ffff88005726a060
[ 2688.738223] Call Trace:
[ 2688.738223] [<ffffffff8299464d>] dump_stack+0x6f/0xa2
[ 2688.738223] [<ffffffff8144fb58>] print_circular_bug+0x288/0x340
[ 2688.738223] [<ffffffff8145692b>] __lock_acquire+0x31eb/0x4700
[ 2688.738223] [<ffffffff814545e9>] ? __lock_acquire+0xea9/0x4700
[ 2688.738223] [<ffffffff81453740>] ? debug_check_no_locks_freed+0x3c0/0x3c0
[ 2688.738223] [<ffffffff81453740>] ? debug_check_no_locks_freed+0x3c0/0x3c0
[ 2688.738223] [<ffffffff8145a28c>] lock_acquire+0x1dc/0x430
[ 2688.738223] [<ffffffff82d1e3e0>] ? n_tracerouter_receivebuf+0x20/0x40
[ 2688.738223] [<ffffffff86326831>] mutex_lock_nested+0xb1/0xa50
[ 2688.738223] [<ffffffff82d1e3e0>] ? n_tracerouter_receivebuf+0x20/0x40
[ 2688.738223] [<ffffffff81452edd>] ? trace_hardirqs_on+0xd/0x10
[ 2688.738223] [<ffffffff86326780>] ? mutex_lock_interruptible_nested+0xbe0/0xbe0
[ 2688.738223] [<ffffffff86326780>] ? mutex_lock_interruptible_nested+0xbe0/0xbe0
[ 2688.738223] [<ffffffff82d1e3c0>] ? n_tracerouter_write+0x20/0x20
[ 2688.738223] [<ffffffff82d1e3e0>] n_tracerouter_receivebuf+0x20/0x40
[ 2688.738223] [<ffffffff82d05eb4>] flush_to_ldisc+0x584/0x7f0
[ 2688.738223] [<ffffffff82d05930>] ? tty_buffer_unlock_exclusive+0x120/0x120
[ 2688.738223] [<ffffffff8139fd36>] process_one_work+0x796/0x1440
[ 2688.738223] [<ffffffff8139fc6a>] ? process_one_work+0x6ca/0x1440
[ 2688.738223] [<ffffffff8139f5a0>] ? pwq_dec_nr_in_flight+0x2e0/0x2e0
[ 2688.738223] [<ffffffff813a0abb>] worker_thread+0xdb/0xfc0
[ 2688.738223] [<ffffffff86320604>] ? __schedule+0x964/0x1c50
[ 2688.738223] [<ffffffff8632ffd1>] ? _raw_spin_unlock_irqrestore+0x31/0xc0
[ 2688.738223] [<ffffffff813b423f>] kthread+0x23f/0x2d0
[ 2688.738223] [<ffffffff813a09e0>] ? process_one_work+0x1440/0x1440
[ 2688.738223] [<ffffffff813b4000>] ? kthread_create_on_node+0x3b0/0x3b0
[ 2688.738223] [<ffffffff813b4000>] ? kthread_create_on_node+0x3b0/0x3b0
[ 2688.738223] [<ffffffff863308af>] ret_from_fork+0x3f/0x70
[ 2688.738223] [<ffffffff813b4000>] ? kthread_create_on_node+0x3b0/0x3b0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment