[cfe-dev] libclang python bindings crashes with segmentation fault

Sagi Ben Akiva via cfe-dev cfe-dev at lists.llvm.org
Thu Sep 7 14:19:40 PDT 2017


Hello,

I have the following simple python code which traverse the AST using
libclang python bindings, unfortunately it crashes with segmentation fault.
I'm using python2.7 and tried all the following clang versions 3.8, 3.9,
4.0, 5.0, 6.0 (and of course used the right python clang bindings for each
version)

import clang.cindex
def traverse(node):
    print("%-42s %-20s %-10s %-6s %s" % (node.kind, node.spelling,
node.type.spelling, node.location.line, node.mangled_name))
    for child in node.get_children():
        traverse(child)

clang.cindex.Config.set_library_file('/usr/lib/llvm-3.8/lib/libclang.so')
index = clang.cindex.Index.create()
tu = index.parse(sys.argv[1], args=['-Werror'])
traverse(tu.cursor)

backtrace :
#0  clang::TagType::getDecl (this=0x0) at
/build/llvm-toolchain-3.8-_PD09B/llvm-toolchain-3.8-3.8/tools/clang/lib/AST/Type.cpp:2962#1
 0x00007f9ecbe65caf in clang::RecordType::getDecl (this=<optimized
out>) at /build/llvm-toolchain-3.8-_PD09B/llvm-toolchain-3.8-3.8/tools/clang/include/clang/AST/Type.h:3554#2
 (anonymous namespace)::CXXNameMangler::mangleUnqualifiedName
(this=this at entry=0x7ffe35f45470, ND=ND at entry=0x7f9ec0092cc8, Name=...,
    AdditionalAbiTags=AdditionalAbiTags at entry=0x7ffe35f453c0,
KnownArity=4294967295)
    at /build/llvm-toolchain-3.8-_PD09B/llvm-toolchain-3.8-3.8/tools/clang/lib/AST/ItaniumMangle.cpp:1184#3
 0x00007f9ecbe60250 in (anonymous
namespace)::CXXNameMangler::mangleUnqualifiedName
(AdditionalAbiTags=0x7ffe35f453c0, ND=<optimized out>,
this=0x7ffe35f45470)
    at /build/llvm-toolchain-3.8-_PD09B/llvm-toolchain-3.8-3.8/tools/clang/lib/AST/ItaniumMangle.cpp:481#4
 (anonymous namespace)::CXXNameMangler::mangleLocalName
(this=this at entry=0x7ffe35f45470, D=D at entry=0x7f9ec0092cc8,
AdditionalAbiTags=AdditionalAbiTags at entry=0x7ffe35f453c0,
    ExcludeUnqualifiedName=ExcludeUnqualifiedName at entry=false) at
/build/llvm-toolchain-3.8-_PD09B/llvm-toolchain-3.8-3.8/tools/clang/lib/AST/ItaniumMangle.cpp:1471#5
 0x00007f9ecbe607b7 in (anonymous
namespace)::CXXNameMangler::mangleNameWithAbiTags
(this=this at entry=0x7ffe35f45470, ND=ND at entry=0x7f9ec0092cc8,
    AdditionalAbiTags=AdditionalAbiTags at entry=0x7ffe35f453c0,
ExcludeUnqualifiedName=ExcludeUnqualifiedName at entry=false)
    at /build/llvm-toolchain-3.8-_PD09B/llvm-toolchain-3.8-3.8/tools/clang/lib/AST/ItaniumMangle.cpp:801#6
 0x00007f9ecbe61621 in (anonymous
namespace)::CXXNameMangler::mangleName (this=0x7ffe35f45470,
ND=0x7f9ec0092cc8, ExcludeUnqualifiedName=<optimized out>)
    at /build/llvm-toolchain-3.8-_PD09B/llvm-toolchain-3.8-3.8/tools/clang/lib/AST/ItaniumMangle.cpp:776#7
 0x00007f9ecbe62822 in (anonymous
namespace)::ItaniumMangleContextImpl::mangleCXXName (this=<optimized
out>, D=0x7f9ec0092cc8, Out=...)
    at /build/llvm-toolchain-3.8-_PD09B/llvm-toolchain-3.8-3.8/tools/clang/lib/AST/ItaniumMangle.cpp:4422#8
 0x00007f9ecbd4df6b in clang_Cursor_getMangling (C=...) at
/build/llvm-toolchain-3.8-_PD09B/llvm-toolchain-3.8-3.8/tools/clang/tools/libclang/CIndex.cpp:3996#9
 0x00007f9eccbd2e40 in ffi_call_unix64 () from
/usr/lib/x86_64-linux-gnu/libffi.so.6#10 0x00007f9eccbd28ab in
ffi_call () from /usr/lib/x86_64-linux-gnu/libffi.so.6


I tried this python code on bitcoin source code from github and this
backtrace is for the file *src/bitcoin-cli.cpp*
any idea why it crashes ?

Thanks,
  Sagi

-- 
Sagi Ben-Akiva
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20170908/c36ba9a6/attachment.html>


More information about the cfe-dev mailing list