panic: spin lock held too long (RELENG_8 from today)

Mike Tancsa mike at sentex.net
Thu Jul 7 12:03:56 UTC 2011


On 7/7/2011 7:32 AM, Mike Tancsa wrote:
> On 7/7/2011 4:20 AM, Kostik Belousov wrote:
>>
>> BTW, we had a similar panic, "spinlock held too long", the spinlock
>> is the sched lock N, on busy 8-core box recently upgraded to the
>> stable/8. Unfortunately, machine hung dumping core, so the stack trace
>> for the owner thread was not available.
>>
>> I was unable to make any conclusion from the data that was present.
>> If the situation is reproducable, you coulld try to revert r221937. This
>> is pure speculation, though.
> 
> Another crash just now after 5hrs uptime. I will try and revert r221937
> unless there is any extra debugging you want me to add to the kernel
> instead  ?
> 
> This is an inbound mail server so a little disruption is possible
> 
>  kgdb /usr/obj/usr/src/sys/recycle/kernel.debug vmcore.13
> GNU gdb 6.1.1 [FreeBSD]
> Copyright 2004 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain
> conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB.  Type "show warranty" for details.
> This GDB was configured as "i386-marcel-freebsd"...
> 
> Unread portion of the kernel message buffer:
> spin lock 0xc0b1d200 (sched lock 1) held by 0xc5dac2e0 (tid 100109) too long
> panic: spin lock held too long
> cpuid = 0
> Uptime: 5h37m43s
> Physical memory: 2035 MB
> Dumping 260 MB: 245 229 213 197 181 165 149 133 117 101 85 69 53 37 21 5

And the second crash from today

 kgdb /usr/obj/usr/src/sys/recycle/kernel.debug vmcore.13
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-marcel-freebsd"...

Unread portion of the kernel message buffer:
spin lock 0xc0b1d200 (sched lock 1) held by 0xc5dac2e0 (tid 100109) too long
panic: spin lock held too long
cpuid = 0
Uptime: 5h37m43s
Physical memory: 2035 MB
Dumping 260 MB: 245 229 213 197 181 165 149 133 117 101 85 69 53 37 21 5

Reading symbols from /boot/kernel/amdsbwd.ko...Reading symbols from
/boot/kernel/amdsbwd.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/amdsbwd.ko
#0  doadump () at pcpu.h:231
231     pcpu.h: No such file or directory.
        in pcpu.h
(kgdb) tid 100109
[Switching to thread 82 (Thread 100109)]#0  sched_switch (td=0xc5dac2e0,
newtd=0xc553c5c0, flags=260)
    at /usr/src/sys/kern/sched_ule.c:1866
1866                    cpuid = PCPU_GET(cpuid);
(kgdb) list
1861                    /*
1862                     * We may return from cpu_switch on a different
cpu.  However,
1863                     * we always return with td_lock pointing to the
current cpu's
1864                     * run queue lock.
1865                     */
1866                    cpuid = PCPU_GET(cpuid);
1867                    tdq = TDQ_CPU(cpuid);
1868                    lock_profile_obtain_lock_success(
1869                        &TDQ_LOCKPTR(tdq)->lock_object, 0, 0,
__FILE__, __LINE__);
1870    #ifdef  HWPMC_HOOKS
(kgdb) p *td
$1 = {td_lock = 0xc0b1d200, td_proc = 0xc5db4000, td_plist = {tqe_next =
0xc5dac5c0, tqe_prev = 0xc5dac008},
  td_runq = {tqe_next = 0x0, tqe_prev = 0xc0b1d334}, td_slpq = {tqe_next
= 0x0, tqe_prev = 0xc65d3b00},
  td_lockq = {tqe_next = 0x0, tqe_prev = 0xc51f6b38}, td_cpuset =
0xc5533e38, td_sel = 0x0,
  td_sleepqueue = 0xc65d3b00, td_turnstile = 0xc63ceb80, td_umtxq =
0xc5d229c0, td_tid = 100109, td_sigqueue = {
    sq_signals = {__bits = {0, 0, 0, 0}}, sq_kill = {__bits = {0, 0, 0,
0}}, sq_list = {tqh_first = 0x0,
      tqh_last = 0xc5dac340}, sq_proc = 0xc5db4000, sq_flags = 1},
td_flags = 4, td_inhibitors = 0,
  td_pflags = 2097152, td_dupfd = 0, td_sqqueue = 0, td_wchan = 0x0,
td_wmesg = 0x0, td_lastcpu = 0 '\0',
  td_oncpu = 1 '\001', td_owepreempt = 0 '\0', td_tsqueue = 0 '\0',
td_locks = -291, td_rw_rlocks = 0,
  td_lk_slocks = 0, td_blocked = 0x0, td_lockname = 0x0, td_contested =
{lh_first = 0x0}, td_sleeplocks = 0x0,
  td_intr_nesting_level = 0, td_pinned = 0, td_ucred = 0xc5538100,
td_estcpu = 0, td_slptick = 0,
  td_blktick = 0, td_ru = {ru_utime = {tv_sec = 0, tv_usec = 0},
ru_stime = {tv_sec = 0, tv_usec = 0},
    ru_maxrss = 1048, ru_ixrss = 85216, ru_idrss = 3834720, ru_isrss =
681728, ru_minflt = 0, ru_majflt = 0,
    ru_nswap = 0, ru_inblock = 82, ru_oublock = 271222, ru_msgsnd =
135625, ru_msgrcv = 2427350,
    ru_nsignals = 0, ru_nvcsw = 2076938, ru_nivcsw = 731134},
td_incruntime = 852332612,
  td_runtime = 88202475877, td_pticks = 5326, td_sticks = 48, td_iticks
= 0, td_uticks = 0, td_intrval = 0,
  td_oldsigmask = {__bits = {0, 0, 0, 0}}, td_sigmask = {__bits = {0, 0,
0, 0}}, td_generation = 2808072,
  td_sigstk = {ss_sp = 0x0, ss_size = 0, ss_flags = 0}, td_xsig = 0,
td_profil_addr = 0, td_profil_ticks = 0,
  td_name = "nfsd: service\000\000\000\000\000\000", td_fpop = 0x0,
td_dbgflags = 0, td_dbgksi = {ksi_link = {
      tqe_next = 0x0, tqe_prev = 0x0}, ksi_info = {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}}}},
    ksi_flags = 0, ksi_sigq = 0x0}, td_ng_outbound = 0, td_osd =
{osd_nslots = 0, osd_slots = 0x0, osd_next = {
      le_next = 0x0, le_prev = 0x0}}, td_rqindex = 32 ' ', td_base_pri =
160 ' ', td_priority = 128 '\200',
  td_pri_class = 3 '\003', td_user_pri = 128 '\200', td_base_user_pri =
128 '\200', td_pcb = 0xe7d14d80,
  td_state = TDS_RUNNING, td_retval = {0, 0}, td_slpcallout = {c_links =
{sle = {sle_next = 0xc5d704e0}, tqe = {
        tqe_next = 0xc5d704e0, tqe_prev = 0xc55bb1f0}}, c_time =
20246590, c_arg = 0xc5dac2e0,
    c_func = 0xc0736bc0 <sleepq_timeout>, c_lock = 0x0, c_flags = 18,
c_cpu = 32}, td_frame = 0xe7d14d28,
  td_kstack_obj = 0xc6182088, td_kstack = 3889246208, td_kstack_pages =
2, td_unused1 = 0x0, td_unused2 = 0,
  td_unused3 = 0, td_critnest = 1, td_md = {md_spinlock_count = 1,
md_saved_flags = 582},
  td_sched = 0xc5dac58c, td_ar = 0x0, td_syscalls = 0, td_lprof =
{{lh_first = 0x0}, {lh_first = 0x0}},
  td_dtrace = 0x0, td_errno = 0, td_vnet = 0x0, td_vnet_lpush = 0x0,
td_rux = {rux_runtime = 87350143265,
    rux_uticks = 0, rux_sticks = 5278, rux_iticks = 0, rux_uu = 0,
rux_su = 0, rux_tu = 0},
  td_map_def_user = 0x0, td_dbg_forked = 0}
(kgdb) p *newtd
$2 = {td_lock = 0xc0b1cb80, td_proc = 0xc553a810, td_plist = {tqe_next =
0xc553c8a0, tqe_prev = 0xc553a818},
  td_runq = {tqe_next = 0x0, tqe_prev = 0x0}, td_slpq = {tqe_next = 0x0,
tqe_prev = 0x0}, td_lockq = {
    tqe_next = 0x0, tqe_prev = 0x0}, td_cpuset = 0xc5533e38, td_sel =
0x0, td_sleepqueue = 0xc5531e00,
  td_turnstile = 0xc553d000, td_umtxq = 0xc5527ac0, td_tid = 100004,
td_sigqueue = {sq_signals = {__bits = {0,
        0, 0, 0}}, sq_kill = {__bits = {0, 0, 0, 0}}, sq_list =
{tqh_first = 0x0, tqh_last = 0xc553c620},
    sq_proc = 0xc553a810, sq_flags = 1}, td_flags = 262180,
td_inhibitors = 0, td_pflags = 2097152,
  td_dupfd = 0, td_sqqueue = 0, td_wchan = 0x0, td_wmesg = 0x0,
td_lastcpu = 0 '\0', td_oncpu = 255 'ÿ',
  td_owepreempt = 0 '\0', td_tsqueue = 0 '\0', td_locks = 0,
td_rw_rlocks = 0, td_lk_slocks = 0,
  td_blocked = 0x0, td_lockname = 0x0, td_contested = {lh_first = 0x0},
td_sleeplocks = 0x0,
  td_intr_nesting_level = 0, td_pinned = 0, td_ucred = 0xc5535600,
td_estcpu = 0, td_slptick = 0,
  td_blktick = 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 = 33962290,
    ru_nivcsw = 40323696}, td_incruntime = 370201469879, td_runtime =
41685199750119, td_pticks = 2502607,
  td_sticks = 22282, td_iticks = 0, td_uticks = 0, td_intrval = 0,
td_oldsigmask = {__bits = {0, 0, 0, 0}},
  td_sigmask = {__bits = {0, 0, 0, 0}}, td_generation = 74285986,
td_sigstk = {ss_sp = 0x0, ss_size = 0,
    ss_flags = 0}, td_xsig = 0, td_profil_addr = 0, td_profil_ticks = 0,
  td_name = "idle: cpu0\000\000\000\000\000\000\000\000\000", td_fpop =
0x0, td_dbgflags = 0, td_dbgksi = {
    ksi_link = {tqe_next = 0x0, tqe_prev = 0x0}, ksi_info = {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}}}}, ksi_flags = 0, ksi_sigq = 0x0},
td_ng_outbound = 0, td_osd = {
    osd_nslots = 0, osd_slots = 0x0, osd_next = {le_next = 0x0, le_prev
= 0x0}}, td_rqindex = 0 '\0',
  td_base_pri = 255 'ÿ', td_priority = 255 'ÿ', td_pri_class = 4 '\004',
td_user_pri = 160 ' ',
  td_base_user_pri = 160 ' ', td_pcb = 0xc51e3d80, td_state =
TDS_CAN_RUN, td_retval = {0, 0}, td_slpcallout = {
    c_links = {sle = {sle_next = 0x0}, tqe = {tqe_next = 0x0, tqe_prev =
0x0}}, c_time = 0, c_arg = 0x0,
    c_func = 0, c_lock = 0x0, c_flags = 16, c_cpu = 0}, td_frame =
0xc51e3d28, td_kstack_obj = 0xc157ddd0,
  td_kstack = 3307085824, td_kstack_pages = 2, td_unused1 = 0x0,
td_unused2 = 0, td_unused3 = 0,
  td_critnest = 1, td_md = {md_spinlock_count = 1, md_saved_flags =
582}, td_sched = 0xc553c86c, td_ar = 0x0,
  td_syscalls = 0, td_lprof = {{lh_first = 0x0}, {lh_first = 0x0}},
td_dtrace = 0x0, td_errno = 0,
  td_vnet = 0x0, td_vnet_lpush = 0x0, td_rux = {rux_runtime =
41315105445882, rux_uticks = 0,
    rux_sticks = 2480325, rux_iticks = 0, rux_uu = 0, rux_su = 0, rux_tu
= 0}, td_map_def_user = 0x0,
  td_dbg_forked = 0}
(kgdb) p *mtx
$3 = {lock_object = {lo_name = 0xc0a3af04 "sleepq chain", lo_flags =
720896, lo_data = 0, lo_witness = 0x0},
  mtx_lock = 4}
(kgdb) disassemble
Dump of assembler code for function sched_switch:
0xc07206c0 <sched_switch+0>:    push   %ebp
0xc07206c1 <sched_switch+1>:    mov    %esp,%ebp
0xc07206c3 <sched_switch+3>:    push   %edi
0xc07206c4 <sched_switch+4>:    push   %esi
0xc07206c5 <sched_switch+5>:    push   %ebx
0xc07206c6 <sched_switch+6>:    sub    $0x24,%esp
0xc07206c9 <sched_switch+9>:    mov    0x8(%ebp),%esi
0xc07206cc <sched_switch+12>:   mov    (%esi),%eax
0xc07206ce <sched_switch+14>:   mov    %fs:0x20,%eax
0xc07206d4 <sched_switch+20>:   mov    %eax,0xfffffff0(%ebp)
0xc07206d7 <sched_switch+23>:   mov    %eax,0xffffffec(%ebp)
0xc07206da <sched_switch+26>:   imul   $0x680,%eax,%eax
0xc07206e0 <sched_switch+32>:   lea    0xc0b1cb80(%eax),%edi
0xc07206e6 <sched_switch+38>:   mov    0x248(%esi),%ebx
0xc07206ec <sched_switch+44>:   mov    (%esi),%eax
0xc07206ee <sched_switch+46>:   mov    %eax,0xffffffe4(%ebp)
0xc07206f1 <sched_switch+49>:   mov    0xc0b16e8c,%eax
0xc07206f6 <sched_switch+54>:   mov    %eax,0x8(%ebx)
0xc07206f9 <sched_switch+57>:   movzbl 0x8d(%esi),%eax
0xc0720700 <sched_switch+64>:   mov    %al,0x8c(%esi)
0xc0720706 <sched_switch+70>:   movb   $0xff,0x8d(%esi)
0xc072070d <sched_switch+77>:   mov    0x10(%ebp),%eax
0xc0720710 <sched_switch+80>:   and    $0x400,%eax
0xc0720715 <sched_switch+85>:   jne    0xc072071e <sched_switch+94>
0xc0720717 <sched_switch+87>:   andl   $0xfffeffff,0x70(%esi)
0xc072071e <sched_switch+94>:   movb   $0x0,0x8e(%esi)
0xc0720725 <sched_switch+101>:  addw   $0x1,0x24(%edi)
0xc072072a <sched_switch+106>:  testb  $0x20,0x70(%esi)
0xc072072e <sched_switch+110>:  je     0xc0720740 <sched_switch+128>
0xc0720730 <sched_switch+112>:  movl   $0x2,0x1f4(%esi)
0xc072073a <sched_switch+122>:  jmp    0xc0720924 <sched_switch+612>
0xc072073f <sched_switch+127>:  nop
0xc0720740 <sched_switch+128>:  cmpl   $0x4,0x1f4(%esi)
0xc0720747 <sched_switch+135>:  jne    0xc07208c0 <sched_switch+512>
0xc072074d <sched_switch+141>:  cmp    $0x1,%eax
0xc0720750 <sched_switch+144>:  sbb    %edx,%edx
0xc0720752 <sched_switch+146>:  and    $0xfffffff8,%edx
0xc0720755 <sched_switch+149>:  add    $0xb,%edx
0xc0720758 <sched_switch+152>:  mov    %edx,0xffffffe8(%ebp)
0xc072075b <sched_switch+155>:  cmpl   $0x0,0xac(%esi)
0xc0720762 <sched_switch+162>:  jne    0xc0720790 <sched_switch+208>
0xc0720764 <sched_switch+164>:  mov    0x28(%esi),%edx
0xc0720767 <sched_switch+167>:  movzbl 0x6(%ebx),%ecx
---Type <return> to continue, or q <return> to quit---
0xc072076b <sched_switch+171>:  mov    %ecx,%eax
0xc072076d <sched_switch+173>:  shr    $0x5,%al
0xc0720770 <sched_switch+176>:  movzbl %al,%eax
0xc0720773 <sched_switch+179>:  mov    (%edx,%eax,4),%eax
0xc0720776 <sched_switch+182>:  and    $0x1f,%ecx
0xc0720779 <sched_switch+185>:  sar    %cl,%eax
0xc072077b <sched_switch+187>:  test   $0x1,%al
0xc072077d <sched_switch+189>:  jne    0xc0720790 <sched_switch+208>
0xc072077f <sched_switch+191>:  mov    $0x0,%edx
0xc0720784 <sched_switch+196>:  mov    %esi,%eax
0xc0720786 <sched_switch+198>:  call   0xc071ff90 <sched_pickcpu>
0xc072078b <sched_switch+203>:  mov    %al,0x6(%ebx)
0xc072078e <sched_switch+206>:  mov    %esi,%esi
0xc0720790 <sched_switch+208>:  movzbl 0x6(%ebx),%eax
0xc0720794 <sched_switch+212>:  cmp    0xffffffec(%ebp),%eax
0xc0720797 <sched_switch+215>:  jne    0xc0720850 <sched_switch+400>
0xc072079d <sched_switch+221>:  mov    (%esi),%eax
0xc072079f <sched_switch+223>:  movzbl 0x1ea(%esi),%ebx
0xc07207a6 <sched_switch+230>:  mov    0x248(%esi),%ecx
0xc07207ac <sched_switch+236>:  movl   $0x3,0x1f4(%esi)
0xc07207b6 <sched_switch+246>:  cmpl   $0x0,0xac(%esi)
0xc07207bd <sched_switch+253>:  jne    0xc07207c8 <sched_switch+264>
0xc07207bf <sched_switch+255>:  addl   $0x1,0x20(%edi)
0xc07207c3 <sched_switch+259>:  orw    $0x2,0x4(%ecx)
0xc07207c8 <sched_switch+264>:  cmp    $0x9f,%bl
0xc07207cb <sched_switch+267>:  ja     0xc07207d4 <sched_switch+276>
0xc07207cd <sched_switch+269>:  lea    0x2c(%edi),%eax
0xc07207d0 <sched_switch+272>:  mov    %eax,(%ecx)
0xc07207d2 <sched_switch+274>:  jmp    0xc0720833 <sched_switch+371>
0xc07207d4 <sched_switch+276>:  cmp    $0xdf,%bl
0xc07207d7 <sched_switch+279>:  ja     0xc072082b <sched_switch+363>
0xc07207d9 <sched_switch+281>:  lea    0x234(%edi),%eax
0xc07207df <sched_switch+287>:  mov    %eax,(%ecx)
0xc07207e1 <sched_switch+289>:  testb  $0x18,0xffffffe8(%ebp)
0xc07207e5 <sched_switch+293>:  jne    0xc0720806 <sched_switch+326>
0xc07207e7 <sched_switch+295>:  movzbl 0x2a(%edi),%edx
0xc07207eb <sched_switch+299>:  lea    0x60(%ebx,%edx,1),%eax
0xc07207ef <sched_switch+303>:  and    $0x3f,%eax
0xc07207f2 <sched_switch+306>:  movzbl 0x2b(%edi),%ebx
0xc07207f6 <sched_switch+310>:  cmp    %dl,%bl
0xc07207f8 <sched_switch+312>:  je     0xc072080a <sched_switch+330>
0xc07207fa <sched_switch+314>:  cmp    %al,%bl
0xc07207fc <sched_switch+316>:  jne    0xc072080a <sched_switch+330>
0xc07207fe <sched_switch+318>:  sub    $0x1,%eax
---Type <return> to continue, or q <return> to quit---
0xc0720801 <sched_switch+321>:  and    $0x3f,%eax
0xc0720804 <sched_switch+324>:  jmp    0xc072080a <sched_switch+330>
0xc0720806 <sched_switch+326>:  movzbl 0x2b(%edi),%eax
0xc072080a <sched_switch+330>:  movzbl %al,%eax
0xc072080d <sched_switch+333>:  mov    (%ecx),%edx
0xc072080f <sched_switch+335>:  mov    0xffffffe8(%ebp),%ecx
0xc0720812 <sched_switch+338>:  mov    %ecx,0xc(%esp)
0xc0720816 <sched_switch+342>:  mov    %eax,0x8(%esp)
0xc072081a <sched_switch+346>:  mov    %esi,0x4(%esp)
0xc072081e <sched_switch+350>:  mov    %edx,(%esp)
0xc0720821 <sched_switch+353>:  call   0xc07051a0 <runq_add_pri>
0xc0720826 <sched_switch+358>:  jmp    0xc0720924 <sched_switch+612>
0xc072082b <sched_switch+363>:  lea    0x43c(%edi),%eax
0xc0720831 <sched_switch+369>:  mov    %eax,(%ecx)
0xc0720833 <sched_switch+371>:  mov    (%ecx),%eax
0xc0720835 <sched_switch+373>:  mov    0xffffffe8(%ebp),%edx
0xc0720838 <sched_switch+376>:  mov    %edx,0x8(%esp)
0xc072083c <sched_switch+380>:  mov    %esi,0x4(%esp)
0xc0720840 <sched_switch+384>:  mov    %eax,(%esp)
0xc0720843 <sched_switch+387>:  call   0xc0704dc0 <runq_add>
0xc0720848 <sched_switch+392>:  jmp    0xc0720924 <sched_switch+612>
0xc072084d <sched_switch+397>:  lea    0x0(%esi),%esi
0xc0720850 <sched_switch+400>:  mov    0x248(%esi),%eax
0xc0720856 <sched_switch+406>:  movzbl 0x6(%eax),%eax
0xc072085a <sched_switch+410>:  imul   $0x680,%eax,%eax
0xc0720860 <sched_switch+416>:  lea    0xc0b1cb80(%eax),%ebx
0xc0720866 <sched_switch+422>:  mov    %esi,%edx
0xc0720868 <sched_switch+424>:  mov    %edi,%eax
0xc072086a <sched_switch+426>:  call   0xc071da30 <tdq_load_rem>
0xc072086f <sched_switch+431>:  call   0xc09af910 <spinlock_enter>
0xc0720874 <sched_switch+436>:  mov    %esi,(%esp)
0xc0720877 <sched_switch+439>:  call   0xc06edf20 <thread_lock_block>
0xc072087c <sched_switch+444>:  mov    %edi,%edx
0xc072087e <sched_switch+446>:  mov    %ebx,%eax
0xc0720880 <sched_switch+448>:  call   0xc071e080 <tdq_lock_pair>
0xc0720885 <sched_switch+453>:  mov    0xffffffe8(%ebp),%ecx
0xc0720888 <sched_switch+456>:  mov    %esi,%edx
0xc072088a <sched_switch+458>:  mov    %ebx,%eax
0xc072088c <sched_switch+460>:  call   0xc071ef50 <tdq_add>
0xc0720891 <sched_switch+465>:  mov    %esi,%edx
0xc0720893 <sched_switch+467>:  mov    %ebx,%eax
0xc0720895 <sched_switch+469>:  call   0xc071e990 <tdq_notify>
0xc072089a <sched_switch+474>:  mov    0x8(%ebx),%eax
0xc072089d <sched_switch+477>:  test   %eax,%eax
---Type <return> to continue, or q <return> to quit---
0xc072089f <sched_switch+479>:  je     0xc07208a9 <sched_switch+489>
0xc07208a1 <sched_switch+481>:  sub    $0x1,%eax
0xc07208a4 <sched_switch+484>:  mov    %eax,0x8(%ebx)
0xc07208a7 <sched_switch+487>:  jmp    0xc07208b1 <sched_switch+497>
0xc07208a9 <sched_switch+489>:  mov    $0x4,%eax
0xc07208ae <sched_switch+494>:  xchg   %eax,0x10(%ebx)
0xc07208b1 <sched_switch+497>:  call   0xc09afae0 <spinlock_exit>
0xc07208b6 <sched_switch+502>:  call   0xc09afae0 <spinlock_exit>
0xc07208bb <sched_switch+507>:  mov    %ebx,0xffffffe4(%ebp)
0xc07208be <sched_switch+510>:  jmp    0xc0720924 <sched_switch+612>
0xc07208c0 <sched_switch+512>:  mov    %fs:0x0,%ebx
0xc07208c7 <sched_switch+519>:  call   0xc09af910 <spinlock_enter>
0xc07208cc <sched_switch+524>:  mov    $0x4,%eax
0xc07208d1 <sched_switch+529>:  lock cmpxchg %ebx,0x10(%edi)
0xc07208d6 <sched_switch+534>:  sete   %al
0xc07208d9 <sched_switch+537>:  test   %al,%al
0xc07208db <sched_switch+539>:  jne    0xc0720910 <sched_switch+592>
0xc07208dd <sched_switch+541>:  mov    0x10(%edi),%eax
0xc07208e0 <sched_switch+544>:  cmp    %ebx,%eax
0xc07208e2 <sched_switch+546>:  jne    0xc07208ea <sched_switch+554>
0xc07208e4 <sched_switch+548>:  addl   $0x1,0x8(%edi)
0xc07208e8 <sched_switch+552>:  jmp    0xc0720910 <sched_switch+592>
0xc07208ea <sched_switch+554>:  movl   $0x0,0x10(%esp)
0xc07208f2 <sched_switch+562>:  movl   $0x0,0xc(%esp)
0xc07208fa <sched_switch+570>:  movl   $0x0,0x8(%esp)
0xc0720902 <sched_switch+578>:  mov    %ebx,0x4(%esp)
0xc0720906 <sched_switch+582>:  mov    %edi,(%esp)
0xc0720909 <sched_switch+585>:  call   0xc06ed970 <_mtx_lock_spin>
0xc072090e <sched_switch+590>:  mov    %esi,%esi
0xc0720910 <sched_switch+592>:  mov    %esi,(%esp)
0xc0720913 <sched_switch+595>:  call   0xc06edf20 <thread_lock_block>
0xc0720918 <sched_switch+600>:  mov    %eax,0xffffffe4(%ebp)
0xc072091b <sched_switch+603>:  mov    %esi,%edx
0xc072091d <sched_switch+605>:  mov    %edi,%eax
0xc072091f <sched_switch+607>:  call   0xc071da30 <tdq_load_rem>
0xc0720924 <sched_switch+612>:  call   0xc0705140 <choosethread>
0xc0720929 <sched_switch+617>:  mov    %eax,%ebx
0xc072092b <sched_switch+619>:  cmp    %eax,%esi
0xc072092d <sched_switch+621>:  je     0xc07209b1 <sched_switch+753>
0xc0720933 <sched_switch+627>:  mov    0x4(%esi),%ecx
0xc0720936 <sched_switch+630>:  lock cmpxchg %eax,0x5c(%ecx)
0xc072093b <sched_switch+635>:  test   $0x800000,%eax
0xc0720940 <sched_switch+640>:  je     0xc0720960 <sched_switch+672>
0xc0720942 <sched_switch+642>:  mov    0xc0b184dc,%eax
---Type <return> to continue, or q <return> to quit---
0xc0720947 <sched_switch+647>:  test   %eax,%eax
0xc0720949 <sched_switch+649>:  je     0xc0720960 <sched_switch+672>
0xc072094b <sched_switch+651>:  movl   $0x0,0x8(%esp)
0xc0720953 <sched_switch+659>:  movl   $0x3,0x4(%esp)
0xc072095b <sched_switch+667>:  mov    %esi,(%esp)
0xc072095e <sched_switch+670>:  call   *%eax
0xc0720960 <sched_switch+672>:  mov    %ebx,0x10(%edi)
0xc0720963 <sched_switch+675>:  mov    0xffffffe4(%ebp),%edx
0xc0720966 <sched_switch+678>:  mov    %edx,0x8(%esp)
0xc072096a <sched_switch+682>:  mov    %ebx,0x4(%esp)
0xc072096e <sched_switch+686>:  mov    %esi,(%esp)
0xc0720971 <sched_switch+689>:  call   0xc09bcdc4 <cpu_switch>
0xc0720976 <sched_switch+694>:  mov    %fs:0x20,%eax
0xc072097c <sched_switch+700>:  mov    %eax,0xfffffff0(%ebp)
0xc072097f <sched_switch+703>:  mov    %eax,0xffffffec(%ebp)
0xc0720982 <sched_switch+706>:  mov    0x4(%esi),%ecx
0xc0720985 <sched_switch+709>:  lock cmpxchg %eax,0x5c(%ecx)
0xc072098a <sched_switch+714>:  test   $0x800000,%eax
0xc072098f <sched_switch+719>:  je     0xc07209b6 <sched_switch+758>
0xc0720991 <sched_switch+721>:  mov    0xc0b184dc,%eax
0xc0720996 <sched_switch+726>:  test   %eax,%eax
0xc0720998 <sched_switch+728>:  je     0xc07209b6 <sched_switch+758>
0xc072099a <sched_switch+730>:  movl   $0x0,0x8(%esp)
0xc07209a2 <sched_switch+738>:  movl   $0x2,0x4(%esp)
0xc07209aa <sched_switch+746>:  mov    %esi,(%esp)
0xc07209ad <sched_switch+749>:  call   *%eax
0xc07209af <sched_switch+751>:  jmp    0xc07209b6 <sched_switch+758>
0xc07209b1 <sched_switch+753>:  mov    0xffffffe4(%ebp),%eax
0xc07209b4 <sched_switch+756>:  xchg   %eax,(%esi)
0xc07209b6 <sched_switch+758>:  movzbl 0xffffffec(%ebp),%edx
0xc07209ba <sched_switch+762>:  mov    %dl,0x8d(%esi)
0xc07209c0 <sched_switch+768>:  add    $0x24,%esp
0xc07209c3 <sched_switch+771>:  pop    %ebx
0xc07209c4 <sched_switch+772>:  pop    %esi
0xc07209c5 <sched_switch+773>:  pop    %edi
0xc07209c6 <sched_switch+774>:  pop    %ebp
0xc07209c7 <sched_switch+775>:  ret
End of assembler dump.
-- 
-------------------
Mike Tancsa, tel +1 519 651 3400
Sentex Communications, mike at sentex.net
Providing Internet services since 1994 www.sentex.net
Cambridge, Ontario Canada   http://www.tancsa.com/


More information about the freebsd-stable mailing list