<div dir="ltr">(Did further debugging with Andrei yesterday, and this turned out to be an issue with the app being run as a service because stdin was closed, triggering a segfault in a code path.)<div><br></div><div>Cheers,</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Apr 13, 2015 at 12:27 PM, Andrei Porumb <span dir="ltr"><<a href="mailto:anporumb@microsoft.com" target="_blank">anporumb@microsoft.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-US" link="#0563C1" vlink="#954F72">
<div>
<p class="MsoNormal">Hello all,<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">                I need to use Ubuntu Snappy to develop a service. The service has "special communication needs"... err... AMQP... so it needs a shared library to do so.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">                The code is written in C. For the executable to load the shared library, it needs to have set LD_LIBRARY_PATH. So the service is started by a bash script that doesn't do much, except:<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">                #!/bin/sh<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in">export LD_LIBRARY_PATH=./bin<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in">./bin/FunkyTv<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in">echo this line should never be executed.<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in"><u></u> <u></u></p>
<p class="MsoNormal" style="text-indent:.5in">This is the content of package.yaml<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in"><u></u> <u></u></p>
<p class="MsoNormal" style="text-indent:.5in">name: simplesampleamqp<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in">version: 45<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in">icon: meta/icon.png<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in">maintainer: <a href="mailto:anporumb@microsoft.com" target="_blank">anporumb@microsoft.com</a><u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in">services:<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in">- name: sum<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in">   description: SomeService<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in">   start: bin/sum.sh<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in">   caps: networking<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in"><u></u> <u></u></p>
<p class="MsoNormal" style="text-indent:.5in">Problem: the service doesn't start.
<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in"><u></u> <u></u></p>
<p class="MsoNormal" style="text-indent:.5in">Observations: if the app is run from the command line (as a regular app), the app runs just fine and performs as expected.<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in">When run as a service, there's no life.<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in"><u></u> <u></u></p>
<p class="MsoNormal" style="text-indent:.5in">Journalctl helps a little here, and this is the output:<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in"><u></u> <u></u></p>
<p class="MsoNormal" style="text-indent:.5in"><u></u> <u></u></p>
<p class="MsoNormal" style="text-indent:.5in">ubuntu@localhost:/apps/simplesampleamqp/current$ sudo journalctl -f -u simplesampleamqp_sum_45<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in">-- Logs begin at Sun 2015-04-12 16:33:29 UTC. --<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in">Apr 13 16:59:12 localhost.localdomain systemd[1]: Started SomeService.<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in">Apr 13 16:59:12 localhost.localdomain systemd[1]: Starting SomeService...<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in">Apr 13 16:59:12 localhost.localdomain sum.sh[2920]: Segmentation fault<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in">Apr 13 16:59:12 localhost.localdomain sum.sh[2920]: this line should never be executed.<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in"><u></u> <u></u></p>
<p class="MsoNormal" style="text-indent:.5in">The segmentation fault happens (as far as I can tell) before the first line in main. Since this is C code (as opposed to C++) there cannot be other code executed before main.<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in"><u></u> <u></u></p>
<p class="MsoNormal" style="text-indent:.5in">Further investigation revealed that in the small script that attempts to start the service there cannot be just any command. For example, "ldd" cannot be there (if it is, there's going to be a DENIAL something like
 : Apr 12 19:53:10 localhost.localdomain kernel: audit: type=1400 audit(1428868390.904:62): apparmor="DENIED" operation="exec" profile="simplesampleamqp_sum_44" name="/usr/bin/ldd" pid=2310 comm="sum.sh" requested_mask="x" denied_mask="x" fsuid=0 ouid=0). Echo
 is fine to be in the script...<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in"><u></u> <u></u></p>
<p class="MsoNormal" style="text-indent:.5in">I guess it all boils down to: how does one write some service in C that needs some shared libraries and loads them and executes? As an "app" the executable runs fine...<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in"><u></u> <u></u></p>
<p class="MsoNormal" style="text-indent:.5in"><u></u> <u></u></p>
<p class="MsoNormal" style="text-indent:.5in">Any hints/help is greatly appreciated.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Best Regards,<u></u><u></u></p>
<p class="MsoNormal">Andrei Porumb<u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in"><u></u> <u></u></p>
<p class="MsoNormal" style="text-indent:.5in"><u></u> <u></u></p>
<p class="MsoNormal" style="text-indent:.5in"><u></u> <u></u></p>
</div>
</div>

<br>--<br>
snappy-app-devel mailing list<br>
<a href="mailto:snappy-app-devel@lists.ubuntu.com">snappy-app-devel@lists.ubuntu.com</a><br>
Modify settings or unsubscribe at: <a href="https://lists.ubuntu.com/mailman/listinfo/snappy-app-devel" target="_blank">https://lists.ubuntu.com/mailman/listinfo/snappy-app-devel</a><br>
<br></blockquote></div><br></div>