Bug 228568

Summary: deadlock:kldunload radeonkms
Product: Base System Reporter: Eitan Adler <eadler>
Component: kernAssignee: freebsd-bugs (Nobody) <bugs>
Status: Open ---    
Severity: Affects Only Me CC: danfe, x11
Priority: --- Keywords: crash
Version: CURRENT   
Hardware: Any   
OS: Any   

Description Eitan Adler freebsd_committer freebsd_triage 2018-05-28 15:49:13 UTC
kldunload radeonkms.ko


Already logging to /home/eax/out.
#0  __curthread () at ./machine/pcpu.h:231
        td = <optimized out>
#1  doadump (textdump=0) at /usr/src/sys/kern/kern_shutdown.c:366
        error = <error reading variable error (Cannot access memory at address 0x0)>
        coredump = <optimized out>
#2  0xffffffff804350bb in db_dump (dummy=<optimized out>, dummy2=<unavailable>, dummy3=<unavailable>, dummy4=<unavailable>)
    at /usr/src/sys/ddb/db_command.c:574
        error = <optimized out>
#3  0xffffffff80434e7d in db_command (last_cmdp=<optimized out>, cmd_table=<optimized out>, dopager=<optimized out>) at /usr/src/sys/ddb/db_command.c:481
        modif =           ""
        have_addr = false
        t = <optimized out>
        result = <optimized out>
        cmd = 0xffffffff81a5ce20 <db_cmds+480>
        addr = <unavailable>
        count = <unavailable>
#4  0xffffffff80434c14 in db_command_loop () at /usr/src/sys/ddb/db_command.c:534
No locals.
#5  0xffffffff80437dff in db_trap (type=<optimized out>, code=<optimized out>) at /usr/src/sys/ddb/db_main.c:252
        jb =           {{
            _jb =               {-2195602762112,
              -2195602762120,
              -2195602761984,
              -2115128448,
              -2119837784,
              0,
              3,
              -2143060599,
              -2195602762016,
              -2137136836,
              -2116086448,
              0}
          }}
        bkpt = false
        watchpt = false
        prev_jb = 0x0
        why = <optimized out>
#6  0xffffffff80ba3923 in kdb_trap (type=3, code=0, tf=<optimized out>) at /usr/src/sys/kern/subr_kdb.c:697
        be = 0xffffffff81a5d7a8 <ddb_dbbe>
        intr = 70
        did_stop_cpus = <error reading variable did_stop_cpus (Cannot access memory at address 0x1)>
        handled = <optimized out>
        other_cpus = <optimized out>
#7  0xffffffff8101f881 in trap (frame=0xfffffe00cbe09890) at /usr/src/sys/amd64/amd64/trap.c:605
        td = 0xfffff8007d971000
        dr6 = 0
        addr = -2195602761584
        ucode = -2093870928
        signo = 0
        p = 0xfffffe00cbe09a00
        type = 3
        ksi = {
          ksi_link = {
            tqe_next = 0x20ffffff00000012, 
            tqe_prev = 0x0
          }, 
          ksi_info = {
            si_signo = -2109401424, 
            si_errno = -1, 
            si_code = 1839114452, 
            si_pid = 1576597013, 
            si_uid = 3420494512, 
            si_status = -512, 
            si_addr = 0x0, 
            si_value = {
              sival_int = -1019, 
              sival_ptr = 0xfffffc05, 
              sigval_int = -1019, 
              sigval_ptr = 0xfffffc05
            }, 
            _reason = {
              _fault = {
                _trapno = 0
              }, 
              _timer = {
                _timerid = 0, 
                _overrun = 0
              }, 
              _mesgq = {
                _mqd = 0
              }, 
              _poll = {
                _band = 0
              }, 
              __spare__ = {
                __spare1__ = 0, 
                __spare2__ =                   {-4096,
                  511,
                  -874473392,
                  -512,
                  -2143060083,
                  -1,
                  1839114452}
              }
            }
          }, 
          ksi_flags = -2127898362, 
          ksi_sigq = 0xfffff8045850b001
        }
#8  <signal handler called>
No locals.
#9  kdb_enter (why=0xffffffff812ad906 "panic", msg=<optimized out>) at /usr/src/sys/kern/subr_kdb.c:479
No locals.
#10 0xffffffff80b5c7a0 in vpanic (fmt=<optimized out>, ap=0xfffffe00cbe09a00) at /usr/src/sys/kern/kern_shutdown.c:852
        buf =           "deadlkres: possible deadlock detected for 0xfffff8045850b000, blocked for 200655 ticks\n"
        td = 0xfffff8007d971000
        bootopt = <error reading variable bootopt (Cannot access memory at address 0x4)>
        newpanic = <error reading variable newpanic (Cannot access memory at address 0x1)>
        other_cpus = <optimized out>
#11 0xffffffff80b5c833 in panic (fmt=0xffffffff81df1598 <cnputs_mtx> "\276\061'\201\377\377\377\377") at /usr/src/sys/kern/kern_shutdown.c:790
        ap =           {{
            gp_offset = 32, 
            fp_offset = 48, 
            overflow_arg_area = 0xfffffe00cbe09a30, 
            reg_save_area = 0xfffffe00cbe099d0
          }}
#12 0xffffffff80af5b17 in deadlkres () at /usr/src/sys/kern/kern_clock.c:244
        tryl = <optimized out>
        slpticks = 200000
        blkticks = 200000
        p = 0xfffff805ece59538
        td = <optimized out>
        wchan = <optimized out>
        tticks = 200655
        slptype = <optimized out>
        i = <error reading variable i (Cannot access memory at address 0x2)>
#13 0xffffffff80b1bfe4 in fork_exit (callout=0xffffffff80af57f0 <deadlkres>, arg=0x0, frame=0xfffffe00cbe09ac0) at /usr/src/sys/kern/kern_fork.c:1039
        td = 0xfffff8007d971000
        p = 0xffffffff82001e20 <proc0>
        dtd = <optimized out>
#14 <signal handler called>
No locals.

---

#13 0xffffffff80b1bfe4 in fork_exit (callout=0xffffffff80af57f0 <deadlkres>, arg=0x0, frame=0xfffffe00cbe09ac0) at /usr/src/sys/kern/kern_fork.c:1039
1039		callout(arg, frame);
$1 = {
  p_list = {
    le_next = 0x0, 
    le_prev = 0xfffff800036e7a70
  }, 
  p_threads = {
    tqh_first = 0xffffffff82002380 <thread0_st>, 
    tqh_last = 0xfffff80092cc3010
  }, 
  p_slock = {
    lock_object = {
      lo_name = 0xffffffff812a8a7f "process slock", 
      lo_flags = 196608, 
      lo_data = 0, 
      lo_witness = 0x0
    }, 
    mtx_lock = 0
  }, 
  p_ucred = 0xfffff800036aae00, 
  p_fd = 0xfffff800036d38a0, 
  p_fdtol = 0x0, 
  p_stats = 0xfffff800036dd000, 
  p_limit = 0xfffff800036d8000, 
  p_limco = {
    c_links = {
      le = {
        le_next = 0x0, 
        le_prev = 0x0
      }, 
      sle = {
        sle_next = 0x0
      }, 
      tqe = {
        tqe_next = 0x0, 
        tqe_prev = 0x0
      }
    }, 
    c_time = 0, 
    c_precision = 0, 
    c_arg = 0x0, 
    c_func = 0x0, 
    c_lock = 0xffffffff82001f40 <proc0+288>, 
    c_flags = 0, 
    c_iflags = 0, 
    c_cpu = 0
  }, 
  p_sigacts = 0xfffff800036cc000, 
  p_flag = 268436100, 
  p_flag2 = 0, 
  p_state = PRS_NORMAL, 
  p_pid = 0, 
  p_hash = {
    le_next = 0x0, 
    le_prev = 0xfffffe0000f81000
  }, 
  p_pglist = {
    le_next = 0xfffff8009f2ae538, 
    le_prev = 0xffffffff81df1380 <pgrp0+16>
  }, 
  p_pptr = 0x0, 
  p_sibling = {
    le_next = 0x0, 
    le_prev = 0x0
  }, 
  p_children = {
    lh_first = 0xfffff8009f2ae538
  }, 
  p_reaper = 0xffffffff82001e20 <proc0>, 
  p_reaplist = {
    lh_first = 0xfffff8009f2ae538
  }, 
  p_reapsibling = {
    le_next = 0x0, 
    le_prev = 0xfffff8009284b648
  }, 
  p_mtx = {
    lock_object = {
      lo_name = 0xffffffff81234bb2 "process lock", 
      lo_flags = 21168128, 
      lo_data = 0, 
      lo_witness = 0xfffff8103f049400
    }, 
    mtx_lock = 0
  }, 
  p_statmtx = {
    lock_object = {
      lo_name = 0xffffffff811ec4b7 "pstatl", 
      lo_flags = 196608, 
      lo_data = 0, 
      lo_witness = 0x0
    }, 
    mtx_lock = 0
  }, 
  p_itimmtx = {
    lock_object = {
      lo_name = 0xffffffff8122ace7 "pitiml", 
      lo_flags = 196608, 
      lo_data = 0, 
      lo_witness = 0x0
    }, 
    mtx_lock = 0
  }, 
  p_profmtx = {
    lock_object = {
      lo_name = 0xffffffff812888fa "pprofl", 
      lo_flags = 196608, 
      lo_data = 0, 
      lo_witness = 0x0
    }, 
    mtx_lock = 0
  }, 
  p_ksi = 0x0, 
  p_sigqueue = {
    sq_signals = {
      __bits =         {0,
        0,
        0,
        0}
    }, 
    sq_kill = {
      __bits =         {0,
        0,
        0,
        0}
    }, 
    sq_ptrace = {
      __bits =         {0,
        0,
        0,
        0}
    }, 
    sq_list = {
      tqh_first = 0x0, 
      tqh_last = 0xffffffff82001ff8 <proc0+472>
    }, 
    sq_proc = 0xffffffff82001e20 <proc0>, 
    sq_flags = 1
  }, 
  p_oppid = 0, 
  p_vmspace = 0xffffffff82002918 <vmspace0>, 
  p_swtick = 0, 
  p_cowgen = 0, 
  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 = 3652, 
    ru_oublock = 0, 
    ru_msgsnd = 0, 
    ru_msgrcv = 0, 
    ru_nsignals = 0, 
    ru_nvcsw = 452, 
    ru_nivcsw = 0
  }, 
  p_rux = {
    rux_runtime = 954709275788, 
    rux_uticks = 0, 
    rux_sticks = 35583, 
    rux_iticks = 0, 
    rux_uu = 0, 
    rux_su = 281317832, 
    rux_tu = 281317832
  }, 
  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 = 0x0, 
  p_lock = 0, 
  p_sigiolst = {
    slh_first = 0x0
  }, 
  p_sigparent = 0, 
  p_sig = 0, 
  p_code = 0, 
  p_stops = 0, 
  p_stype = 0, 
  p_step = 0 '\000', 
  p_pfsflags = 0 '\000', 
  p_ptevents = 0, 
  p_nlminfo = 0x0, 
  p_aioinfo = 0x0, 
  p_singlethread = 0x0, 
  p_suspcount = 0, 
  p_xthread = 0x0, 
  p_boundary_count = 0, 
  p_pendingcnt = 0, 
  p_itimers = 0x0, 
  p_procdesc = 0x0, 
  p_treeflag = 0, 
  p_pendingexits = 0, 
  p_filemon = 0x0, 
  p_pdeathsig = 0, 
  p_magic = 3203398350, 
  p_osrel = 1200064, 
  p_comm =     "kernel", 
  p_sysent = 0xffffffff81b05e90 <null_sysvec>, 
  p_args = 0x0, 
  p_cpulimit = 9223372036854775807, 
  p_nice = 0 '\000', 
  p_fibnum = 0, 
  p_reapsubtree = 0, 
  p_elf_machine = 0, 
  p_elf_flags = 0, 
  p_xexit = 0, 
  p_xsig = 0, 
  p_pgrp = 0xffffffff81df1370 <pgrp0>, 
  p_klist = 0xfffff8000308d540, 
  p_numthreads = 532, 
  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 = {
      le = {
        le_next = 0x0, 
        le_prev = 0x0
      }, 
      sle = {
        sle_next = 0x0
      }, 
      tqe = {
        tqe_next = 0x0, 
        tqe_prev = 0x0
      }
    }, 
    c_time = 0, 
    c_precision = 0, 
    c_arg = 0x0, 
    c_func = 0x0, 
    c_lock = 0xffffffff82001f40 <proc0+288>, 
    c_flags = 0, 
    c_iflags = 0, 
    c_cpu = 0
  }, 
  p_acflag = 0, 
  p_peers = 0x0, 
  p_leader = 0xffffffff82001e20 <proc0>, 
  p_emuldata = 0x0, 
  p_label = 0x0, 
  p_ktr = {
    stqh_first = 0x0, 
    stqh_last = 0xffffffff820022e8 <proc0+1224>
  }, 
  p_mqnotifier = {
    lh_first = 0x0
  }, 
  p_dtrace = 0xfffff8000303b900, 
  p_pwait = {
    cv_description = 0x0, 
    cv_waiters = 0
  }, 
  p_dbgwait = {
    cv_description = 0x0, 
    cv_waiters = 0
  }, 
  p_prev_runtime = 0, 
  p_racct = 0x0, 
  p_throttled = 0, 
  p_orphan = {
    le_next = 0x0, 
    le_prev = 0x0
  }, 
  p_orphans = {
    lh_first = 0x0
  }
}
$2 = {
  td_lock = 0xffffffff81e0e340 <tdq_cpu>, 
  td_proc = 0xffffffff82001e20 <proc0>, 
  td_plist = {
    tqe_next = 0xfffff8007d970000, 
    tqe_prev = 0xfffff8007d90e590
  }, 
  td_runq = {
    tqe_next = 0x0, 
    tqe_prev = 0xffffffff81e0e4f8 <tdq_cpu+440>
  }, 
  td_slpq = {
    tqe_next = 0x0, 
    tqe_prev = 0xfffff80003e3fe80
  }, 
  td_lockq = {
    tqe_next = 0x0, 
    tqe_prev = 0x0
  }, 
  td_hash = {
    le_next = 0x0, 
    le_prev = 0xfffffe00ba403fc0
  }, 
  td_cpuset = 0xfffff800036cae80, 
  td_domain = {
    dr_policy = 0xffffffff81df16a8 <domainset0>, 
    dr_iterator = 0
  }, 
  td_sel = 0x0, 
  td_sleepqueue = 0xfffff80003e3fe80, 
  td_turnstile = 0xfffff8007d969000, 
  td_rlqe = 0x0, 
  td_umtxq = 0xfffff8007d96d280, 
  td_tid = 100344, 
  td_sigqueue = {
    sq_signals = {
      __bits =         {0,
        0,
        0,
        0}
    }, 
    sq_kill = {
      __bits =         {0,
        0,
        0,
        0}
    }, 
    sq_ptrace = {
      __bits =         {0,
        0,
        0,
        0}
    }, 
    sq_list = {
      tqh_first = 0x0, 
      tqh_last = 0xfffff8007d9710d8
    }, 
    sq_proc = 0xffffffff82001e20 <proc0>, 
    sq_flags = 1
  }, 
  td_lend_user_pri = 255 '\377', 
  td_epochnest = 0 '\000', 
  td_flags = 4, 
  td_inhibitors = 0, 
  td_pflags = 2097152, 
  td_dupfd = 0, 
  td_sqqueue = 0, 
  td_wchan = 0x0, 
  td_wmesg = 0x0, 
  td_owepreempt = 0 '\000', 
  td_tsqueue = 0 '\000', 
  td_locks = 0, 
  td_rw_rlocks = 0, 
  td_sx_slocks = 0, 
  td_lk_slocks = 0, 
  td_stopsched = 1, 
  td_blocked = 0x0, 
  td_lockname = 0x0, 
  td_contested = {
    lh_first = 0x0
  }, 
  td_sleeplocks = 0xffffffff81f34db8 <w_locklistdata+246840>, 
  td_intr_nesting_level = 0, 
  td_pinned = 1, 
  td_ucred = 0xfffff800036aae00, 
  td_limit = 0xfffff800036d8000, 
  td_slptick = 0, 
  td_blktick = 0, 
  td_swvoltick = -2135472893, 
  td_swinvoltick = -2136385896, 
  td_cow = 0, 
  td_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 = 4180, 
    ru_nivcsw = 13
  }, 
  td_rux = {
    rux_runtime = 5237952892, 
    rux_uticks = 0, 
    rux_sticks = 215, 
    rux_iticks = 0, 
    rux_uu = 0, 
    rux_su = 0, 
    rux_tu = 0
  }, 
  td_incruntime = 0, 
  td_runtime = 5237646450, 
  td_pticks = 215, 
  td_sticks = 0, 
  td_iticks = 0, 
  td_uticks = 0, 
  td_intrval = 0, 
  td_oldsigmask = {
    __bits =       {0,
      0,
      0,
      0}
  }, 
  td_generation = 4193, 
  td_sigstk = {
    ss_sp = 0x0, 
    ss_size = 0, 
    ss_flags = 0
  }, 
  td_xsig = 0, 
  td_profil_addr = 0, 
  td_profil_ticks = 0, 
  td_name =     "deadlkres", 
  td_fpop = 0x0, 
  td_dbgflags = 0, 
  td_si = {
    si_signo = 0, 
    si_errno = 0, 
    si_code = 0, 
    si_pid = 0, 
    si_uid = 0, 
    si_status = 0, 
    si_addr = 0x0, 
    si_value = {
      sival_int = 0, 
      sival_ptr = 0x0, 
      sigval_int = 0, 
      sigval_ptr = 0x0
    }, 
    _reason = {
      _fault = {
        _trapno = 0
      }, 
      _timer = {
        _timerid = 0, 
        _overrun = 0
      }, 
      _mesgq = {
        _mqd = 0
      }, 
      _poll = {
        _band = 0
      }, 
      __spare__ = {
        __spare1__ = 0, 
        __spare2__ =           {0,
          0,
          0,
          0,
          0,
          0,
          0}
      }
    }
  }, 
  td_ng_outbound = 0, 
  td_osd = {
    osd_nslots = 0, 
    osd_slots = 0x0, 
    osd_next = {
      le_next = 0x0, 
      le_prev = 0x0
    }
  }, 
  td_map_def_user = 0x0, 
  td_dbg_forked = 0, 
  td_vp_reserv = 0, 
  td_no_sleeping = 0, 
  td_su = 0x0, 
  td_sleeptimo = 0, 
  td_rtcgen = 0, 
  td_vslock_sz = 0, 
  td_sigmask = {
    __bits =       {0,
      0,
      0,
      0}
  }, 
  td_rqindex = 21 '\025', 
  td_base_pri = 84 'T', 
  td_priority = 84 'T', 
  td_pri_class = 3 '\003', 
  td_user_pri = 120 'x', 
  td_base_user_pri = 120 'x', 
  td_pre_epoch_prio = 0 '\000', 
  td_rb_list = 0, 
  td_rbp_list = 0, 
  td_rb_inact = 0, 
  td_sa = {
    code = 0, 
    callp = 0x0, 
    args =       {0,
      0,
      0,
      0,
      0,
      0,
      0,
      0}, 
    narg = 0
  }, 
  td_pcb = 0xfffffe00cbe09b80, 
  td_state = TDS_RUNNING, 
  td_uretoff = {
    tdu_retval =       {0,
      0}, 
    tdu_off = 0
  }, 
  td_cowgen = 0, 
  td_slpcallout = {
    c_links = {
      le = {
        le_next = 0x0, 
        le_prev = 0xfffffe00ba463608
      }, 
      sle = {
        sle_next = 0x0
      }, 
      tqe = {
        tqe_next = 0x0, 
        tqe_prev = 0xfffffe00ba463608
      }
    }, 
    c_time = 54179960823541, 
    c_precision = 805306312, 
    c_arg = 0xfffff8007d971000, 
    c_func = 0xffffffff80bb1a90 <sleepq_timeout>, 
    c_lock = 0x0, 
    c_flags = 2, 
    c_iflags = 272, 
    c_cpu = 1
  }, 
  td_frame = 0xfffffe00cbe09ac0, 
  td_kstack_obj = 0xfffff8007d979800, 
  td_kstack = 18446741878106775552, 
  td_kstack_pages = 4, 
  td_critnest = 1, 
  td_md = {
    md_spinlock_count = 1, 
    md_saved_flags = 582, 
    md_spurflt_addr = 0, 
    md_invl_gen = {
      gen = 0, 
      link = {
        le_next = 0x0, 
        le_prev = 0x0
      }
    }
  }, 
  td_ar = 0x0, 
  td_lprof =     {{
      lh_first = 0x0
    },
    {
      lh_first = 0x0
    }}, 
  td_dtrace = 0xfffff8007d975b00, 
  td_errno = 0, 
  td_vnet = 0x0, 
  td_vnet_lpush = 0x0, 
  td_intr_frame = 0x0, 
  td_rfppwait_p = 0x0, 
  td_ma = 0x0, 
  td_ma_cnt = 0, 
  td_emuldata = 0x0, 
  td_lastcpu = 1, 
  td_oncpu = 0, 
  td_lkpi_task = 0x0, 
  td_epochq = {
    tqe_next = 0x0, 
    tqe_prev = 0x0
  }, 
  td_epoch_section = {
    bucket = 0
  }
}
Comment 1 Alexey Dokuchaev freebsd_committer freebsd_triage 2020-09-28 04:53:02 UTC
Do you still see this deadlock on recent -CURRENT, where DRM support had been moved out of the base system/kernel to the `graphics/drm-*-kmod' and `graphics/gpu-firmware-kmod' ports?

Adding x11@ to CC list so it can be tracked while originally filed under base system/kern.