VPP/CoreFileMismatch
Introduction
Trying to decode a core file given a set of Debian packages which do not exactly match it is typically a fool's errand. Here's a detailed example of what happens 90+% of the time. Note that experienced vpp engineers become quite exasperated when faced with a legitimate issue which they can't even begin to address.
The example below is from a case where the provided Debian packages are from a release image (-g -O2), but the core file is from a debug image (-g -O0). We've seen every imaginable variation on this theme.
Finding Version Info
We install the Debian packages, and use vppctl to "show version verbose"
vpp# sh ver verbose Version: v19.01-rc0~591-g98d6b611 Compiled by: root Compile host: 7454ee796c9f Compile date: Wed Feb 20 20:40:41 UTC 2019 Compile location: /vpp/vpp Compiler: GCC 7.3.0 Current PID: 29215
And we look for some semblance of the provided date in the core file, with the "strings" utility:
# strings vpp_main-1550651139 | grep "Wed Feb 20" vpp v19.01-rc0~591-g98d6b611 built by root on 7454ee796c9f at Wed Feb 20 08:12:32 UTC 2019
Characteristically, the core file date will be earlier than the Debian package date.
GDB backfire
Given these data, gdb simply refuses:
Reading symbols from /usr/bin/vpp...Reading symbols from /usr/lib/debug/.build-id/fd/4c081bd3953ed9a674a096e5b09ee30b672c2b.debug...done.
done.
warning: core file may not match specified executable file.
[New LWP 38733]
[New LWP 38735]
[New LWP 38736]
[New LWP 38737]
[New LWP 38734]
[New LWP 38738]
Core was generated by `/vpp/vpp/build-root/install-vpp_debug-native/vpp/bin/vpp unix { log /var/log/vp'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007f8d062db3f8 in ?? ()
[Current thread is 1 (LWP 38733)]
(gdb) bt
#0 0x00007f8d062db3f8 in ?? ()
#1 0x1313131313131313 in ?? ()
#2 0x1313131313131313 in ?? ()
#3 0x1313131313131313 in ?? ()
#4 0x1313131313131313 in ?? ()
#5 0x1313131313131313 in ?? ()
#6 0x1313131313131313 in ?? ()
#7 0x1313131313131313 in ?? ()
<snip>
At this point, we ask whether the responsible individual's parents were actually married, etc.