firefox build broken under clang 3.3

Jan Beich jbeich at tormail.org
Tue Apr 30 16:37:31 UTC 2013


Brandon Gooch <jamesbrandongooch at gmail.com> writes:

> On Fri, Apr 19, 2013 at 1:06 PM, Florian Smeets <flo at smeets.im> wrote:
>> On 19.04.13 19:48, Dimitry Andric wrote:
>>> On Apr 19, 2013, at 17:56, Florian Smeets <flo at smeets.im> wrote:
>>>
>>>> On 19.04.13 04:01, kit wrote:
>>>>> updated current and now firefox and thunderbird both fail to build under
>>>>> the new clang 3.3. has anyone seen this or know how to fix?
>>>>
>>>> The fix is here:
>>>>
>>>> http://tb.smeets.im/~flo/gecko-clang33-fixes.diff
>>>>
>>>> It will be committed after the freeze.
>>>
>>> Are these fixes from upstream?  If not, it would be nice to send them there...
>>>
>>>
>>
>> patch-bug854936 is a workaround because we don't have
>> http://llvm.org/viewvc/llvm-project?view=revision&revision=178950 yet.
>>
>> firefox-nightly (in our gecko svn repo) already compiles fine without
>> patch-clang33
>>
>> So everything should be fine :)
>>
>> Florian
>
> Thanks for fixing the build issues.
>
> Now, I've built Firefox with Clang, but the darn thing segfaults at
> the drop of a hat:
>
> $ gdb /usr/local/bin/firefox firefox.core
> ...
> (gdb) bt
> #0  0x00000008011eefaa in thr_kill () from /lib/libc.so.7
> #1  0x00000008024d254d in XRE_InstallX11ErrorHandler ()
>    from /usr/local/lib/firefox/libxul.so
> #2  0x0000000800f74116 in swapcontext () from /lib/libthr.so.3
> #3  0x0000000800f73d39 in sigaction () from /lib/libthr.so.3
> #4  0x00007ffffffff193 in ?? ()
> #5  0x0000000800f73c20 in sigaction () from /lib/libthr.so.3
> Previous frame inner to this frame (corrupt stack?)

The faulting function is lost within crash handler. If you build
firefox with

  # use DEBUG_FLAGS or set STRIP to empty explicitly
  CFLAGS += ${DEBUG_FLAGS}
  DEBUG_FLAGS += -O0 -g

jaeger jit crash would look like

http://lists.freebsd.org/pipermail/freebsd-current/2013-April/041165.html

It doesn't happen on firefox23 with baseline jit[1] disabled via pref.
A big change like zones (bug 759585) may have refactored code enough
to not hit the clang bug. So, try either clang trunk or

http://trillian.chruetertee.ch/freebsd-gecko/changeset/1256/trunk/www/firefox/files/patch-clang33

The latter pessimizes inlining for clang 3.2 as well.

[1] baseline crashes in a different way
    https://bugzilla.mozilla.org/show_bug.cgi?id=860867

>
> Rebuilding with debugging symbols provides no further insight, as that
> seems to provide a work-around for whatever the root cause may be
> (i.e. no more segfaults).

DEBUG enables compile-time diagnostics and strips any -O* from CFLAGS.


More information about the freebsd-ports mailing list