From owner-freebsd-bugs@FreeBSD.ORG Thu Apr 19 18:10:09 2012 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 718091065677 for ; Thu, 19 Apr 2012 18:10:09 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 4511E8FC1C for ; Thu, 19 Apr 2012 18:10:09 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id q3JIA9uj081391 for ; Thu, 19 Apr 2012 18:10:09 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id q3JIA9Xj081390; Thu, 19 Apr 2012 18:10:09 GMT (envelope-from gnats) Resent-Date: Thu, 19 Apr 2012 18:10:09 GMT Resent-Message-Id: <201204191810.q3JIA9Xj081390@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Steve Wills Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 50D55106564A for ; Thu, 19 Apr 2012 18:02:21 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22]) by mx1.freebsd.org (Postfix) with ESMTP id 300698FC08 for ; Thu, 19 Apr 2012 18:02:21 +0000 (UTC) Received: from red.freebsd.org (localhost [127.0.0.1]) by red.freebsd.org (8.14.4/8.14.4) with ESMTP id q3JI2KED038059 for ; Thu, 19 Apr 2012 18:02:20 GMT (envelope-from nobody@red.freebsd.org) Received: (from nobody@localhost) by red.freebsd.org (8.14.4/8.14.4/Submit) id q3JI2KtZ038058; Thu, 19 Apr 2012 18:02:20 GMT (envelope-from nobody) Message-Id: <201204191802.q3JI2KtZ038058@red.freebsd.org> Date: Thu, 19 Apr 2012 18:02:20 GMT From: Steve Wills To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Cc: Subject: bin/167103: dtrace generates core dump trying to build perl with dtrace enabled X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Apr 2012 18:10:09 -0000 >Number: 167103 >Category: bin >Synopsis: dtrace generates core dump trying to build perl with dtrace enabled >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Apr 19 18:10:08 UTC 2012 >Closed-Date: >Last-Modified: >Originator: Steve Wills >Release: >Organization: >Environment: >Description: Try to build perl with dtrace enabled. In this case, I am getting perl from their git repo: git clone git://perl5.git.perl.org/perl.git perl then applying a small patch: diff --git a/Makefile.SH b/Makefile.SHindex ba5ab79..d4f609d 100755 --- a/Makefile.SH +++ b/Makefile.SH @@ -225,7 +225,7 @@ minidtrace_o='' case "$usedtrace" in define|true) dtrace_h='perldtrace.h' - $dtrace -G -s perldtrace.d -o perldtrace.tmp >/dev/null 2>&1 \ + $dtrace -64 -G -s perldtrace.d -o perldtrace.tmp >/dev/null 2>&1 \ && rm -f perldtrace.tmp && dtrace_o='perldtrace$(OBJ_EXT)' \ && minidtrace_o='miniperldtrace$(OBJ_EXT)' ;; @@ -548,6 +548,7 @@ splintfiles = $(c1) .c$(OBJ_EXT): $(CCCMD) $(PLDLFLAGS) $*.c + ctfconvert -L DEFAULT $@ .c.i: $(CCCMDSRC) -E $*.c > $*.i diff --git a/hints/freebsd.sh b/hints/freebsd.sh index a67c0bb..344a847 100644 --- a/hints/freebsd.sh +++ b/hints/freebsd.sh @@ -309,3 +309,7 @@ esac # Meanwhile, the following workaround should be safe on all versions # of FreeBSD. d_printf_format_null='undef' + +case "$usedtrace" in +$define|true|[Yy]*) libswanted="$libswanted dtrace dwarf elf proc ctf rtld_db z pthread" +esac Note, the fact that the -64 is needed there may be another, separate bug. After this, I configure with: /usr/bin/env CC="cc" CPP="cpp" CXX="c++" CFLAGS="-O2 -pipe -g -fno-omit-frame-pointer -fno-strict-aliasing" CPPFLAGS="" CXXFLAGS="-O2 -pipe -g -fno-omit-frame-pointer -fno-strict-aliasing" LDFLAGS="" INSTALL="/usr/bin/install -c " INSTALL_DATA="install -m 444" INSTALL_LIB="install -m 444" INSTALL_PROGRAM="install -m 555" INSTALL_SCRIPT="install -m 555" LANG="" LC_ALL="" LC_COLLATE="" LC_CTYPE="" LC_MESSAGES="" LC_MONETARY="" LC_NUMERIC="" LC_TIME="" UNAME_v="$(uname -v | sed 'y/=/ /')" SHELL=/bin/sh CONFIG_SHELL=/bin/sh ./Configure -sde -Dprefix=/usr/local -Ui_malloc -Ui_iconv -Uinstallusrbinperl -Dcc="cc" -Duseshrplib -Dinc_version_list=none -Dccflags=-DAPPLLIB_EXP=\"/usr/local/lib/perl5/5.12.4/BSDPAN\" -Doptimize="-O2 -pipe -g -fno-omit-frame-pointer -fno-strict-aliasing" -Ui_gdbm -Dusedtrace=define -Dusethreads=n -Dusemymalloc=n -Duse64bitint -Dusedevel Then build via make. This produces this error: /usr/sbin/dtrace -G -s perldtrace.d -o miniperldtrace.o perlmini.o opmini.o miniperlmain.o gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro.o keywords.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o perlmini.o dtrace: (malloc) /usr/src/lib/libc/stdlib/malloc.c:2644: Failed assertion: "(run->regs_mask[elm] & (1U << bit)) == 0"*** [miniperldtrace.o] Signal 6 Which shows a core dump in the dtrace command line utility. Backtrace on that looks like this: % gdb /usr/sbin/dtrace dtrace.core [GDB will not be able to debug user-mode threads: Undefined symbol "td_thr_getxmmregs"]GNU gdb 6.1.1 [FreeBSD]Copyright 2004 Free Software Foundation, Inc.GDB is free software, covered by the GNU General Public License, and you arewelcome to change it and/or distribute copies of it under certain conditions.Type "show copying" to see the conditions.There is absolutely no warranty for GDB. Type "show warranty" for details.This GDB was configured as "amd64-marcel-freebsd"...Core was generated by `dtrace'.Program terminated with signal 6, Aborted.Reading symbols from /lib/libthr.so.3...done. Loaded symbols for /lib/libthr.so.3Reading symbols from /lib/libdtrace.so.2...done.Loaded symbols for /lib/libdtrace.so.2 Reading symbols from /usr/lib/libproc.so.2...done. Loaded symbols for /usr/lib/libproc.so.2 Reading symbols from /lib/libctf.so.2...done. Loaded symbols for /lib/libctf.so.2Reading symbols from /usr/lib/libelf.so.1...done. Loaded symbols for /usr/lib/libelf.so.1 Reading symbols from /lib/libz.so.6...done. Loaded symbols for /lib/libz.so.6 Reading symbols from /lib/libutil.so.9...done. Loaded symbols for /lib/libutil.so.9 Reading symbols from /usr/lib/librtld_db.so.2...done. Loaded symbols for /usr/lib/librtld_db.so.2 Reading symbols from /lib/libc.so.7...done. Loaded symbols for /lib/libc.so.7 Reading symbols from /libexec/ld-elf.so.1...done. Loaded symbols for /libexec/ld-elf.so.1 #0 0x000000080198be7c in thr_kill () at thr_kill.S:3 3 RSYSCALL(thr_kill) (gdb) bt #0 0x000000080198be7c in thr_kill () at thr_kill.S:3 #1 0x0000000801a2f72b in abort () at /usr/src/lib/libc/stdlib/abort.c:65 #2 0x00000008019af43c in arena_dalloc_bin (arena=0x607f30, chunk=0x802000000, ptr=0x802066800, mapelm=Variable "mapelm" is not available. ) at /usr/src/lib/libc/stdlib/malloc.c:2586 #3 0x00000008019b0f13 in idalloc (ptr=0x802066800) at /usr/src/lib/libc/stdlib/malloc.c:4318 #4 0x00000008019b1cf5 in free (ptr=0x802066800) at /usr/src/lib/libc/stdlib/malloc.c:6168 #5 0x0000000800a5d244 in dt_link_error (dtp=0x80202c000, elf=Variable "elf" is not available. ) at /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c:1095 #6 0x0000000800a5d34f in process_obj (dtp=0x80202c000, obj=0x7fffffffd6a3 "pp_ctl.o", eprobesp=0x7fffffffc4e8) at /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c:1587 #7 0x0000000800a5e4f5 in dtrace_program_link (dtp=0x80202c000, pgp=0x8042f1a00, dflags=2, file=0x80201e030 "miniperldtrace.o", objc=39, objv=0x802018188) at /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c:1682 #8 0x0000000000404789 in main (argc=Variable "argc" is not available. ) at /usr/src/cddl/usr.sbin/dtrace/../../../cddl/contrib/opensolaris/cmd/dtrace/dtrace.c:682 Current language: auto; currently asm (gdb) >How-To-Repeat: See above >Fix: no idea >Release-Note: >Audit-Trail: >Unformatted: