Dave,

With the advent of a compiling tree (hooray!), I've updated, rebuilt,
installed, and tried running all the C libraries and API pieces again.
Sadly, things are not working.

Very early in the bring-up of a C executable that is linked to VPP's
libraries
(vlibmemoryclient vlibapi svm vppinfra), it goes into the weeds trying to
load some statically configured CLI initialization functions dynamically:

That error looks like this:

Program received signal SIGSEGV, Segmentation fault.
__vlib_cli_command_registration_cli_show_api_histogram_command ()
    at /..../vpp/src/vlibmemory/memory_vlib.c:727
727 VLIB_CLI_COMMAND (cli_show_api_histogram_command, static) = {
Missing separate debuginfos, use: debuginfo-install clixon-3.2-0.x86_64
(gdb) where
#0  __vlib_cli_command_registration_cli_show_api_histogram_command ()
    at /..../vpp/src/vlibmemory/memory_vlib.c:727
#1  0x00007ffff7dec1e3 in call_init (env=0x7fffffffe3d0,
argv=0x7fffffffe398,
    argc=6, l=<optimized out>) at dl-init.c:82
#2  _dl_init (main_map=main_map@entry=0x760790, argc=6, argv=0x7fffffffe398,
    env=0x7fffffffe3d0) at dl-init.c:131
#3  0x00007ffff7df08f6 in dl_open_worker (a=a@entry=0x7fffffffde28)
    at dl-open.c:560
#4  0x00007ffff7debff4 in _dl_catch_error (
    objname=objname@entry=0x7fffffffde18,
    errstring=errstring@entry=0x7fffffffde20,
    mallocedp=mallocedp@entry=0x7fffffffde10,
    operate=operate@entry=0x7ffff7df0540 <dl_open_worker>,
    args=args@entry=0x7fffffffde28) at dl-error.c:177
#5  0x00007ffff7deffeb in _dl_open (
    file=0x7ffff7ff3f20 "/....../vpp_backend.so",
    mode=-2147483646, caller_dlopen=<optimized out>, nsid=-2, argc=6,
    argv=0x7fffffffe398, env=0x7fffffffe3d0) at dl-open.c:650


As we are not using any aspect of the VPP project's actual CLI code,
there is no way we should be loading anything like a CLI command.

I suspect that this init data structure (line 727 of
src/vlibmemory/memory_vlib.c)
is incorrectly present in the API library due to some *other* symbol in
this object
file being referenced and dragging in the CLI init piece accidentally.

Here is line 727:

VLIB_CLI_COMMAND (cli_show_api_histogram_command, static) = {
    .path = "show api histogram",
    .short_help = "show api histogram",
    .function = vl_api_show_histogram_command,
};


I have git bisected the introduction of this bad behavior to this commit:

80f54e20270ed0628ee725e3e3c515731a0188f2
Author: Dave Barach <d...@barachs.net>
Date:   Wed Mar 8 19:08:56 2017 -0500

    vlib_mains == 0 special cases be gone

    Clean up spurious binary API client link dependency on libvlib.so,
    which managed to hide behind vlib_mains == 0 checks reached by
    VLIB_xxx_FUNCTION macros.

    Change-Id: I5df1f8ab07dca1944250e643ccf06e60a8462325
    Signed-off-by: Dave Barach <d...@barachs.net>

If no one beats me to it, I'll try to isolate it a bit more tomorrow.

Thanks,
jdl
_______________________________________________
vpp-dev mailing list
vpp-dev@lists.fd.io
https://lists.fd.io/mailman/listinfo/vpp-dev

Reply via email to