Bug 221641 - www/firefox build fails with segmentation fault when running dtrace on powerpc
Summary: www/firefox build fails with segmentation fault when running dtrace on powerpc
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: powerpc Any
: --- Affects Only Me
Assignee: freebsd-gecko (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-08-20 06:32 UTC by Robin
Modified: 2018-09-29 19:00 UTC (History)
4 users (show)

See Also:
jbeich: maintainer-feedback+


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Robin 2017-08-20 06:32:53 UTC
Building this port on PowerPC fails with a dtrace segmentation fault, after most of the compile process has been completed:


dtrace -x nolibs -G -C -s /usr/ports/www/firefox/work/firefox-55.0.2/js/src/devtools/javascript-trace.d -o js-dtrace.o RegExp.o CTypes.o Library.o Parser.o StoreBuffer.o jsarray.o jsatom.o jsdtoa.o jsmath.o jsutil.o pm_stub.o Interpreter.o TraceLogging.o TraceLoggingGraph.o TraceLoggingTypes.o Unified_cpp_js_src0.o Unified_cpp_js_src1.o Unified_cpp_js_src10.o Unified_cpp_js_src11.o Unified_cpp_js_src12.o Unified_cpp_js_src13.o Unified_cpp_js_src14.o Unified_cpp_js_src15.o Unified_cpp_js_src16.o Unified_cpp_js_src17.o Unified_cpp_js_src18.o Unified_cpp_js_src19.o Unified_cpp_js_src2.o Unified_cpp_js_src20.o Unified_cpp_js_src21.o Unified_cpp_js_src22.o Unified_cpp_js_src23.o Unified_cpp_js_src24.o Unified_cpp_js_src25.o Unified_cpp_js_src26.o Unified_cpp_js_src27.o Unified_cpp_js_src28.o Unified_cpp_js_src29.o Unified_cpp_js_src3.o Unified_cpp_js_src30.o Unified_cpp_js_src31.o Unified_cpp_js_src32.o Unified_cpp_js_src33.o Unified_cpp_js_src34.o Unified_cpp_js_src35.o Unified_cpp_js_src36.o Unified_cpp_js_src37.o Unified_cpp_js_src38.o Unified_cpp_js_src39.o Unified_cpp_js_src4.o Unified_cpp_js_src40.o Unified_cpp_js_src5.o Unified_cpp_js_src6.o Unified_cpp_js_src7.o Unified_cpp_js_src8.o Unified_cpp_js_src9.o
gmake[7]: *** [Makefile:164: js-dtrace.o] Segmentation fault (core dumped)
Comment 1 Jan Beich freebsd_committer freebsd_triage 2017-08-20 08:39:15 UTC
What FreeBSD version? Can you get a stacktrace after building libc and libdtrace with debugging symbols? DTrace seems broken even on x86 with GCC (non-default) before 11.0-RELEASE. So, try disabling DTRACE port option.

$ cd www/firefox
$ make clean patch pre-configure BATCH=
$ cd $(make -V WRKSRC)/js/src
$ CC=gcc6 CXX=g++6 CPP=cpp6 CFLAGS=-g CXXFLAGS=-g ./configure \
    --disable-tests --disable-jemalloc --enable-dtrace
$ gmake
(gdb) r
Starting program: /usr/sbin/dtrace -x nolibs -G -C -s /wrkdirs/usr/ports/www/firefox/work/firefox-55.0.2/js/src/devtools/javascript-trace.d -o js-dtrace.o RegExp.o Parser.o StoreBuffer.o Disassembler-x86-shared.o jsarray.o jsatom.o jsdtoa.o jsmath.o jsutil.o pm_stub.o Interpreter.o TraceLogging.o TraceLoggingGraph.o TraceLoggingTypes.o Unified_cpp_js_src0.o Unified_cpp_js_src1.o Unified_cpp_js_src10.o Unified_cpp_js_src11.o Unified_cpp_js_src12.o Unified_cpp_js_src13.o Unified_cpp_js_src14.o Unified_cpp_js_src15.o Unified_cpp_js_src16.o Unified_cpp_js_src17.o Unified_cpp_js_src18.o Unified_cpp_js_src19.o Unified_cpp_js_src2.o Unified_cpp_js_src20.o Unified_cpp_js_src21.o Unified_cpp_js_src22.o Unified_cpp_js_src23.o Unified_cpp_js_src24.o Unified_cpp_js_src25.o Unified_cpp_js_src26.o Unified_cpp_js_src27.o Unified_cpp_js_src28.o Unified_cpp_js_src29.o Unified_cpp_js_src3.o Unified_cpp_js_src30.o Unified_cpp_js_src31.o Unified_cpp_js_src32.o Unified_cpp_js_src33.o Unified_cpp_js_src34.o Unified_cpp_js_src35.o Unified_cpp_js_src36.o Unified_cpp_js_src37.o Unified_cpp_js_src38.o Unified_cpp_js_src39.o Unified_cpp_js_src4.o Unified_cpp_js_src40.o Unified_cpp_js_src41.o Unified_cpp_js_src42.o Unified_cpp_js_src43.o Unified_cpp_js_src5.o Unified_cpp_js_src6.o Unified_cpp_js_src7.o Unified_cpp_js_src8.o Unified_cpp_js_src9.o

Program received signal SIGSEGV, Segmentation fault.
0x0000000801b13482 in __jemalloc_bitmap_unset (bitmap=0x877020563, binfo=0x801e82e10, bit=0)
    at /usr/src/lib/libc/../../contrib/jemalloc/include/jemalloc/internal/bitmap.h:156
156             g = *gp;
(gdb) bt
#0  0x0000000801b13482 in __jemalloc_bitmap_unset (bitmap=0x877020563, binfo=0x801e82e10, bit=0)
    at /usr/src/lib/libc/../../contrib/jemalloc/include/jemalloc/internal/bitmap.h:156
#1  0x0000000801b05e60 in arena_run_reg_dalloc (run=0x80291a000, ptr=0x802932000)
    at jemalloc_arena.c:357
#2  0x0000000801b05c33 in __jemalloc_arena_dalloc_bin_locked (arena=0x8024000c0, chunk=0x802800000,
    ptr=0x802932000, mapelm=0x802801c50) at jemalloc_arena.c:1709
#3  0x0000000801b064b0 in __jemalloc_arena_dalloc_bin (arena=0x8024000c0, chunk=0x802800000,
    ptr=0x802932000, pageind=306, mapelm=0x802801c50) at jemalloc_arena.c:1733
#4  0x0000000801b06537 in __jemalloc_arena_dalloc_small (arena=0x8024000c0, chunk=0x802800000,
    ptr=0x802932000, pageind=306) at jemalloc_arena.c:1749
#5  0x0000000801b1cfd1 in __jemalloc_arena_dalloc (arena=0x8024000c0, chunk=0x802800000,
    ptr=0x802932000, try_tcache=true)
    at /usr/src/lib/libc/../../contrib/jemalloc/include/jemalloc/internal/arena.h:1005
#6  __jemalloc_idallocx (ptr=<optimized out>, try_tcache=<optimized out>, ptr=<optimized out>,
    try_tcache=<optimized out>)
    at /usr/src/lib/libc/../../contrib/jemalloc/include/jemalloc/internal/jemalloc_internal.h:913
#7  __jemalloc_iqallocx (ptr=0x802932000, try_tcache=true)
    at /usr/src/lib/libc/../../contrib/jemalloc/include/jemalloc/internal/jemalloc_internal.h:932
#8  __jemalloc_iqalloc (ptr=0x802932000)
    at /usr/src/lib/libc/../../contrib/jemalloc/include/jemalloc/internal/jemalloc_internal.h:939
#9  __free (ptr=0x802932000) at jemalloc_jemalloc.c:1277
#10 0x0000000800a7f644 in dt_free (dtp=0x802831000, data=0x802932000)
    at /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c:760
#11 0x0000000800a7a6b8 in dt_link_error (dtp=0x802831000, elf=0x8028a6020, fd=3, bufs=0x0,
    format=0x800aed9cf "failed to allocate space for probe")
    at /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c:1176
#12 0x0000000800a7ba3e in process_obj (dtp=0x802831000,
    obj=0x7fffffffeae3 "Unified_cpp_js_src25.o", eprobesp=0x7fffffffd85c)
    at /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c:1609
#13 0x0000000800a79945 in dtrace_program_link (dtp=0x802831000, pgp=0x802894040, dflags=2,
    file=0x80281f030 "js-dtrace.o", objc=58, objv=0x802817088)
    at /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c:1770
#14 0x0000000000403d3d in ?? ()
#15 0x000000000040231f in ?? ()
#16 0x000000080062f000 in ?? ()
#17 0x0000000000000000 in ?? ()

https://bugzilla.mozilla.org/show_bug.cgi?id=782962
Comment 2 Robin 2017-08-20 16:00:11 UTC
Thanks for the quick reply. I'm using FreeBSD 10.3, because 11.0+ is currently broken on Powerbooks and doesn't boot (bug #216123). So I guess that may be the cause of the problem.

Unfortunately, I can't get a stacktrace, because I already figured that disabling DTrace may solve this and are currently rebuilding the port. This takes a day or two on a PowerPC, so I'll report back then.

If DTrace is broken before FreeBSD 11.0, wouldn't it make sense not having it activated by default?
Comment 3 rahu 2017-09-12 15:11:42 UTC
MARKED AS SPAM
Comment 4 Mark Linimon freebsd_committer freebsd_triage 2018-06-11 04:42:15 UTC
To submitter: are you still seeing this exact problem?
Comment 5 commit-hook freebsd_committer freebsd_triage 2018-09-29 18:58:34 UTC
A commit references this bug:

Author: jbeich
Date: Sat Sep 29 18:58:12 UTC 2018
New revision: 480912
URL: https://svnweb.freebsd.org/changeset/ports/480912

Log:
  gecko: whitelist where DTRACE is enabled by default

  Userland probes are only supported on Tier1 architectures. Even though
  powerpc* should support dtrace -G may crash on C++ files built by GCC.
  DTRACE option is still exposed as long as dtrace(1) binary is present
  for easier debugging of libdtrace.

  PR:		221641 224271

Changes:
  head/www/firefox/Makefile.options
Comment 6 commit-hook freebsd_committer freebsd_triage 2018-09-29 18:59:42 UTC
A commit references this bug:

Author: jbeich
Date: Sat Sep 29 18:59:25 UTC 2018
New revision: 480913
URL: https://svnweb.freebsd.org/changeset/ports/480913

Log:
  MFH: r480912

  gecko: whitelist where DTRACE is enabled by default

  Userland probes are only supported on Tier1 architectures. Even though
  powerpc* should support dtrace -G may crash on C++ files built by GCC.
  DTRACE option is still exposed as long as dtrace(1) binary is present
  for easier debugging of libdtrace.

  PR:		221641 224271
  Approved by:	ports-secteam blanket

Changes:
_U  branches/2018Q3/
  branches/2018Q3/www/firefox/Makefile.options