[LLVMbugs] [Bug 4605] New: ParseBitcodeFile() no longer works on files with @llvm. global_ctors
bugzilla-daemon at cs.uiuc.edu
bugzilla-daemon at cs.uiuc.edu
Wed Jul 22 07:27:26 PDT 2009
http://llvm.org/bugs/show_bug.cgi?id=4605
Summary: ParseBitcodeFile() no longer works on files with
@llvm.global_ctors
Product: new-bugs
Version: unspecified
Platform: PC
OS/Version: FreeBSD
Status: NEW
Severity: major
Priority: P2
Component: new bugs
AssignedTo: unassignedbugs at nondot.org
ReportedBy: csdavec at swan.ac.uk
CC: llvmbugs at cs.uiuc.edu
This simple program now crashes (tested with r76735):
#include <llvm/Bitcode/ReaderWriter.h>
#include <llvm/Support/MemoryBuffer.h>
#include <llvm/LLVMContext.h>
int main(int argc, char *argv[])
{
ParseBitcodeFile(
llvm::MemoryBuffer::getFile(argv[1]),
*new llvm::LLVMContext());
}
The bug appears to have been introduced as part of the process of adding
LLVMContext. Other appending globals appear to work correctly, but any bitcode
file containing @llvm.global_ctors crashes with this assert failure:
Assertion failed: (IMI != InverseMap.end() && IMI->second != Map.end() &&
IMI->second->second == CP && "InverseMap corrupt!"), function
FindExistingElement, file LLVMContextImpl.cpp, line 141.
Back trace as follows:
#0 0x283e2e87 in kill () from /lib/libc.so.7
#1 0x281d6347 in raise () from /lib/libthr.so.3
#2 0x283e19ea in abort () from /lib/libc.so.7
#3 0x283c7eb6 in __assert () from /lib/libc.so.7
#4 0x080f5a6b in ValueMap<std::vector<llvm::Constant*,
std::allocator<llvm::Constant*> >, llvm::ArrayType, llvm::ConstantArray,
true>::FindExistingElement (
this=0x285170a0, CP=0x2855904c) at LLVMContextImpl.cpp:139
#5 0x080f60ba in ValueMap<std::vector<llvm::Constant*,
std::allocator<llvm::Constant*> >, llvm::ArrayType, llvm::ConstantArray,
true>::remove (
this=0x285170a0, CP=0x2855904c) at LLVMContextImpl.cpp:208
#6 0x080f490b in llvm::LLVMContextImpl::erase (this=0x28509080, C=0x2855904c)
at LLVMContextImpl.cpp:476
#7 0x080f0a46 in llvm::LLVMContext::erase (this=0x2850808c, C=0x2855904c)
at LLVMContext.cpp:658
#8 0x080a47f6 in llvm::ConstantArray::destroyConstant (this=0x2855904c)
at Constants.cpp:1041
#9 0x080522e3 in llvm::BitcodeReaderValueList::ResolveConstantForwardRefs (
this=0x2851f270) at BitcodeReader.cpp:305
#10 0x08054ab6 in llvm::BitcodeReader::ParseConstants (this=0x2851f180)
at BitcodeReader.cpp:1070
#11 0x08059130 in llvm::BitcodeReader::ParseModule (this=0x2851f180,
ModuleID=@0xbfbfe5f0) at BitcodeReader.cpp:1171
#12 0x0805a700 in llvm::BitcodeReader::ParseBitcode (this=0x2851f180)
at BitcodeReader.cpp:1406
#13 0x0805a7c5 in llvm::getBitcodeModuleProvider (Buffer=0x2851c020,
Context=@0x2850809c, ErrMsg=0x0) at BitcodeReader.cpp:2104
#14 0x0805a85b in llvm::ParseBitcodeFile (Buffer=0x2851c020,
Context=@0x2850809c, ErrMsg=0x0) at BitcodeReader.cpp:2122
#15 0x0804f10d in main (argc=2, argv=0xbfbfe6e8) at ParseBitcode.cpp:10
--
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