<div dir="ltr">Who is the best person to look at this?  It sounds like a codegen bug of some kind.  I assume it's using an llvm toolchain?</div><br><div class="gmail_quote"><div dir="ltr">On Wed, Sep 28, 2016 at 2:58 PM Evgenii Stepanov <<a href="mailto:eugeni.stepanov@gmail.com">eugeni.stepanov@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Stack trace:<br class="gmail_msg">
#0  0xb74b3850 in _GLOBAL__sub_I_DiagnosticInfo.cpp () at<br class="gmail_msg">
/code/llvm/include/llvm/Support/CommandLine.h:291<br class="gmail_msg">
#1  0xb747acd7 in __dl__ZN6soinfo16CallConstructorsEv.part.10 () from<br class="gmail_msg">
z/system/bin/linker<br class="gmail_msg">
#2  0xb747df8f in<br class="gmail_msg">
__dl__ZL29__linker_init_post_relocationR19KernelArgumentBlockj () from<br class="gmail_msg">
z/system/bin/linker<br class="gmail_msg">
#3  0xb74808c8 in __dl___linker_init () from z/system/bin/linker<br class="gmail_msg">
#4  0xb7481704 in __dl__start () from z/system/bin/linker<br class="gmail_msg">
#5  0x00000001 in ?? ()<br class="gmail_msg">
<br class="gmail_msg">
Source:<br class="gmail_msg">
291  void setDescription(StringRef S) { HelpStr = S; }<br class="gmail_msg">
<br class="gmail_msg">
Asm:<br class="gmail_msg">
=> 0xb74b3850 <+480>: movdqa %xmm2,0x40(%esp)<br class="gmail_msg">
<br class="gmail_msg">
This is an unaligned load. Your change must have triggered a bug in<br class="gmail_msg">
some other code.<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
On Wed, Sep 28, 2016 at 2:49 PM, Zachary Turner <<a href="mailto:zturner@google.com" class="gmail_msg" target="_blank">zturner@google.com</a>> wrote:<br class="gmail_msg">
> Sorry, I take that back.  If this change had any effect on existing code,<br class="gmail_msg">
> then llvm-symbolizer should have been asserting before my patch<br class="gmail_msg">
><br class="gmail_msg">
> On Wed, Sep 28, 2016 at 2:47 PM Zachary Turner <<a href="mailto:zturner@google.com" class="gmail_msg" target="_blank">zturner@google.com</a>> wrote:<br class="gmail_msg">
>><br class="gmail_msg">
>> That is quite surprising, I admit I haven't seen the stack trace, but I'm<br class="gmail_msg">
>> inclined to say that something is wrong with the bisection method.  The only<br class="gmail_msg">
>> thing this change could possibly do is allow an object to be constructed<br class="gmail_msg">
>> where previously a construction would have failed to compile.  So if this<br class="gmail_msg">
>> change had any effect on existing code, then llvm-symbolizer shouldn't have<br class="gmail_msg">
>> even been compiling before.<br class="gmail_msg">
>><br class="gmail_msg">
>> On Wed, Sep 28, 2016 at 2:36 PM Evgenii Stepanov<br class="gmail_msg">
>> <<a href="mailto:eugeni.stepanov@gmail.com" class="gmail_msg" target="_blank">eugeni.stepanov@gmail.com</a>> wrote:<br class="gmail_msg">
>>><br class="gmail_msg">
>>> This change broke llvm-symbolizer on android/x86 (and only x86), SEGV<br class="gmail_msg">
>>> at startup. Trying to get a stack trace...<br class="gmail_msg">
>>><br class="gmail_msg">
>>> On Mon, Sep 26, 2016 at 1:08 PM, Zachary Turner via llvm-commits<br class="gmail_msg">
>>> <<a href="mailto:llvm-commits@lists.llvm.org" class="gmail_msg" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br class="gmail_msg">
>>> > Author: zturner<br class="gmail_msg">
>>> > Date: Mon Sep 26 15:08:05 2016<br class="gmail_msg">
>>> > New Revision: 282433<br class="gmail_msg">
>>> ><br class="gmail_msg">
>>> > URL: <a href="http://llvm.org/viewvc/llvm-project?rev=282433&view=rev" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project?rev=282433&view=rev</a><br class="gmail_msg">
>>> > Log:<br class="gmail_msg">
>>> > Allow StringRef to be constructed from a null pointer.<br class="gmail_msg">
>>> ><br class="gmail_msg">
>>> > Differential Revision: <a href="https://reviews.llvm.org/D24904" rel="noreferrer" class="gmail_msg" target="_blank">https://reviews.llvm.org/D24904</a><br class="gmail_msg">
>>> ><br class="gmail_msg">
>>> > Modified:<br class="gmail_msg">
>>> >     llvm/trunk/include/llvm/ADT/StringRef.h<br class="gmail_msg">
>>> ><br class="gmail_msg">
>>> > Modified: llvm/trunk/include/llvm/ADT/StringRef.h<br class="gmail_msg">
>>> > URL:<br class="gmail_msg">
>>> > <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/StringRef.h?rev=282433&r1=282432&r2=282433&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/StringRef.h?rev=282433&r1=282432&r2=282433&view=diff</a><br class="gmail_msg">
>>> ><br class="gmail_msg">
>>> > ==============================================================================<br class="gmail_msg">
>>> > --- llvm/trunk/include/llvm/ADT/StringRef.h (original)<br class="gmail_msg">
>>> > +++ llvm/trunk/include/llvm/ADT/StringRef.h Mon Sep 26 15:08:05 2016<br class="gmail_msg">
>>> > @@ -73,14 +73,14 @@ namespace llvm {<br class="gmail_msg">
>>> >      /// Construct an empty string ref.<br class="gmail_msg">
>>> >      /*implicit*/ StringRef() : Data(nullptr), Length(0) {}<br class="gmail_msg">
>>> ><br class="gmail_msg">
>>> > +    /// Disable conversion from nullptr.  This prevents things like<br class="gmail_msg">
>>> > +    /// if (S == nullptr)<br class="gmail_msg">
>>> >      StringRef(std::nullptr_t) = delete;<br class="gmail_msg">
>>> ><br class="gmail_msg">
>>> >      /// Construct a string ref from a cstring.<br class="gmail_msg">
>>> > +    LLVM_ATTRIBUTE_ALWAYS_INLINE<br class="gmail_msg">
>>> >      /*implicit*/ StringRef(const char *Str)<br class="gmail_msg">
>>> > -      : Data(Str) {<br class="gmail_msg">
>>> > -        assert(Str && "StringRef cannot be built from a NULL<br class="gmail_msg">
>>> > argument");<br class="gmail_msg">
>>> > -        Length = ::strlen(Str); // invoking strlen(NULL) is undefined<br class="gmail_msg">
>>> > behavior<br class="gmail_msg">
>>> > -      }<br class="gmail_msg">
>>> > +        : Data(Str), Length(Str ? ::strlen(Str) : 0) {}<br class="gmail_msg">
>>> ><br class="gmail_msg">
>>> >      /// Construct a string ref from a pointer and length.<br class="gmail_msg">
>>> >      LLVM_ATTRIBUTE_ALWAYS_INLINE<br class="gmail_msg">
>>> ><br class="gmail_msg">
>>> ><br class="gmail_msg">
>>> > _______________________________________________<br class="gmail_msg">
>>> > llvm-commits mailing list<br class="gmail_msg">
>>> > <a href="mailto:llvm-commits@lists.llvm.org" class="gmail_msg" target="_blank">llvm-commits@lists.llvm.org</a><br class="gmail_msg">
>>> > <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br class="gmail_msg">
</blockquote></div>