firefox build broken under clang 3.3
Rafael Espíndola
rafael.espindola at gmail.com
Wed May 1 02:55:55 UTC 2013
OK, I was able to reproduce this. I am trying to reduce the testcase.
On 30 April 2013 14:23, Dimitry Andric <dim at freebsd.org> wrote:
> On Apr 30, 2013, at 18:34, Jan Beich <jbeich at tormail.org> wrote:
> ...
>> 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
>
> The firefox crash in that post was with -O2, so it is most likely not due to the vectorizer then.
>
> In any case, I have not been able to reproduce that either. I have browsed stackoverflow.com for about 5 minutes, clicking a whole bunch of random articles and links, and no problems whatsoever occurred. That is with the default www/firefox port, which seems to be the released Firefox 20.0, at its default settings, on amd64.
>
>
>> 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
>
> I do not like the workaround in that Mozilla bug, since it simply disables the vectorizer. I can understand that software must always ship tomorrow, but it would have been nicer to attempt to figure out what is incorrectly optimized, and why...
>
>
>>> 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.
>
> Indeed. To work around this, use the following diff:
>
> Index: Mk/bsd.port.mk
> ===================================================================
> --- Mk/bsd.port.mk (revision 316903)
> +++ Mk/bsd.port.mk (working copy)
> @@ -1580,7 +1580,7 @@
> .if defined(WITH_DEBUG) && !defined(WITHOUT_DEBUG)
> STRIP_CMD= ${TRUE}
> DEBUG_FLAGS?= -g
> -CFLAGS:= ${CFLAGS:N-O*:N-fno-strict*} ${DEBUG_FLAGS}
> +CFLAGS:= ${CFLAGS} ${DEBUG_FLAGS}
> .endif
>
> .if defined(NOPORTDOCS)
>
More information about the freebsd-ports
mailing list