<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/docker-playground/+/16891">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">README.md: Document how to get gdb backtrace from process crash<br><br>Change-Id: I507707a3ed0e7f88bcc9006612df531c848b949e<br>---<br>M README.md<br>1 file changed, 37 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/91/16891/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/README.md b/README.md</span><br><span>index 05ee31f..479e045 100644</span><br><span>--- a/README.md</span><br><span>+++ b/README.md</span><br><span>@@ -72,6 +72,43 @@</span><br><span> decided to scrap the file, and just keep the short list of dependencies</span><br><span> right above where they would be needed in the `jenkins.sh`.</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+## Obtaining gdb backtrace from crash</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+If for instance TTCN3 test is producing a crash on a program running in docker,</span><br><span style="color: hsl(120, 100%, 40%);">+eg. osmo-msc, it is desirable to get a full crash report. This section describes</span><br><span style="color: hsl(120, 100%, 40%);">+how to do so.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+First, open `osmo-$program/Dockerfile` and add lines to install `gdb` plus</span><br><span style="color: hsl(120, 100%, 40%);">+`$program` dependency debug packages. For instance:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+```</span><br><span style="color: hsl(120, 100%, 40%);">++RUN    apt-get install -y --no-install-recommends \</span><br><span style="color: hsl(120, 100%, 40%);">++               gdb \</span><br><span style="color: hsl(120, 100%, 40%);">++               libosmocore-dbg libosmo-abis-dbg libosmo-netif-dbg libosmo-sigtran-dbg osmo-msc-dbg && \</span><br><span style="color: hsl(120, 100%, 40%);">++               apt-get clean</span><br><span style="color: hsl(120, 100%, 40%);">+```</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+In same `Dockerfile` file, modify configure to build with debug symbols enabled</span><br><span style="color: hsl(120, 100%, 40%);">+and other interesting options, such as `--enable-sanitize`:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+```</span><br><span style="color: hsl(120, 100%, 40%);">+-       ./configure --enable-smpp --enable-iu && \</span><br><span style="color: hsl(120, 100%, 40%);">++       export CPPFLAGS="-g -O0 -fno-omit-frame-pointer" && \</span><br><span style="color: hsl(120, 100%, 40%);">++       export CFLAGS="-g -O0 -fno-omit-frame-pointer" && \</span><br><span style="color: hsl(120, 100%, 40%);">++       export CXXFLAGS="-g -O0 -fno-omit-frame-pointer" && \</span><br><span style="color: hsl(120, 100%, 40%);">++       ./configure --enable-smpp --enable-iu --enable-sanitize && \</span><br><span style="color: hsl(120, 100%, 40%);">+```</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Finally open the script you use to run the program (for instance</span><br><span style="color: hsl(120, 100%, 40%);">+`ttcn3-$program-master/jenkins.sh`), and modify it to launch the process using</span><br><span style="color: hsl(120, 100%, 40%);">+gdb, and to print a full backtrace when control returns to gdb (when the process</span><br><span style="color: hsl(120, 100%, 40%);">+crashes):</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+```</span><br><span style="color: hsl(120, 100%, 40%);">+-/bin/sh -c "osmo-msc -c /data/osmo-msc.cfg >>/data/osmo-msc.log 2>&1"</span><br><span style="color: hsl(120, 100%, 40%);">++/bin/sh -c "gdb -ex 'run' -ex 'bt full' --arg osmo-msc -c /data/osmo-msc.cfg >>/data/osmo-msc.log 2>&1"</span><br><span style="color: hsl(120, 100%, 40%);">+```</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> ## See also</span><br><span> * [Overhyped Docker](http://laforge.gnumonks.org/blog/20170503-docker-overhyped/)</span><br><span>   for related rambling on why this doesn't work as well as one would</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/docker-playground/+/16891">change 16891</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/docker-playground/+/16891"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: docker-playground </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I507707a3ed0e7f88bcc9006612df531c848b949e </div>
<div style="display:none"> Gerrit-Change-Number: 16891 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>