[llvm] r271821 - Disable the use of std::call_once on PowerPC due to an apparent bug in

Artem Belevich via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 17 13:14:11 PDT 2016


I've started having those crashes in my sandbox recently (llvm+clang builds
w/ shared libraries, unbuntu 14.04)

Apparently users of std::call_once need *executable* linked with
libpthread.
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.

This patch fixes the issues for me http://reviews.llvm.org/D21478
I wonder if it helps with PPC crashes you've mentioned, too.

--Artem

On Mon, Jun 6, 2016 at 11:48 AM, Chandler Carruth via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> 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:
>
>
> http://lab.llvm.org:8011/builders/clang-ppc64be-linux-multistage/builds/2703
>
> http://lab.llvm.org:8011/builders/clang-ppc64le-linux-multistage/builds/1169
>
> Note that the ppc64be build bot continues to fail in stage 1 even after
> this commit:
>
> http://lab.llvm.org:8011/builders/clang-ppc64be-linux-multistage/builds/2707
>
> 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. =/
>
> Filed http://llvm.org/PR28024
>
> On Sun, Jun 5, 2016 at 1:36 AM Hal Finkel via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>> Hi Chandler,
>>
>> Can you please file a bug report with the relevant platform details?
>>
>>  -Hal
>>
>> ----- Original Message -----
>> > From: "Chandler Carruth via llvm-commits" <llvm-commits at lists.llvm.org>
>> > To: llvm-commits at lists.llvm.org
>> > Sent: Saturday, June 4, 2016 9:46:03 PM
>> > Subject: [llvm] r271821 - Disable the use of std::call_once on PowerPC
>> due to an apparent bug in
>> >
>> > Author: chandlerc
>> > Date: Sat Jun  4 21:46:01 2016
>> > New Revision: 271821
>> >
>> > URL: http://llvm.org/viewvc/llvm-project?rev=271821&view=rev
>> > Log:
>> > Disable the use of std::call_once on PowerPC due to an apparent bug
>> > in
>> > libstdc++ (or in compilers, or somewhere, I can't track it down) that
>> > causes unittests that use INITIALIZE_PASS to crash.
>> >
>> > The analysis I've been able to do is that inside libstdc++'s
>> > implementation of std::call_once, it uses pthread_once, and when that
>> > returns an error code it throws std::system_error which then
>> > eventually
>> > calls std::terminate.
>> >
>> > Hopefully some of the folks who work on PPC can try to sort out
>> > what's
>> > going on here. Until then, they'll have to use the fallback
>> > implementation.
>> >
>> > Modified:
>> >     llvm/trunk/include/llvm/Support/Threading.h
>> >
>> > Modified: llvm/trunk/include/llvm/Support/Threading.h
>> > URL:
>> >
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/Threading.h?rev=271821&r1=271820&r2=271821&view=diff
>> >
>> ==============================================================================
>> > --- llvm/trunk/include/llvm/Support/Threading.h (original)
>> > +++ llvm/trunk/include/llvm/Support/Threading.h Sat Jun  4 21:46:01
>> > 2016
>> > @@ -23,7 +23,8 @@
>> >  // We use std::call_once on all Unix platforms except for NetBSD
>> >  with
>> >  // libstdc++. That platform has a bug they are working to fix, and
>> >  they'll
>> >  // remove the NetBSD checks once fixed.
>> > -#if defined(LLVM_ON_UNIX) && !(defined(__NetBSD__) &&
>> > !defined(_LIBCPP_VERSION))
>> > +#if defined(LLVM_ON_UNIX) &&
>> >                                                   \
>> > +    !(defined(__NetBSD__) && !defined(_LIBCPP_VERSION)) &&
>> > !defined(__ppc__)
>> >  #define LLVM_THREADING_USE_STD_CALL_ONCE 1
>> >  #else
>> >  #define LLVM_THREADING_USE_STD_CALL_ONCE 0
>> >
>> >
>> > _______________________________________________
>> > llvm-commits mailing list
>> > llvm-commits at lists.llvm.org
>> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>> >
>>
>> --
>> Hal Finkel
>> Assistant Computational Scientist
>> Leadership Computing Facility
>> Argonne National Laboratory
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
>


-- 
--Artem Belevich
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160617/749dcd79/attachment.html>


More information about the llvm-commits mailing list