[LLVMdev] Something wrong with my libpthread.so

Nick Lewycky nicholas at mxc.ca
Sat Oct 31 23:51:22 PDT 2009


Mahadevan R wrote:
> Hi,
> 
> On Sat, Oct 31, 2009 at 11:42 AM, Nan Zhu <zhunansjtu at gmail.com> wrote:
>> Hi,all
>>
>> I tried to run the generated whole-program bitcode of BIND,but I got some
>> information:
>>
>> 0   lli             0x0000000000feda16
>> 1   lli             0x0000000000fed88f
>> 2   libpthread.so.0 0x0000003df340eee0
>> 3   libc.so.6       0x0000003df28332f5 gsignal + 53
>> 4   libc.so.6       0x0000003df2834b20 abort + 384
>> 5   libc.so.6       0x0000003df282c2fa __assert_fail + 234
>> 6   lli             0x000000000085ece9
>> llvm::SmallVectorImpl<llvm::Instruction*>::operator[](unsigned int) + 77
>> 7   lli             0x0000000000850ce0
>> llvm::BitcodeReader::ParseMetadataAttachment() + 448
>> 8   lli             0x0000000000851043
> 
> Looks like a bug in the following piece of code, from
> BitcodeReader::ParseMetadataAttachment():
> 
>   1601	    case bitc::METADATA_ATTACHMENT: {
>   1602	      unsigned RecordLength = Record.size();
>   1603	      if (Record.empty() || (RecordLength - 1) % 2 == 1)
>   1604	        return Error ("Invalid METADATA_ATTACHMENT reader!");
>   1605	      Instruction *Inst = InstructionList[Record[0]];
>   1606	      for (unsigned i = 1; i != RecordLength; i = i+2) {
>   1607	        unsigned Kind = Record[i];
>   1608	        Value *Node = MDValueList.getValueFwdRef(Record[i+1]);
>   1609	        TheMetadata.addMD(Kind, cast<MDNode>(Node), Inst);
>   1610	      }
>   1611	      break;
>   1612	    }
> 
> At line 1606, i never becomes equal to RecordLength.

I strongly suspect this is llvm.org/PR5278 . Please add your comments 
there, thanks!

Nick



More information about the llvm-dev mailing list