Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Jul 2013 00:09:30 -0400 (EDT)
From:      "Mikhail T." <mi@aldan.algebra.com>
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   kern/180824: Processes stuck in "msdosfs"
Message-ID:  <201307250409.r6P49Ukd008810@narawntapu.narawntapu>
Resent-Message-ID: <201307250410.r6P4A0s3005137@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         180824
>Category:       kern
>Synopsis:       Processes stuck in "msdosfs"
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Jul 25 04:10:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator:     Mikhail T.
>Release:        FreeBSD 9.1-STABLE amd64
>Organization:
Virtual Estates, Inc.	http://sybpipe.com/
>Environment:
System: FreeBSD narawntapu 9.1-STABLE FreeBSD 9.1-STABLE #0 r251264: Sun Jun 2 18:11:17 EDT 2013 root@narawntapu:/usr/obj/cache/src/sys/POWEREDGE2900 amd64

>Description:
	While manipulating files on a USB "stick" with MS-DOS filesystem
	on it, I suddenly got all of the programs "stuck". They are
	unkillable (not even with -9). As I type this, I have an
	instance of mv hanging:

	load: 2.42  cmd: mv 21640 [msdosfs] 1495.57r 0.03u 51.66s 0% 1404k

	and the same for my attempt to umount the FS:

	load: 1.99  cmd: umount 89290 [msdosfs] 2.71r 0.00u 0.37s 2% 1336k

	procstat output is thus:
root@narawntapu:/home/mi (810) procstat 21640
  PID  PPID  PGID   SID  TSID THR LOGIN    WCHAN     EMUL          COMM
     
21640  2042 21640  2042  2042   1 mi       msdosfs   FreeBSD ELF64 mv
     
root@narawntapu:/home/mi (811) procstat -k 21640
  PID    TID COMM             TDNAME           KSTACK
  
21640 100399 mv               -                mi_switch sleepq_wait
__lockmgr_args vop_stdlock VOP_LOCK1_APV _vn_lock relookup
msdosfs_rename VOP_RENAME_APV kern_renameat amd64_syscall Xfast_syscall 
root@narawntapu:/home/mi (812) procstat -kk 21640
  PID    TID COMM             TDNAME           KSTACK
  
21640 100399 mv               -                mi_switch+0x194
sleepq_wait+0x3b __lockmgr_args+0x58d vop_stdlock+0x39
VOP_LOCK1_APV+0x7b _vn_lock+0x44 relookup+0x49 msdosfs_rename+0x451
VOP_RENAME_APV+0x7b kern_renameat+0x4dd amd64_syscall+0x5f6
Xfast_syscall+0xf7 

	According to kgdb the proc structure looks as follows:

	% ps -o paddr  21640
	           PADDR
	fffffe01cf4e5000
	% kgdb
	.....
	(kgdb) p *(struct proc *)fffffe01cf4e5000
$1 = {p_list = {le_next = 0xfffffe00bbeb24a8, le_prev = 0xfffffe01435bd4a8}, 
p_threads = {tqh_first = 0xfffffe022c2b2920, tqh_last = 0xfffffe022c2b2930}, 
p_slock = {lock_object = {lo_name = 0xffffffff80a5e1b8 "process slock", 
lo_flags = 720896, lo_data = 0, lo_witness = 0x0}, mtx_lock = 4}, 
p_ucred = 0xfffffe0054fb3200, p_fd = 0xfffffe0079996800, p_fdtol = 0x0, 
p_stats = 0xfffffe0054542c00, p_limit = 0xfffffe010c31d100, p_limco = {
c_links = {sle = {sle_next = 0x0}, tqe = {tqe_next = 0x0, 
tqe_prev = 0x0}}, c_time = 0, c_arg = 0x0, c_func = 0, 
c_lock = 0xfffffe01cf4e50f8, c_flags = 0, c_cpu = 0}, 
p_sigacts = 0xfffffe0295353000, p_flag = 268451842, p_state = PRS_NORMAL, 
p_pid = 21640, p_hash = {le_next = 0x0, le_prev = 0xffffff800068a440},
  p_pglist = {le_next = 0x0, le_prev = 0xfffffe0070ffe890}, 
  p_pptr = 0xfffffe01264c64a8, p_sibling = {le_next = 0xfffffe01264d2000, 
    le_prev = 0xfffffe01264c6598}, p_children = {lh_first = 0x0}, p_mtx = {
    lock_object = {lo_name = 0xffffffff80a5e1ab "process lock", 
      lo_flags = 21168128, lo_data = 0, lo_witness = 0x0}, mtx_lock = 4}, 
  p_ksi = 0xfffffe00093980e0, p_sigqueue = {sq_signals = {__bits = {262, 0, 0, 
        0}}, sq_kill = {__bits = {256, 0, 0, 0}}, sq_list = {
      tqh_first = 0xfffffe02dec9e0e0, tqh_last = 0xfffffe0009394310},
sq_proc = 0xfffffe01cf4e5000, sq_flags = 1}, p_oppid = 0, 
  p_pad_dbg_child = 0, p_vmspace = 0xfffffe009358b310, p_swtick = 794021347, 
  p_realtimer = {it_interval = {tv_sec = 0, tv_usec = 0}, it_value = {
      tv_sec = 0, tv_usec = 0}}, p_ru = {ru_utime = {tv_sec = 0, tv_usec = 0}, 
    ru_stime = {tv_sec = 0, tv_usec = 0}, ru_maxrss = 0, ru_ixrss = 0, 
    ru_idrss = 0, ru_isrss = 0, ru_minflt = 0, ru_majflt = 0, ru_nswap = 0, 
    ru_inblock = 0, ru_oublock = 0, ru_msgsnd = 0, ru_msgrcv = 0, 
    ru_nsignals = 0, ru_nvcsw = 0, ru_nivcsw = 0}, p_rux = {
    rux_runtime = 154739063376, rux_uticks = 5, rux_sticks = 6530, 
    rux_iticks = 0, rux_uu = 39562, rux_su = 51668365, rux_tu = 51707928}, 
  p_crux = {rux_runtime = 0, rux_uticks = 0, rux_sticks = 0, rux_iticks = 0, 
    rux_uu = 0, rux_su = 0, rux_tu = 0}, p_profthreads = 0, p_exitthreads = 0, 
  p_traceflag = 0, p_tracevp = 0x0, p_tracecred = 0x0, 
  p_textvp = 0xfffffe02186dc5e8, p_lock = 0, p_sigiolst = {slh_first = 0x0}, 
  p_sigparent = 20, p_sig = 0, p_code = 0, p_stops = 0, p_stype = 0, 
  p_step = 0 '\0', p_pfsflags = 0 '\0', p_nlminfo = 0x0, p_aioinfo = 0x0, 
  p_singlethread = 0x0, p_suspcount = 0, p_xthread = 0x0, 
  p_boundary_count = 0, p_pendingcnt = 7, p_itimers = 0x0, p_procdesc = 0x0, 
  p_magic = 3203398350, p_osrel = 901504, 
  p_comm = "mv", '\0' <repeats 17 times>, p_pgrp = 0xfffffe0070ffe880, 
  p_sysent = 0xffffffff80db6fe0, p_args = 0x0, 
  p_cpulimit = 9223372036854775807, p_nice = 0 '\0', p_fibnum = 0, 
  p_xstat = 0, p_klist = {kl_list = {slh_first = 0x0}, 
    kl_lock = 0xffffffff8056f048 <knlist_mtx_lock>, 
    kl_unlock = 0xffffffff8056f018 <knlist_mtx_unlock>, 
    kl_assert_locked = 0xffffffff8056bf3a <knlist_mtx_assert_locked>, 
    kl_assert_unlocked = 0xffffffff8056bf40 <knlist_mtx_assert_unlocked>, 
    kl_lockarg = 0xfffffe01cf4e50f8}, p_numthreads = 1, p_md = {md_ldt = 0x0, 
    md_ldt_sd = {sd_lolimit = 0, sd_lobase = 0, sd_type = 0, sd_dpl = 0,
      sd_p = 0, sd_hilimit = 0, sd_xx0 = 0, sd_gran = 0, sd_hibase = 0, 
      sd_xx1 = 0, sd_mbz = 0, sd_xx2 = 0}}, p_itcallout = {c_links = {sle = {
        sle_next = 0x0}, tqe = {tqe_next = 0x0, tqe_prev = 0x0}}, c_time = 0, 
    c_arg = 0x0, c_func = 0, c_lock = 0xfffffe01cf4e50f8, c_flags = 0, 
    c_cpu = 0}, p_acflag = 0, p_peers = 0x0, p_leader = 0xfffffe01cf4e5000, 
  p_emuldata = 0xfffffe0156b49680, p_label = 0x0, 
  p_sched = 0xfffffe01cf4e54a8, p_ktr = {stqh_first = 0x0, 
    stqh_last = 0xfffffe01cf4e5438}, p_mqnotifier = {lh_first = 0x0}, 
  p_dtrace = 0xfffffe0246b6fcc0, p_pwait = {
    cv_description = 0xffffffff80a5e7b0 "ppwait", cv_waiters = 0}, 
  p_dbgwait = {cv_description = 0xffffffff80a5e7b7 "dbgwait", cv_waiters = 0}, 
  p_prev_runtime = 0, p_racct = 0x0, p_orphan = {le_next = 0x0, 
    le_prev = 0x0}, p_orphans = {lh_first = 0x0}, p_throttled = 0 '\0'}

Obviously, this is most unpleasant. Once this PR leaves my system, I'll
try to unplug the USB "stick"...

>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201307250409.r6P49Ukd008810>