Uploaded image for project: 'vpp'
  1. vpp
  2. VPP-1944

Make vlib_validate_simple_counter () return error when no memory for new counters

XMLWordPrintable

    • Icon: Improvement Improvement
    • Resolution: Unresolved
    • Icon: High High
    • None
    • None
    • vlib
    • None

      Currently vlib_validate_simple_counter () is a void function.

      When it is called to add new counters but no memory in statseg, VPP crashes:

      #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
      #1 0x00007ffff462c8b1 in __GI_abort () at abort.c:79
      #2 0x00000000004071d3 in os_panic () at /home/bzhou2/work/titan/vpp/vpp/vpp-repo/src/vpp/vnet/main.c:366
      #3 0x00007ffff55c3ae9 in os_out_of_memory () at /home/bzhou2/work/titan/vpp/vpp/vpp-repo/src/vppinfra/unix-misc.c:222
      #4 0x00007ffff55c8195 in clib_mem_alloc_aligned_at_offset (size=674007564, align=8, align_offset=8, os_out_of_memory_on_failure=1)
       at /home/bzhou2/work/titan/vpp/vpp/vpp-repo/src/vppinfra/mem.h:147
      #5 0x00007ffff55c7ecd in vec_resize_allocate_memory (v=0x7fff7cc50a40, length_increment=1, data_bytes=449338456, header_bytes=8, data_align=8, numa_id=255)
       at /home/bzhou2/work/titan/vpp/vpp/vpp-repo/src/vppinfra/vec.c:107
      #6 0x00000000004113a0 in _vec_resize_inline (v=0x7fff7cc50a40, length_increment=1, data_bytes=449338448, header_bytes=0, data_align=8, numa_id=255)
       at /home/bzhou2/work/titan/vpp/vpp/vpp-repo/src/vppinfra/vec.h:170
      #7 0x0000000000411097 in vlib_stats_create_counter (e=0x7fffb5f95a70, oldheap=0x7fffb45dc010) at /home/bzhou2/work/titan/vpp/vpp/vpp-repo/src/vpp/stats/stat_segment.c:124
      #8 0x00000000004109fd in vlib_stats_pop_heap (cm_arg=0x7fffee70a4c0, oldheap=0x7fffb45dc010, cindex=0, type=STAT_DIR_TYPE_COUNTER_VECTOR_SIMPLE)
       at /home/bzhou2/work/titan/vpp/vpp/vpp-repo/src/vpp/stats/stat_segment.c:225
      #9 0x00007ffff609ed9c in vlib_validate_simple_counter (cm=0x7fffee70a4c0, index=0) at /home/bzhou2/work/titan/vpp/vpp/vpp-repo/src/vlib/counter.c:89

       

      Is it possible to make vlib_validate_simple_counter () return error (instead of letting VPP crash)? That way caller can know it needs to stop adding more counters, but let system keep running without crashing.?

            Unassigned Unassigned
            bzhou Bin Zhou
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: