PANIC: freebsd-10-stable - acquiring blockable sleep lock with spinlock or critical section held (sleep mutex) Giant @ /usr/src/sys/dev/usb/input/ukbd.c:1929

From: Oliver Pinter <oliver.pntr_at_gmail.com>
Date: Mon, 10 Mar 2014 00:45:43 +0100
Hi All!

I have this kernel panic:

Unread portion of the kernel message buffer:
<118>[1212013] Mar  9 21:44:10 pandora-d syslogd: exiting on signal 15
[1212048] Waiting (max 60 seconds) for system process `vnlru' to stop...done
[1212048] panic: acquiring blockable sleep lock with spinlock or
critical section held (sleep mutex) Giant _at_
/usr/src/sys/dev/usb/input/ukbd.c:1929
[1212048] cpuid = 0
[1212048] KDB: stack backtrace:
[1212048] db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame
0xfffffe0237bcb470
[1212048] kdb_backtrace() at kdb_backtrace+0x39/frame 0xfffffe0237bcb520
[1212048] vpanic() at vpanic+0x127/frame 0xfffffe0237bcb560
[1212048] kassert_panic() at kassert_panic+0x136/frame 0xfffffe0237bcb5d0
[1212048] witness_checkorder() at witness_checkorder+0xfe/frame
0xfffffe0237bcb660
[1212048] __mtx_lock_flags() at __mtx_lock_flags+0xa9/frame 0xfffffe0237bcb6b0
[1212048] ukbd_ioctl() at ukbd_ioctl+0x7a/frame 0xfffffe0237bcb6f0
[1212048] kbdmux_ioctl() at kbdmux_ioctl+0x76c/frame 0xfffffe0237bcb740
[1212048] sc_cnputc() at sc_cnputc+0x90/frame 0xfffffe0237bcb770
[1212048] cnputc() at cnputc+0x7f/frame 0xfffffe0237bcb7a0
[1212048] cnputs() at cnputs+0x58/frame 0xfffffe0237bcb7c0
[1212048] vprintf() at vprintf+0x9a/frame 0xfffffe0237bcb890
[1212048] printf() at printf+0x43/frame 0xfffffe0237bcb8f0
[1212048] kproc_shutdown() at kproc_shutdown+0x3a/frame 0xfffffe0237bcb910
[1212048] kern_reboot() at kern_reboot+0x11e/frame 0xfffffe0237bcb980
[1212048] sys_reboot() at sys_reboot+0x58/frame 0xfffffe0237bcb9a0
[1212048] amd64_syscall() at amd64_syscall+0x239/frame 0xfffffe0237bcbab0
[1212048] Xfast_syscall() at Xfast_syscall+0xfb/frame 0xfffffe0237bcbab0
[1212048] --- syscall (55, FreeBSD ELF64, sys_reboot), rip =
0x8014f470c, rsp = 0x7fffffffbe88, rbp = 0x7fffffffbff0 ---
[1212048] KDB: enter: panic
[1212048] Uptime: 14d0h40m48s
[1212048] Dumping 941 out of 8125
MB:..2%..11%..21%..31%..41%..51%..62%..72%..82%..91%

#0  doadump (textdump=1) at pcpu.h:219
219     pcpu.h: No such file or directory.
        in pcpu.h
(kgdb) #0  doadump (textdump=1) at pcpu.h:219
#1  0xffffffff804b71e7 in kern_reboot (howto=260)
    at /usr/src/sys/kern/kern_shutdown.c:452
#2  0xffffffff804b76f6 in vpanic (fmt=<value optimized out>,
    ap=<value optimized out>) at /usr/src/sys/kern/kern_shutdown.c:759
#3  0xffffffff804b7586 in kassert_panic (fmt=<value optimized out>)
    at /usr/src/sys/kern/kern_shutdown.c:647
#4  0xffffffff80507d4e in witness_checkorder (lock=0xffffffff80d040e0,
    flags=9, file=0xffffffff807b074a "/usr/src/sys/dev/usb/input/ukbd.c",
    line=1929, interlock=0x0) at /usr/src/sys/kern/subr_witness.c:1073
#5  0xffffffff804a3279 in __mtx_lock_flags (c=0xffffffff80d040f8, opts=0,
    file=0xffffffff807b074a "/usr/src/sys/dev/usb/input/ukbd.c", line=1929)
    at /usr/src/sys/kern/kern_mutex.c:221
#6  0xffffffff8040ed7a in ukbd_ioctl (kbd=0xfffffe00010e6000, cmd=537152276,
    arg=0xfffffe0237bcb75c "\002") at /usr/src/sys/dev/usb/input/ukbd.c:1929
#7  0xffffffff803452cc in kbdmux_ioctl (kbd=<value optimized out>,
    arg=<value optimized out>) at /usr/src/sys/dev/kbdmux/kbdmux.c:1149
#8  0xffffffff803d1250 in sc_cnputc (cd=0x0, c=87)
    at /usr/src/sys/dev/syscons/syscons.c:3715
#9  0xffffffff8046e41f in cnputc () at /usr/src/sys/kern/kern_cons.c:476
#10 0xffffffff8046e6b8 in cnputs (p=<value optimized out>)
    at /usr/src/sys/kern/kern_cons.c:505
#11 0xffffffff804f3d6a in vprintf (fmt=<value optimized out>,
    ap=<value optimized out>) at /usr/src/sys/kern/subr_prf.c:402
#12 0xffffffff804f3cc3 in printf (fmt=0x0) at /usr/src/sys/kern/subr_prf.c:368
#13 0xffffffff804b778a in kproc_shutdown (arg=0xfffff800024504b8,
    howto=<value optimized out>) at /usr/src/sys/kern/kern_shutdown.c:807
#14 0xffffffff804b6b1e in kern_reboot (howto=0)
    at /usr/src/sys/kern/kern_shutdown.c:324
#15 0xffffffff804b69f8 in sys_reboot (td=<value optimized out>,
    uap=<value optimized out>) at /usr/src/sys/kern/kern_shutdown.c:196
#16 0xffffffff80703cb9 in amd64_syscall (td=0xfffff80178ebc920, traced=0)
    at subr_syscall.c:134
#17 0xffffffff806e89ab in Xfast_syscall ()
    at /usr/src/sys/amd64/amd64/exception.S:391
#18 0x00000008014f470c in ?? ()
Previous frame inner to this frame (corrupt stack?)
Current language:  auto; currently minimal
(kgdb)

the relevant source code is this:
(kgdb) f 6
#6  0xffffffff8040ed7a in ukbd_ioctl (kbd=0xfffffe00010e6000, cmd=537152276,
    arg=0xfffffe0237bcb75c "\002") at /usr/src/sys/dev/usb/input/ukbd.c:1929
1929                    UKBD_LOCK();
Current language:  auto; currently minimal
(kgdb) l
1924            case KDSETLED:
1925                    if (!mtx_owned(&Giant) && !SCHEDULER_STOPPED())
1926                            return (EDEADLK);       /* best I
could come up with */
1927                    /* FALLTHROUGH */
1928            default:
1929                    UKBD_LOCK();
1930                    result = ukbd_ioctl_locked(kbd, cmd, arg);
1931                    UKBD_UNLOCK();
1932                    return (result);
1933            }
(kgdb) up
#7  0xffffffff803452cc in kbdmux_ioctl (kbd=<value optimized out>,
    arg=<value optimized out>) at /usr/src/sys/dev/kbdmux/kbdmux.c:1149
1149                            (void)kbdd_ioctl(k->kbd, KDSKBSTATE, arg);
(kgdb) l
1144                    state->ks_state &= ~LOCK_MASK;
1145                    state->ks_state |= *(int *)arg;
1146
1147                    /* KDSKBSTATE on all slave keyboards */
1148                    SLIST_FOREACH(k, &state->ks_kbds, next)
1149                            (void)kbdd_ioctl(k->kbd, KDSKBSTATE, arg);
1150
1151                    KBDMUX_UNLOCK(state);
1152
1153                    return (kbdmux_ioctl(kbd, KDSETLED, arg));

This code introduced by this commit:
commit 7bd2d75f37bf175e19c8a11cd17e960b5186f779
Author: avg <avg_at_FreeBSD.org>
Date:   Wed Dec 21 11:49:33 2011 +0000

    ukbd: adjust for SCHEDULER_STOPPED() and overhaul locking code

The kernel compiled with this kernel config:
cpu             HAMMER
ident           OP-PERPETUA

options         HZ=100

makeoptions     DEBUG=-g                # Build kernel with gdb(1) debug symbols
makeoptions     MODULES_OVERRIDE="geom/geom_sched linux"

options         SCHED_ULE               # ULE scheduler
options         INET                    # InterNETworking
options         INET6                   # IPv6 communications protocols
options         TCP_OFFLOAD             # TCP offload
options         FFS                     # Berkeley Fast Filesystem
options         SOFTUPDATES             # Enable FFS soft updates support
options         UFS_ACL                 # Support for access control lists
options         UFS_DIRHASH             # Improve performance on big directories
options         UFS_EXTATTR
options         QUOTA                   # Enable disk quotas for UFS
options         PSEUDOFS                # Pseudo-filesystem framework
options         GEOM_PART_GPT           # GUID Partition Tables.
options         GEOM_RAID               # Soft RAID functionality.
options         GEOM_LABEL              # Provides labelization
options         COMPAT_FREEBSD32        # Compatible with i386 binaries
options         COMPAT_FREEBSD4         # Compatible with FreeBSD4
options         COMPAT_FREEBSD5         # Compatible with FreeBSD5
options         COMPAT_FREEBSD6         # Compatible with FreeBSD6
options         COMPAT_FREEBSD7         # Compatible with FreeBSD7
options         SCSI_DELAY=5000         # Delay (in ms) before probing SCSI
options         KTRACE                  # ktrace(1) support
options         STACK                   # stack(9) support
options         SYSVSHM                 # SYSV-style shared memory
options         SYSVMSG                 # SYSV-style message queues
options         SYSVSEM                 # SYSV-style semaphores
options         _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time
extensions
options         PRINTF_BUFR_SIZE=128    # Prevent printf output being
interspersed.
options         KBD_INSTALL_CDEV        # install a CDEV entry in /dev
options         HWPMC_HOOKS             # Necessary kernel hooks for hwpmc(4)
options         AUDIT                   # Security event auditing
options         CAPABILITY_MODE         # Capsicum capability mode
options         CAPABILITIES            # Capsicum capabilities
options         PROCDESC                # Support for process descriptors
options         MAC                     # TrustedBSD MAC Framework
options         INCLUDE_CONFIG_FILE     # Include this file in kernel

options         KDB                     # Enable kernel debugger support.
options         KDB_TRACE               # Print a stack trace for a panic.
options         DDB                     # Support DDB.

options         SMP                     # Symmetric MultiProcessor Kernel

device          cpufreq

device          acpi
device          pci

device          ahci            # AHCI-compatible SATA controllers

device          scbus           # SCSI bus (required for ATA/SCSI)
device          da              # Direct Access (disks)
device          pass            # Passthrough device (direct ATA/SCSI access)
device          ses             # Enclosure Services (SES and SAF-TE)

device          atkbdc          # AT keyboard controller
device          atkbd           # AT keyboard
device          psm             # PS/2 mouse

device          kbdmux          # keyboard multiplexer

device          vga             # VGA video card driver
options         VESA            # Add support for VESA BIOS Extensions (VBE)

device          sc
options         SC_PIXEL_MODE   # add support for the raster text mode

device          agp             # support several AGP chipsets

device          uart            # Generic UART driver

device          em              # Intel PRO/1000 Gigabit Ethernet Family

device          miibus          # MII bus support
device          msk             # Marvell/SysKonnect Yukon II Gigabit Ethernet
device          sk              # SysKonnect SK-984x & SK-982x gigabit Ethernet

device          wlan            # 802.11 support
options         IEEE80211_DEBUG # enable debug msgs
options         IEEE80211_AMPDU_AGE # age frames in AMPDU reorder q's
options         IEEE80211_SUPPORT_MESH  # enable 802.11s draft support
device          wlan_wep        # 802.11 WEP support
device          wlan_ccmp       # 802.11 CCMP support
device          wlan_tkip       # 802.11 TKIP support
device          wlan_amrr       # AMRR transmit rate control algorithm
device          iwn             # Intel 4965/1000/5000/6000 wireless NICs.

device          loop            # Network loopback
device          random          # Entropy device
device          rdrand_rng      # Intel Bull Mountain RNG
device          ether           # Ethernet support
device          vlan            # 802.1Q VLAN support
device          tun             # Packet tunnel.
device          md              # Memory "disks"
device          gif             # IPv6 and IPv4 tunneling
device          faith           # IPv6-to-IPv4 relaying (translation)
device          firmware        # firmware assist module

device          bpf             # Berkeley packet filter

options         USB_DEBUG       # enable debug msgs
device          uhci            # UHCI PCI->USB interface
device          ohci            # OHCI PCI->USB interface
device          ehci            # EHCI PCI->USB interface (USB 2.0)
device          xhci            # XHCI PCI->USB interface (USB 3.0)
device          usb             # USB Bus (required)
device          ukbd            # Keyboard
device          ums             # Mouse

device          sound           # Generic sound driver (required)
device          snd_hda         # Intel High Definition Audio

device          coretemp
device          cpuctl

options         SC_DISABLE_REBOOT

options         UKBD_DFLT_KEYMAP
makeoptions     UKBD_DFLT_KEYMAP=us.pc-ctrl

options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=100
options         IPSTEALTH

device          crypto                  # core crypto support
device          cryptodev               # /dev/crypto for access to h/w
device          aesni

options         MALLOC_DEBUG_MAXZONES=8 # Separate malloc(9) zones

options         DEADLKRES               # Enable the deadlock resolver
options         INVARIANTS              # Enable calls of extra sanity c
options         INVARIANT_SUPPORT       # Extra sanity checks of interna
options         WITNESS                 # Enable checks to detect deadlo
options         WITNESS_SKIPSPIN        # Don't run witness on spinlocks

options         ALT_BREAK_TO_DEBUGGER
options         BREAK_TO_DEBUGGER
Received on Sun Mar 09 2014 - 22:45:44 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:47 UTC