[LLVMbugs] [Bug 4971] New: Emitting LLVM assembler code segfaults.

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Sun Sep 13 14:48:12 PDT 2009


http://llvm.org/bugs/show_bug.cgi?id=4971

           Summary: Emitting LLVM assembler code segfaults.
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Common Code Generator Code
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: ofv at wanadoo.es
                CC: llvmbugs at cs.uiuc.edu


While dumping a LLVM module as LLVM assembler a segfault occurs:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7f28cb72a700 (LWP 31697)]
0x00007f28ca02da76 in llvm::PATypeHandle::operator llvm::Type* (
    this=0x737365726464)
    at /home/oscar/dev/llvm/head/include/llvm/AbstractTypeUser.h:106
106       inline operator Type *() const { return const_cast<Type*>(Ty); }


This is the code that dumps the module M:

      llvm::raw_fd_ostream f("code.llvm", errorInfo);
      f << *M;

Backtrace:

#0  0x00007f28ca02da76 in llvm::PATypeHandle::operator llvm::Type* (
    this=0x737365726464)
    at /home/oscar/dev/llvm/head/include/llvm/AbstractTypeUser.h:106
No locals.
#1  0x00007f28ca8eacc4 in IncorporateType (this=0x7fffd3754af0, Ty=0x33955b0)
    at /home/oscar/dev/llvm/head/lib/VMCore/AsmWriter.cpp:372
        I = (llvm::PATypeHandle *) 0x737365726464
        E = (llvm::PATypeHandle *) 0x737958a98ab4
#2  0x00007f28ca8eacd0 in IncorporateType (this=0x7fffd3754af0, Ty=0x3395380)
    at /home/oscar/dev/llvm/head/lib/VMCore/AsmWriter.cpp:372
        I = (llvm::PATypeHandle *) 0x33953c8
        E = (llvm::PATypeHandle *) 0x33953d8
#3  0x00007f28ca8eaffa in Run (this=0x7fffd3754af0, M=@0x2761030)
    at /home/oscar/dev/llvm/head/lib/VMCore/AsmWriter.cpp:348
        I = (const class llvm::Instruction
     &) @0x3395578: {<llvm::User> = {<llvm::Value> = {
      _vptr.Value = 0x7f28cb0cf350, SubclassID = 61 '=', HasValueHandle = 0
'\0',
      SubclassOptionalData = 0 '\0', SubclassData = 0, VTy = {Ty = 0x3395380},
      UseList = 0x3395630, Name = 0x33952a0}, OperandList = 0x3395560,
    NumOperands = 1}, <llvm::ilist_node<llvm::Instruction>> =
{<llvm::ilist_half_node<llvm::Instruction>> = {Prev = 0x3395488}, Next =
0x3395648}, Parent = 0x3574590}
        II = {<std::iterator<std::bidirectional_iterator_tag, const
llvm::Instruction, long int, const llvm::Instruction*, const
llvm::Instruction&>> = {<No data fields>}, NodePtr = 0x3395578}
        E = {<std::iterator<std::bidirectional_iterator_tag, const
llvm::Instruction, long int, const llvm::Instruction*, const
llvm::Instruction&>> = {<No data fields>}, NodePtr = 0x3574590}
        BB = {<std::iterator<std::bidirectional_iterator_tag, const
llvm::BasicBlock, long int, const llvm::BasicBlock*, const llvm::BasicBlock&>>
= {<No data fields>}, NodePtr = 0x3574590}
        E = {<std::iterator<std::bidirectional_iterator_tag, const
llvm::BasicBlock, long int, const llvm::BasicBlock*, const llvm::BasicBlock&>>
= {<No data fields>}, NodePtr = 0x35cab28}
        FI = {<std::iterator<std::bidirectional_iterator_tag, const
llvm::Function, long int, const llvm::Function*, const llvm::Function&>> = {<No
data fields>},
  NodePtr = 0x35caaf0}
        E = {<std::iterator<std::bidirectional_iterator_tag, const
llvm::Function, long int, const llvm::Function*, const llvm::Function&>> = {<No
data fields>},
  NodePtr = 0x2760ff0}
        ST = (const class llvm::TypeSymbolTable
     &) @0x37f87c0: {<llvm::AbstractTypeUser> = {
    _vptr.AbstractTypeUser = 0x7f28cb0d1a70}, tmap = {_M_t = {
      _M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >, const
llvm::Type*> > >> =
{<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >, const
llvm::Type*> > >> = {<No data fields>}, <No data fields>},
        _M_key_compare = {<std::binary_function<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>},
<No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x0,
_M_left = 0x37f87d0,
          _M_right = 0x37f87d0}, _M_node_count = 0}}}, LastUnique = 0}
#4  0x00007f28ca8eb6db in AddModuleTypesToPrinter (TP=@0x7fffd3754d48,
    NumberedTypes=@0x7fffd3754d58, M=0x2761030)
    at /home/oscar/dev/llvm/head/lib/VMCore/AsmWriter.cpp:440
        ST = (const class llvm::TypeSymbolTable
     &) @0x37f87c0: {<llvm::AbstractTypeUser> = {
    _vptr.AbstractTypeUser = 0x7f28cb0d1a70}, tmap = {_M_t = {
      _M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >, const
llvm::Type*> > >> =
{<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >, const
llvm::Type*> > >> = {<No data fields>}, <No data fields>},
        _M_key_compare = {<std::binary_function<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>},
<No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x0,
_M_left = 0x37f87d0,
          _M_right = 0x37f87d0}, _M_node_count = 0}}}, LastUnique = 0}
#5  0x00007f28ca8eb7cd in AssemblyWriter (this=0x7fffd3754d30,
o=@0x7fffd3754db0,
    Mac=@0x7fffd3754ca0, M=0x2761030, AAW=0x0)
    at /home/oscar/dev/llvm/head/lib/VMCore/AsmWriter.cpp:1263
No locals.
#6  0x00007f28ca8f1551 in llvm::Module::print (this=0x2761030,
    ROS=@0x7fffd3754ff0, AAW=0x0)
    at /home/oscar/dev/llvm/head/lib/VMCore/AsmWriter.cpp:1993
        SlotTable = {TheModule = 0x2761030, TheFunction = 0x0,
  FunctionProcessed = false, TheMDNode = 0x0, TheNamedMDNode = 0x0, mMap = {
    NumBuckets = 64, Buckets = 0xd767e40, NumEntries = 0, NumTombstones = 0},
  mNext = 0, fMap = {NumBuckets = 64, Buckets = 0xd774900, NumEntries = 0,
    NumTombstones = 0}, fNext = 0, mdnMap = {NumBuckets = 64, Buckets =
0xd729e30,
    NumEntries = 0, NumTombstones = 0}, mdnNext = 0}
        OS = {<llvm::raw_ostream> = {_vptr.raw_ostream = 0x7f28cb0d2bf0,
    OutBufStart = 0xd421390 "��=\r", OutBufEnd = 0xd422390 "\020\020",
    OutBufCur = 0xd421390 "��=\r", BufferMode =
llvm::raw_ostream::InternalBuffer,
    Error = false}, static DELETE_STREAM = <optimized out>,
  static PRESERVE_STREAM = <optimized out>, TheStream = 0x7fffd3754ff0,
  DeleteStream = false, ColumnScanned = 0, Scanned = 0x0}
  TheModule = 0x2761030, TypePrinter = {TypeNames = 0x9353270},
  AnnotationWriter = 0x0,
  NumberedTypes = {<std::_Vector_base<const llvm::Type*, std::allocator<const
llvm::Type*> >> = {
      _M_impl = {<std::allocator<const llvm::Type*>> =
{<__gnu_cxx::new_allocator<const llvm::Type*>> = {<No data fields>}, <No data
fields>}, _M_start = 0xd59c360,
        _M_finish = 0xd59c3b0, _M_end_of_storage = 0xd59c3e0}}, <No data
fields>},
  MDNodes = {_M_t = {
      _M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const
llvm::MDNode* const, unsigned int> > >> =
{<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const llvm::MDNode*
const, unsigned int> > >> = {<No data fields>}, <No data fields>},
        _M_key_compare = {<std::binary_function<const llvm::MDNode*, const
llvm::MDNode*, bool>> = {<No data fields>}, <No data fields>}, _M_header =
{_M_color = std::_S_red,
          _M_parent = 0x0, _M_left = 0x7fffd3754d78, _M_right =
0x7fffd3754d78},
        _M_node_count = 0}}}, MetadataIDNo = 0}
#7  0x00007f28ca03ba37 in llvm::operator<< (O=@0x7fffd3754ff0, M=@0x2761030)
    at /home/oscar/dev/llvm/head/include/llvm/Module.h:486
No locals.


-- 
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