[LLVMbugs] [Bug 14731] New: gold plugin crashes with invalid free() when llvm if built with --enable-shared --enable-expensive-checks
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Fri Dec 28 04:43:02 PST 2012
http://llvm.org/bugs/show_bug.cgi?id=14731
Bug #: 14731
Summary: gold plugin crashes with invalid free() when llvm if
built with --enable-shared --enable-expensive-checks
Product: tools
Version: trunk
Platform: PC
OS/Version: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: gold-plugin
AssignedTo: unassignedbugs at nondot.org
ReportedBy: ambrop7 at gmail.com
CC: llvmbugs at cs.uiuc.edu
Classification: Unclassified
Created attachment 9765
--> http://llvm.org/bugs/attachment.cgi?id=9765
gdb debugging session with some notes
On Linux, if llvm is built using the autotools toolchain with --enable-shared
--enable-expensive-checks, the gold plugin will crash the linker
unconditionally (all of the above three conditions are necessary). The
following commands will reproduce the problem on Ubuntu 12.04 64-bit. Bug is
also reproducible on Gentoo Linux ~amd64.
As root:
# apt-get build-dep llvm
As non-root:
$ cd $HOME
$ apt-get source binutils
$ svn co https://llvm.org/svn/llvm-project/llvm/trunk llvm
$ cd llvm
$ CC=gcc CXX=g++ CFLAGS="-O0 -g" CXXFLAGS="-O0 -g" ./configure
--prefix=$HOME/llvm-install --enable-shared --enable-expensive-checks
--with-binutils-include=$HOME/binutils-2.22/include --enable-bindings=none
$ make install
Create a dummy object file to be linked. It does not need to be correct.
$ echo dummy > test.o
Now try to link it with gold and the llvm gold plugin:
$ LD_LIBRARY_PATH=$HOME/llvm-install/lib:$LD_LIBRARY_PATH ld.gold -plugin
$HOME/llvm-install/lib/LLVMgold.so test.o
This results in a crash, after the input file has been found to be incorrect.
The same crash happens if the input and link command are correct (at a
different place, but for the same reason). See the attached file for details
(yes, it's reproducable by plain running it outside of gdb, and also with
valgrind which prints an error about the invalid free).
LLVM-3.2 is also affected; I do not know about LLVM-3.1.
I have tried compiling llvm with different compilers (gcc 4.5.2, gcc 4.6.3, gcc
4.7.2, clang 3.0, clang 3.2) and linkers (bfd and gold), but the bug is still
happening. Again, please note this is not something very specific to my
configuration; it can be easily reproduced on Ubuntu 12.04 64-bit, and probably
any other non-ancient Linux distro (maybe needs to be 64-bit).
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list