Package: src:linux Version: 4.9.210-1 Severity: normal Dear Maintainer,
I performed umount on my system and it got stuck. Investigation findings: * umount was stuck in D state * after two minutes, there was a kernel message - "umount blocked for 120 seconds" * the process that caused the umount to stuck was: - running on an isolated CPU (no other processes were running on that CPU) - running in real time priority (SCHED_FIFO) - running from root I managed to create an easy reproduction: * created and mounted a loopback filesystem as follows: dd if=/dev/zero of=foodisk bs=1M count=10 mkfs.ext4 foodisk mkdir foodir mount foodisk foodir * compiled & run the attached program * performed "umount foodir" * wait... * when program is killed, umount is released Note - when trying to reproduce without the syslog call, issue didn't reproduce. I don't understand the correlation. Thanks, Roi -- Package-specific info: ** Version: Linux version 4.9.0-12-amd64 (debian-ker...@lists.debian.org) (gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) ) #1 SMP Debian 4.9.210-1 (2020-01-20) ** Command line: BOOT_IMAGE=/vmlinuz ro isolcpus=3 quiet init=/bin/systemd systemd.sysv_console=true systemd.show_status=yes ** Tainted: O (4096) * Out-of-tree module has been loaded. ** Kernel log: [ 108.864321] EXT4-fs (loop0): mounted filesystem with ordered data mode. Opts: (null) [ 364.235368] INFO: task umount:1302 blocked for more than 120 seconds. [ 364.236530] Tainted: G O 4.9.0-12-amd64 #1 Debian 4.9.210-1 [ 364.237682] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [ 364.238842] umount D 0 1302 1267 0x00000000 [ 364.238850] 0000000000000086 ffff8e9ab1e57400 0000000000000000 ffff8e8ab47f8140 [ 364.238855] ffff8e8abf218980 ffffffff85e11500 ffffb964ce97bc90 ffffffff858193f9 [ 364.238860] ffff8e8abf7989e8 00ffb964ce97bcc0 ffff8e8abf218980 000000000000732a [ 364.238865] Call Trace: [ 364.238877] [<ffffffff858193f9>] ? __schedule+0x239/0x6f0 [ 364.238881] [<ffffffff858198e2>] ? schedule+0x32/0x80 [ 364.238885] [<ffffffff8581cc7d>] ? schedule_timeout+0x1dd/0x380 [ 364.238890] [<ffffffff852b4a22>] ? enqueue_task_fair+0x82/0x940 [ 364.238894] [<ffffffff8581a321>] ? wait_for_completion+0xf1/0x130 [ 364.238899] [<ffffffff852a72d0>] ? wake_up_q+0x70/0x70 [ 364.238906] [<ffffffff852968fe>] ? flush_work+0x10e/0x1c0 [ 364.238910] [<ffffffff85292e60>] ? destroy_worker+0x80/0x80 [ 364.238916] [<ffffffff853970dd>] ? lru_add_drain_all+0x11d/0x160 [ 364.238925] [<ffffffff854497a1>] ? invalidate_bdev+0x21/0x40 [ 364.238973] [<ffffffffc02c755b>] ? ext4_put_super+0x1fb/0x3a0 [ext4] [ 364.238980] [<ffffffff8540ff6c>] ? generic_shutdown_super+0x6c/0xf0 [ 364.238984] [<ffffffff854102d1>] ? kill_block_super+0x21/0x60 [ 364.238988] [<ffffffff854103da>] ? deactivate_locked_super+0x3a/0x70 [ 364.238993] [<ffffffff8542f4fb>] ? cleanup_mnt+0x3b/0x80 [ 364.238998] [<ffffffff8529a2bf>] ? task_work_run+0x7f/0xa0 [ 364.239003] [<ffffffff85203754>] ? exit_to_usermode_loop+0xa4/0xb0 [ 364.239007] [<ffffffff85203bd9>] ? do_syscall_64+0xe9/0x100 [ 364.239011] [<ffffffff8581e1ce>] ? entry_SYSCALL_64_after_swapgs+0x58/0xc6 ** Model information sys_vendor: Intel Corporation product_name: S2600WT2R product_version: .................... chassis_vendor: ............................... chassis_version: .................. bios_vendor: Intel Corporation bios_version: SE5C610.86B.01.01.0016.C5.033120161139 board_vendor: Intel Corporation board_name: S2600WT2R board_version: H21573-365 ** USB devices: not available -- System Information: Debian Release: 9.12 APT prefers oldstable-updates APT policy: (500, 'oldstable-updates'), (500, 'oldstable') Architecture: amd64 (x86_64) Kernel: Linux 4.9.0-12-amd64 (SMP w/88 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US:en (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) Versions of packages linux-image-4.9.0-12-amd64 depends on: ii initramfs-tools [linux-initramfs-tool] 0.130 ii kmod 23-2 ii linux-base 4.5 Versions of packages linux-image-4.9.0-12-amd64 recommends: pn firmware-linux-free <none> pn irqbalance <none> Versions of packages linux-image-4.9.0-12-amd64 suggests: pn debian-kernel-handbook <none> ii grub-pc 2.02~beta3-5+deb9u2 pn linux-doc-4.9 <none> Versions of packages linux-image-4.9.0-12-amd64 is related to: pn firmware-amd-graphics <none> pn firmware-atheros <none> pn firmware-bnx2 <none> pn firmware-bnx2x <none> pn firmware-brcm80211 <none> pn firmware-cavium <none> pn firmware-intel-sound <none> pn firmware-intelwimax <none> pn firmware-ipw2x00 <none> pn firmware-ivtv <none> pn firmware-iwlwifi <none> pn firmware-libertas <none> pn firmware-linux-nonfree <none> pn firmware-misc-nonfree <none> pn firmware-myricom <none> pn firmware-netxen <none> pn firmware-qlogic <none> pn firmware-realtek <none> pn firmware-samsung <none> pn firmware-siano <none> pn firmware-ti-connectivity <none> pn xen-hypervisor <none> -- no debconf information
#include <iostream> #include <sched.h> #include <syslog.h> using namespace std; static const int isolCpuNum = 3; int main() { cout << "Starting do_nothing..." << endl; pid_t pid = 0; cpu_set_t mask; CPU_ZERO(&mask); CPU_SET(isolCpuNum, &mask); size_t cpusetsize = sizeof(mask); sched_setaffinity(pid, cpusetsize, &mask); int policy = SCHED_FIFO; sched_param param; param.sched_priority = 90; int ret_val = sched_setscheduler(pid, policy, ¶m); cout << "sched_setscheduler ret_val: " << ret_val << endl; syslog(LOG_NOTICE, "Hello World from do_nothing"); int count = 0; while (true) { if (count == 50000) count = 0; count++; } return 0; }