<div dir="ltr"><div>I've started having those crashes in my sandbox recently (llvm+clang builds w/ shared libraries, unbuntu 14.04)</div><div><br></div><div>Apparently users of std::call_once need *executable* linked with libpthread. </div><div>Those that pull in libpthread by shared lib that uses it (e.g. by libLLVMSupport) tend to crash with std::call_once throwing system error -1.<br></div><div><br></div><div>This patch fixes the issues for me <a href="http://reviews.llvm.org/D21478">http://reviews.llvm.org/D21478</a></div><div>I wonder if it helps with PPC crashes you've mentioned, too.</div><div><br></div><div>--Artem</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jun 6, 2016 at 11:48 AM, Chandler Carruth via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I don't know the relevant details, but it is the ppc64be and ppc64le multistage buildbots that I was looking at. They both failed when I introduced this code path:<div><br></div><div><a href="http://lab.llvm.org:8011/builders/clang-ppc64be-linux-multistage/builds/2703" target="_blank">http://lab.llvm.org:8011/builders/clang-ppc64be-linux-multistage/builds/2703</a><br></div><div><a href="http://lab.llvm.org:8011/builders/clang-ppc64le-linux-multistage/builds/1169" target="_blank">http://lab.llvm.org:8011/builders/clang-ppc64le-linux-multistage/builds/1169</a><br></div><div><br></div><div>Note that the ppc64be build bot continues to fail in stage 1 even after this commit:</div><div><a href="http://lab.llvm.org:8011/builders/clang-ppc64be-linux-multistage/builds/2707" target="_blank">http://lab.llvm.org:8011/builders/clang-ppc64be-linux-multistage/builds/2707</a><br></div><div><br></div><div>There is something weird with the host compiler for this build bot that is causing it to still go down the std::call_once path. I have no idea what. =/</div><div><br></div><div>Filed <a href="http://llvm.org/PR28024" target="_blank">http://llvm.org/PR28024</a></div></div><div class="HOEnZb"><div class="h5"><br><div class="gmail_quote"><div dir="ltr">On Sun, Jun 5, 2016 at 1:36 AM Hal Finkel via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Chandler,<br>
<br>
Can you please file a bug report with the relevant platform details?<br>
<br>
 -Hal<br>
<br>
----- Original Message -----<br>
> From: "Chandler Carruth via llvm-commits" <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>><br>
> To: <a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
> Sent: Saturday, June 4, 2016 9:46:03 PM<br>
> Subject: [llvm] r271821 - Disable the use of std::call_once on PowerPC due to an apparent bug in<br>
><br>
> Author: chandlerc<br>
> Date: Sat Jun  4 21:46:01 2016<br>
> New Revision: 271821<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=271821&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=271821&view=rev</a><br>
> Log:<br>
> Disable the use of std::call_once on PowerPC due to an apparent bug<br>
> in<br>
> libstdc++ (or in compilers, or somewhere, I can't track it down) that<br>
> causes unittests that use INITIALIZE_PASS to crash.<br>
><br>
> The analysis I've been able to do is that inside libstdc++'s<br>
> implementation of std::call_once, it uses pthread_once, and when that<br>
> returns an error code it throws std::system_error which then<br>
> eventually<br>
> calls std::terminate.<br>
><br>
> Hopefully some of the folks who work on PPC can try to sort out<br>
> what's<br>
> going on here. Until then, they'll have to use the fallback<br>
> implementation.<br>
><br>
> Modified:<br>
>     llvm/trunk/include/llvm/Support/Threading.h<br>
><br>
> Modified: llvm/trunk/include/llvm/Support/Threading.h<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/Threading.h?rev=271821&r1=271820&r2=271821&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/Threading.h?rev=271821&r1=271820&r2=271821&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/include/llvm/Support/Threading.h (original)<br>
> +++ llvm/trunk/include/llvm/Support/Threading.h Sat Jun  4 21:46:01<br>
> 2016<br>
> @@ -23,7 +23,8 @@<br>
>  // We use std::call_once on all Unix platforms except for NetBSD<br>
>  with<br>
>  // libstdc++. That platform has a bug they are working to fix, and<br>
>  they'll<br>
>  // remove the NetBSD checks once fixed.<br>
> -#if defined(LLVM_ON_UNIX) && !(defined(__NetBSD__) &&<br>
> !defined(_LIBCPP_VERSION))<br>
> +#if defined(LLVM_ON_UNIX) &&<br>
>                                                   \<br>
> +    !(defined(__NetBSD__) && !defined(_LIBCPP_VERSION)) &&<br>
> !defined(__ppc__)<br>
>  #define LLVM_THREADING_USE_STD_CALL_ONCE 1<br>
>  #else<br>
>  #define LLVM_THREADING_USE_STD_CALL_ONCE 0<br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
><br>
<br>
--<br>
Hal Finkel<br>
Assistant Computational Scientist<br>
Leadership Computing Facility<br>
Argonne National Laboratory<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>
</div></div><br>_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">--Artem Belevich</div></div>
</div>