On Thu, Aug 22, 2019 at 12:07 PM Rick Payne <ri...@rossfell.co.uk> wrote:

> On Thu, 2019-08-22 at 10:47 +0300, Nadav Har'El wrote:
> > Do you know how to get a backtrace from gdb?
>
> Yes, see below. It wasn't running out of memory:
>
> (gdb)  osv mem
> Total Memory: 8589392896 Bytes
> Mmap Memory:  2231259136 Bytes (25.98%)
> Free Memory:  7464316928 Bytes (86.90%)
>
> This is the most recent one:
>
> (gdb) bt
> #0  0x000000004022987e in abort (fmt=fmt@entry=0x406738f2 "exception
> nested too deeply") at runtime.cc:121
> #1  0x0000000040397bf6 in sched::arch_cpu::enter_exception
> (this=<optimized out>) at arch/x64/arch-cpu.cc:19
> #2  sched::exception_guard::exception_guard (this=<optimized out>) at
> arch/x64/arch-cpu.cc:37
> #3  0x000000004039a97c in page_fault (ef=0xffff80000001c048) at
> arch/x64/mmu.cc:22
> #4  <signal handler called>
> #5  0x0000000040397d3b in safe_load<void*> (data=@0xffff8001032b13d0:
> 0x0, potentially_bad_pointer=0x2000af800000) at arch/x64/safe-ptr.hh:33
> #6  backtrace_safe (pc=pc@entry=0xffff8001032b1330, nr=nr@entry=128) at
> arch/x64/backtrace.cc:26
> #7  0x00000000402295a6 in print_backtrace () at runtime.cc:79
> #8  0x000000004022987c in abort (fmt=fmt@entry=0x40644c28 "Assertion
> failed: %s (%s: %s: %d)\n") at runtime.cc:121
> #9  0x00000000402298eb in __assert_fail (expr=expr@entry=0x40658734
> "current_id < rings.size()", file=file@entry=0x40658810
> "include/lockfree/unordered_ring_mpsc.hh",
>     line=line@entry=111,
>     func=func@entry=0x40658840 <bool unordered_ring_mpsc<harvest,
> 1024u>::emplace<unsigned long&, void const*&, unsigned int&, unsigned
> int&, esource&>(unsigned long&, void const*&, unsigned int&, unsigned
> int&, esource&)::__func__> "emplace") at runtime.cc:139
> #10 0x000000004029e027 in unordered_ring_mpsc<harvest,
> 1024u>::emplace<unsigned long&, void const*&, unsigned int&, unsigned
> int&, esource&> (this=<optimized out>)
>     at include/lockfree/unordered_ring_mpsc.hh:111
> #11 random_harvestq_internal (somecounter=<optimized out>,
> entropy=<optimized out>, count=<optimized out>, bits=<optimized out>,
> origin=<optimized out>)
>     at bsd/sys/dev/random/random_harvestq.cc:164
> #12 0x000000004039c02b in harvest_interrupt_randomness
> (frame=0xffff8001032b2068, irq=32) at include/osv/intr_random.hh:22
> #13 interrupt (frame=0xffff8001032b2068) at arch/x64/exceptions.cc:259
> #14 <signal handler called>
> #15 console::isa_serial_console::putchar (ch=97 'a') at drivers/isa-
> serial.cc:108
> #16 console::isa_serial_console::write (this=<optimized out>,
>     str=0x409c00c3 <debug_ll::msg+35>
> "ge_range_allocator::alloc_aligned(unsigned long, unsigned long,
> unsigned long, bool)+550>\n", len=<optimized out>) at drivers/isa-
> serial.cc:79
> #17 0x00000000403431d8 in console::console_multiplexer::drivers_write
> (len=1,
>     str=0x409c00c2 <debug_ll::msg+34>
> "age_range_allocator::alloc_aligned(unsigned long, unsigned long,
> unsigned long, bool)+550>\n", this=0x409a97e0 <console::mux>)
>     at drivers/console-multiplexer.cc:49
> #18 console::console_multiplexer::<lambda(char const*,
> size_t)>::operator() (len=1,
>     str=0x409c00c2 <debug_ll::msg+34>
> "age_range_allocator::alloc_aligned(unsigned long, unsigned long,
> unsigned long, bool)+550>\n", __closure=<optimized out>)
>     at drivers/console-multiplexer.cc:36
> #19 std::_Function_handler<void(char const*, long unsigned int),
> console::console_multiplexer::start()::<lambda(char const*, size_t)>
> >::_M_invoke(const std::_Any_data &, const char *&&, unsigned long &&)
> (__functor=..., __args#0=<optimized out>, __args#1=<optimized out>) at
> /usr/include/c++/7/bits/std_function.h:316
> #20 0x0000000040343d33 in std::function<void (char const*, unsigned
> long)>::operator()(char const*, unsigned long) const
> (__args#1=<optimized out>, __args#0=<optimized out>,
>     this=0x409a9840 <console::mux+96>) at
> /usr/include/c++/7/bits/std_function.h:706
> #21 console::LineDiscipline::write(char const*, unsigned long,
> std::function<void (char const*, unsigned long)>&)
> (this=0xffffa001017d9900,
>     str=0x409c00c3 <debug_ll::msg+35>
> "ge_range_allocator::alloc_aligned(unsigned long, unsigned long,
> unsigned long, bool)+550>\n", len=<optimized out>, writer=...)
>     at drivers/line-discipline.cc:179
> #22 0x0000000040343571 in console::console_multiplexer::write_ll (
> this=this@entry=0x409a97e0 <console::mux>, str=str@entry=0x409c00a0
> <debug_ll::msg> "\n[backtrace]\n",
>     len=<optimized out>) at drivers/console-multiplexer.cc:71
> #23 0x0000000040342e33 in console::write_ll (msg=msg@entry=0x409c00a0
> <debug_ll::msg> "\n[backtrace]\n", len=<optimized out>) at
> drivers/console.cc:63
> #24 0x00000000403d9b68 in debug_ll (fmt=fmt@entry=0x406740d1 "RIP:
> 0x%016lx <%s>\n") at core/debug.cc:250
> #25 0x000000004039e752 in dump_registers (ef=ef@entry=0xffff80000001b04
> 8) at arch/x64/dump.cc:20
> #26 0x0000000040334a21 in mmu::vm_sigsegv (addr=<optimized out>,
> ef=0xffff80000001b048) at core/mmu.cc:1314
> #27 0x000000004033723a in mmu::vm_fault (addr=<optimized out>,
> addr@entry=18446603337326395384, ef=ef@entry=0xffff80000001b048) at
> core/mmu.cc:1337
> #28 0x000000004039a9c1 in page_fault (ef=0xffff80000001b048) at
> arch/x64/mmu.cc:38
> #29 <signal handler called>
> #30 memory::page_range_allocator::insert<true> (pr=..., this=0x409c1300
> <memory::free_page_ranges>) at core/mempool.cc:578
> #31
> memory::page_range_allocator::<lambda(memory::page_range&)>::operator()
> (header=..., __closure=<synthetic pointer>) at core/mempool.cc:751
> #32
> memory::page_range_allocator::for_each<memory::page_range_allocator::al
> loc_aligned(size_t, size_t, size_t,
> bool)::<lambda(memory::page_range&)> > (f=..., min_order=<optimized
> out>,
>     this=0x409c1300 <memory::free_page_ranges>) at core/mempool.cc:809
> #33 memory::page_range_allocator::alloc_aligned (this=this@entry=0x409c
> 1300 <memory::free_page_ranges>, size=size@entry=2097152,
> offset=offset@entry=0, alignment=alignment@entry=2097152,
>     fill=fill@entry=true) at core/mempool.cc:736
> #34 0x00000000403e7414 in memory::alloc_huge_page (N=N@entry=2097152)
> at core/mempool.cc:1601
> #35 0x000000004033c5ee in
> mmu::uninitialized_anonymous_page_provider::map (this=0x40930030
> <mmu::page_allocator_init>, offset=56623104, ptep=..., pte=...,
> write=<optimized out>)
> ---Type <return> to continue, or q <return> to quit---
>     at core/mmu.cc:1037
> #36 0x000000004033b919 in mmu::populate<(mmu::account_opt)0>::page<1>
> (offset=56623104, ptep=..., this=0xffff8001032b5ba0) at core/mmu.cc:532
> #37 mmu::page<mmu::populate<(mmu::account_opt)0>, 1> (offset=56623104,
> ptep=..., pops=...) at core/mmu.cc:311
> #38 mmu::map_level<mmu::populate<(mmu::account_opt)0>, 2>::operator()
> (base_virt=35187316490240, parent=..., this=<synthetic pointer>) at
> core/mmu.cc:437
> #39 mmu::map_level<mmu::populate<(mmu::account_opt)0>, 3>::map_range<2>
> (this=<synthetic pointer>, base_virt=35186519572480, ptep=...,
> slop=4096, page_mapper=..., size=2097152,
>     vcur=<optimized out>) at core/mmu.cc:399
> #40 mmu::map_level<mmu::populate<(mmu::account_opt)0>, 3>::operator()
> (base_virt=35186519572480, parent=..., this=<synthetic pointer>) at
> core/mmu.cc:449
> #41 mmu::map_level<mmu::populate<(mmu::account_opt)0>, 4>::map_range<3>
> (this=<synthetic pointer>, base_virt=35184372088832, ptep=...,
> slop=4096, page_mapper=..., size=2097152,
>     vcur=<optimized out>) at core/mmu.cc:399
> #42 mmu::map_level<mmu::populate<(mmu::account_opt)0>, 4>::operator()
> (base_virt=35184372088832, parent=..., this=<synthetic pointer>) at
> core/mmu.cc:449
> #43 mmu::map_range<mmu::populate<(mmu::account_opt)0> > (slop=4096,
> page_mapper=..., size=<optimized out>, vstart=<optimized out>,
> vma_start=<optimized out>) at core/mmu.cc:354
> #44 mmu::operate_range<mmu::populate<(mmu::account_opt)0> >
> (size=<optimized out>, start=<optimized out>, vma_start=<optimized
> out>, mapper=...) at core/mmu.cc:806
> #45 mmu::vma::operate_range<mmu::populate<(mmu::account_opt)0> >
> (size=<optimized out>, addr=<optimized out>, mapper=...,
> this=0xffffa00105ad2c00) at core/mmu.cc:1412
> #46 mmu::populate_vma<(mmu::account_opt)0> (write=<optimized out>,
> size=<optimized out>, v=<optimized out>, vma=0xffffa00105ad2c00) at
> core/mmu.cc:1206
> #47 mmu::vma::fault (this=0xffffa00105ad2c00, addr=<optimized out>,
> ef=<optimized out>) at core/mmu.cc:1439
> #48 0x00000000403373e1 in mmu::vm_fault (addr=<optimized out>,
> addr@entry=35187316490240, ef=ef@entry=0xffff8001032b6068) at
> core/mmu.cc:1341
> #49 0x000000004039a9c1 in page_fault (ef=0xffff8001032b6068) at
> arch/x64/mmu.cc:38
>

So, we have a page_fault here, and most of the lines above are not
interesting, additional bugs while printing the strack trace :-( It would
be nice if we fixed those issues too, but it's less important than fixing
the real bug.

#50 <signal handler called>
> #51 0x0000100005bc6d43 in ?? ()
>

Please run "osv syms" to allow gdb to find your application object files,
and show lines there. Perhaps it's a segfault inside your application, not
the kernel?

#52 0x00002000494ae438 in ?? ()
> #53 0x00000000061ec000 in ?? ()
> #54 0x0000200040f55ab0 in ?? ()
> #55 0x0000200040f55a98 in ?? ()
> #56 0x0000200040f55aa0 in ?? ()
>
>
>

-- 
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to osv-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/osv-dev/CANEVyjvCUL4%3DFK1v4gYayY4UWPDSvM6C%2BFBOic9GRmR-4JjyUA%40mail.gmail.com.

Reply via email to