Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 May 2018 09:42:33 +0200
From:      Peter Holm <peter@holm.cc>
To:        Matthew Macy <mmacy@freebsd.org>
Cc:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   Re: svn commit: r333480 - head/sys/kern
Message-ID:  <20180511074233.GA35914@x2.osted.lan>
In-Reply-To: <CAPrugNoU8H3B5GLEnxuEO3YbyMi4ZhJxm=oknO-x9_Q-PGPzQQ@mail.gmail.com>
References:  <201805110454.w4B4sDpx067946@repo.freebsd.org> <20180511071854.GA35451@x2.osted.lan> <CAPrugNoU8H3B5GLEnxuEO3YbyMi4ZhJxm=oknO-x9_Q-PGPzQQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, May 11, 2018 at 12:29:30AM -0700, Matthew Macy wrote:
> Yes. Can you give me the line number for epoch_call_task+0x7b
> 

(kgdb) l *epoch_call_task+0x7b
0xffffffff80bb68db is in epoch_call_task (/usr/src/sys/kern/subr_epoch.c:560).
555             td = curthread;
556             thread_lock(td);
557             CPU_FOREACH(cpu) {
558                     sched_bind(td, cpu);
559                     eps = epoch->e_pcpu[cpu];
560                     if (!STAILQ_EMPTY(&eps->eps_cblist))
561                             STAILQ_CONCAT(&tmp_head, &eps->eps_cblist);
562             }
563             sched_unbind(td);
564             thread_unlock(td);
(kgdb)

- Peter

> 
> On Fri, May 11, 2018 at 12:18 AM, Peter Holm <peter@holm.cc> wrote:
> > On Fri, May 11, 2018 at 04:54:13AM +0000, Matt Macy wrote:
> >> Author: mmacy
> >> Date: Fri May 11 04:54:12 2018
> >> New Revision: 333480
> >> URL: https://svnweb.freebsd.org/changeset/base/333480
> >>
> >> Log:
> >>   epoch(9): fix priority handling, make callback lists pcpu, and other fixes
> >>
> >>   - Lend priority to preempted threads in epoch_wait to handle the case
> >>     in which we've had priority lent to us. Previously we borrowed the
> >>     priority of the lowest priority preempted thread. (pointed out by mjg@)
> >>
> >>   - Don't attempt allocate memory per-domain on powerpc, we don't currently
> >>     handle empty sockets (as is the case on jhibbits Talos' board).
> >>
> >>   - Handle deferred callbacks as pcpu lists and poll the lists periodically.
> >>     Currently the interval is 1/hz.
> >>
> >>   - Drop the thread lock when adaptive spinning. Holding the lock starves
> >>     other threads and can even lead to lockups.
> >>
> >>   - Keep a generation count pcpu so that we don't keep spining if a thread
> >>     has left and re-entered an epoch section.
> >>
> >>   - Actually removed the callback from the callback list so that we don't
> >>     double free. Sigh ...
> >>
> >>   Approved by:        sbruno@
> >>
> >> Modified:
> >>   head/sys/kern/subr_epoch.c
> >>
> >> Modified: head/sys/kern/subr_epoch.c
> >> ==============================================================================
> >> --- head/sys/kern/subr_epoch.c        Fri May 11 04:47:05 2018        (r333479)
> >
> > Could this be yours?
> >
> > cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed
> > WARNING: WITNESS option enabled, expect reduced performance.
> > WARNING: DIAGNOSTIC option enabled, expect reduced performance.
> > Trying to mount root from ufs:/dev/da0p2 [rw]...
> > Expensive timeout(9) function: 0xffffffff809f20d0(0xffffffff81af5140) 0.006730830 s
> > uhub1: 4 ports with 4 removable, self powered
> > kernel trap 12 with interrupts disabled
> >
> >
> > Fatal trap 12: page fault while in kernel mode
> > cpuid = 12; apic id = 20
> > fault virtual address   = 0x100
> > fault code              = supervisor read data, page not present
> > instruction pointer     = 0x20:0xffffffff80bb68db
> > stack pointer           = 0x0:0xfffffe00004e19b0
> > frame pointer           = 0x0:0xfffffe00004e19f0
> > code segment            = base 0x0, limit 0xfffff, type 0x1b
> >                         = DPL 0, pres 1, long 1, def32 0, gran 1
> > processor eflags        = resume, IOPL = 0
> > current process         = 0 (config_0)
> > [ thread pid 0 tid 100081 ]
> > Stopped at      epoch_call_task+0x7b:   movq    ll+0xdf(%rax),%rcx
> > db> show registers
> > cs                        0x20
> > ds                        0x3b  ll+0x1a
> > es                        0x3b  ll+0x1a
> > fs                        0x13
> > gs                        0x1b
> > ss                           0
> > rax                          0
> > rcx                      0x858  ll+0x837
> > rdx         0xffffffff812f6968
> > rbx                        0xc
> > rsp         0xfffffe00004e19b0
> > rbp         0xfffffe00004e19f0
> > rsi                       0x14
> > rdi                          0
> > r8          0xfffff800038f3000
> > r9          0xffffffff81ff1620  vmspace0+0x130
> > r10         0xfffff800038f3000
> > r11                       0x40  ll+0x1f
> > r12         0xfffffe00004e19b8
> > r13                        0xc
> > r14         0xfffff8001f0ed400
> > r15         0xfffff800038f3000
> > rip         0xffffffff80bb68db  epoch_call_task+0x7b
> > rflags                 0x10086
> > epoch_call_task+0x7b:   movq    ll+0xdf(%rax),%rcx
> > db> bt
> > Tracing pid 0 tid 100081 td 0xfffff800038f3000
> > epoch_call_task() at epoch_call_task+0x7b/frame 0xfffffe00004e19f0
> > gtaskqueue_run_locked() at gtaskqueue_run_locked+0x139/frame 0xfffffe00004e1a40
> > gtaskqueue_thread_loop() at gtaskqueue_thread_loop+0x88/frame 0xfffffe00004e1a70
> > fork_exit() at fork_exit+0x84/frame 0xfffffe00004e1ab0
> > fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe00004e1ab0
> > --- trap 0, rip = 0, rsp = 0, rbp = 0 ---
> > db> x/s version
> > version:        FreeBSD 12.0-CURRENT #0 r333481: Fri May 11 09:08:40 CEST 2018\012    pho@t2.osted.lan:/usr/obj/usr/src/amd64.amd64/sys/PHO\012
> > db>
> >
> > - Peter



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