[LLVMbugs] [Bug 1656] New: Failed to run Datastructure analysis(dsa-local) on Linux kernel file

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Thu Sep 13 21:14:04 PDT 2007


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

           Summary: Failed to run Datastructure analysis(dsa-local) on Linux
                    kernel file
           Product: new-bugs
           Version: unspecified
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: hehaifeng2nd at gmail.com
                CC: llvmbugs at cs.uiuc.edu


Created an attachment (id=1119)
 --> (http://llvm.org/bugs/attachment.cgi?id=1119)
the source file of the bytecode is linux-2.4.31/fs/open.c

I tried to run Datastructure analysis on Linux kernel(version 2.4.31) but
failed. Here is the error I was able to track down:

LLVM used version: 2.0

Library used: poolalloc  Revision 41951

Command: opt -load PATH/LLVMDataStructure -dsa-local open.o

Error Message:
opt: TargetData.cpp:86: unsigned int
llvm::StructLayout::getElementContainingOffset(uint64_t) const: Assertion `(SI
== &MemberOffsets[0] || *(SI-1) < Offset) && (SI+1 ==
&MemberOffsets[NumElements] || *(SI+1) > Offset) && "Upper bound didn't work!"'
failed

/home/hehf/solar/Tools/llvm/Debug/bin/opt[0x85a67b8]
/home/hehf/solar/Tools/llvm/Debug/bin/opt[0x85a6a7e]
[0xffffe500]
[0x6]
/lib/libc.so.6(abort+0x101)[0x3744b1]
/lib/libc.so.6(__assert_fail+0xfb)[0x36c1db]
/home/hehf/solar/Tools/llvm/Debug/bin/opt(llvm::StructLayout::getElementContainingOffset(unsigned
long long) const+0x17a)[0x84ac84c]
/cs/solar/hehf/Tools/llvm/projects/poolalloc/Debug/lib/LLVMDataStructure.so.0(llvm::DSNode::mergeTypeInfo(llvm::Type
const*, unsigned int, bool)+0xc3a)[0xf7f42de2]

Description:

The assertion in StructLayout::getElementContainingOffset failed when
DSNode::mergeTypeInfo tried to merge DSNode types.

This happened when visitLoadInst:Local.cpp method was processing
instruction %tmp130 = load i32* %tmp129             ; <i32> [#uses=1]
in function get_unused_fd.

It seems some C structure in the code violated the assumption made in llvm but
I am not sure exactly what was happening.


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