[LLVMdev] Something wrong with my libpthread.so

Mahadevan R mdevan.foobar at gmail.com
Sun Nov 1 00:15:10 PDT 2009


On Sun, Nov 1, 2009 at 12:21 PM, Nick Lewycky <nicholas at mxc.ca> wrote:
> 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!

Done.

Regards,
-Mahadevan.

>
> Nick
>




More information about the llvm-dev mailing list