<div dir="ltr"><div>Hello,<br><br></div>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)<br><br><pre class="gmail-default gmail-prettyprint gmail-prettyprinted"><span style="font-family:monospace,monospace"><code><span class="gmail-kwd">import</span><span class="gmail-pln"> clang</span><span class="gmail-pun">.</span><span class="gmail-pln">cindex

</span><span class="gmail-kwd">def</span><span class="gmail-pln"> traverse</span><span class="gmail-pun">(</span><span class="gmail-pln">node</span><span class="gmail-pun">):</span><span class="gmail-pln">
    </span><span class="gmail-kwd">print</span><span class="gmail-pun">(</span><span class="gmail-str">"%-42s %-20s %-10s %-6s %s"</span><span class="gmail-pln"> </span><span class="gmail-pun">%</span><span class="gmail-pln"> </span><span class="gmail-pun">(</span><span class="gmail-pln">node</span><span class="gmail-pun">.</span><span class="gmail-pln">kind</span><span class="gmail-pun">,</span><span class="gmail-pln"> node</span><span class="gmail-pun">.</span><span class="gmail-pln">spelling</span><span class="gmail-pun">,</span><span class="gmail-pln"> node</span><span class="gmail-pun">.</span><span class="gmail-pln">type</span><span class="gmail-pun">.</span><span class="gmail-pln">spelling</span><span class="gmail-pun">,</span><span class="gmail-pln"> node</span><span class="gmail-pun">.</span><span class="gmail-pln">location</span><span class="gmail-pun">.</span><span class="gmail-pln">line</span><span class="gmail-pun">,</span><span class="gmail-pln"> node</span><span class="gmail-pun">.</span><span class="gmail-pln">mangled_name</span><span class="gmail-pun">))</span><span class="gmail-pln">
    </span><span class="gmail-kwd">for</span><span class="gmail-pln"> child </span><span class="gmail-kwd">in</span><span class="gmail-pln"> node</span><span class="gmail-pun">.</span><span class="gmail-pln">get_children</span><span class="gmail-pun">():</span><span class="gmail-pln">
        traverse</span><span class="gmail-pun">(</span><span class="gmail-pln">child</span><span class="gmail-pun">)</span><span class="gmail-pln">

clang</span><span class="gmail-pun">.</span><span class="gmail-pln">cindex</span><span class="gmail-pun">.</span><span class="gmail-typ">Config</span><span class="gmail-pun">.</span><span class="gmail-pln">set_library_file</span><span class="gmail-pun">(</span><span class="gmail-str">'/usr/lib/llvm-3.8/lib/libclang.so'</span><span class="gmail-pun">)</span><span class="gmail-pln">
index </span><span class="gmail-pun">=</span><span class="gmail-pln"> clang</span><span class="gmail-pun">.</span><span class="gmail-pln">cindex</span><span class="gmail-pun">.</span><span class="gmail-typ">Index</span><span class="gmail-pun">.</span><span class="gmail-pln">create</span><span class="gmail-pun">()</span><span class="gmail-pln">
tu </span><span class="gmail-pun">=</span><span class="gmail-pln"> index</span><span class="gmail-pun">.</span><span class="gmail-pln">parse</span><span class="gmail-pun">(</span><span class="gmail-pln">sys</span><span class="gmail-pun">.</span><span class="gmail-pln">argv</span><span class="gmail-pun">[</span><span class="gmail-lit">1</span><span class="gmail-pun">],</span><span class="gmail-pln"> args</span><span class="gmail-pun">=[</span><span class="gmail-str">'-Werror'</span><span class="gmail-pun">])</span><span class="gmail-pln">
traverse</span><span class="gmail-pun">(</span><span class="gmail-pln">tu</span><span class="gmail-pun">.</span><span class="gmail-pln">cursor</span><span class="gmail-pun">)<br><br></span></code></span></pre><pre class="gmail-default gmail-prettyprint gmail-prettyprinted"><span style="font-family:arial,helvetica,sans-serif"><code><span class="gmail-pun">backtrace :</span></code></span><span style="font-family:monospace,monospace"><code><span class="gmail-pun"><br></span></code></span><code><span class="gmail-com">#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</span><span class="gmail-pln">
</span><span class="gmail-com">#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</span><span class="gmail-pln">
</span><span class="gmail-com">#2  (anonymous namespace)::CXXNameMangler::mangleUnqualifiedName (this=this@entry=0x7ffe35f45470, ND=ND@entry=0x7f9ec0092cc8, Name=..., </span><span class="gmail-pln">
    </span><span class="gmail-typ">AdditionalAbiTags</span><span class="gmail-pun">=</span><span class="gmail-typ">AdditionalAbiTags@entry</span><span class="gmail-pun">=</span><span class="gmail-lit">0x7ffe35f453c0</span><span class="gmail-pun">,</span><span class="gmail-pln"> </span><span class="gmail-typ">KnownArity</span><span class="gmail-pun">=</span><span class="gmail-lit">4294967295</span><span class="gmail-pun">)</span><span class="gmail-pln">
    at </span><span class="gmail-pun">/</span><span class="gmail-pln">build</span><span class="gmail-pun">/</span><span class="gmail-pln">llvm</span><span class="gmail-pun">-</span><span class="gmail-pln">toolchain</span><span class="gmail-pun">-</span><span class="gmail-lit">3.8</span><span class="gmail-pun">-</span><span class="gmail-pln">_PD09B</span><span class="gmail-pun">/</span><span class="gmail-pln">llvm</span><span class="gmail-pun">-</span><span class="gmail-pln">toolchain</span><span class="gmail-pun">-</span><span class="gmail-lit">3.8</span><span class="gmail-pun">-</span><span class="gmail-lit">3.8</span><span class="gmail-pun">/</span><span class="gmail-pln">tools</span><span class="gmail-pun">/</span><span class="gmail-pln">clang</span><span class="gmail-pun">/</span><span class="gmail-pln">lib</span><span class="gmail-pun">/</span><span class="gmail-pln">AST</span><span class="gmail-pun">/</span><span class="gmail-typ">ItaniumMangle</span><span class="gmail-pun">.</span><span class="gmail-pln">cpp</span><span class="gmail-pun">:</span><span class="gmail-lit">1184</span><span class="gmail-pln">
</span><span class="gmail-com">#3  0x00007f9ecbe60250 in (anonymous namespace)::CXXNameMangler::mangleUnqualifiedName (AdditionalAbiTags=0x7ffe35f453c0, ND=<optimized out>, this=0x7ffe35f45470)</span><span class="gmail-pln">
    at </span><span class="gmail-pun">/</span><span class="gmail-pln">build</span><span class="gmail-pun">/</span><span class="gmail-pln">llvm</span><span class="gmail-pun">-</span><span class="gmail-pln">toolchain</span><span class="gmail-pun">-</span><span class="gmail-lit">3.8</span><span class="gmail-pun">-</span><span class="gmail-pln">_PD09B</span><span class="gmail-pun">/</span><span class="gmail-pln">llvm</span><span class="gmail-pun">-</span><span class="gmail-pln">toolchain</span><span class="gmail-pun">-</span><span class="gmail-lit">3.8</span><span class="gmail-pun">-</span><span class="gmail-lit">3.8</span><span class="gmail-pun">/</span><span class="gmail-pln">tools</span><span class="gmail-pun">/</span><span class="gmail-pln">clang</span><span class="gmail-pun">/</span><span class="gmail-pln">lib</span><span class="gmail-pun">/</span><span class="gmail-pln">AST</span><span class="gmail-pun">/</span><span class="gmail-typ">ItaniumMangle</span><span class="gmail-pun">.</span><span class="gmail-pln">cpp</span><span class="gmail-pun">:</span><span class="gmail-lit">481</span><span class="gmail-pln">
</span><span class="gmail-com">#4  (anonymous namespace)::CXXNameMangler::mangleLocalName (this=this@entry=0x7ffe35f45470, D=D@entry=0x7f9ec0092cc8, AdditionalAbiTags=AdditionalAbiTags@entry=0x7ffe35f453c0, </span><span class="gmail-pln">
    </span><span class="gmail-typ">ExcludeUnqualifiedName</span><span class="gmail-pun">=</span><span class="gmail-typ">ExcludeUnqualifiedName@entry</span><span class="gmail-pun">=</span><span class="gmail-kwd">false</span><span class="gmail-pun">)</span><span class="gmail-pln"> at </span><span class="gmail-pun">/</span><span class="gmail-pln">build</span><span class="gmail-pun">/</span><span class="gmail-pln">llvm</span><span class="gmail-pun">-</span><span class="gmail-pln">toolchain</span><span class="gmail-pun">-</span><span class="gmail-lit">3.8</span><span class="gmail-pun">-</span><span class="gmail-pln">_PD09B</span><span class="gmail-pun">/</span><span class="gmail-pln">llvm</span><span class="gmail-pun">-</span><span class="gmail-pln">toolchain</span><span class="gmail-pun">-</span><span class="gmail-lit">3.8</span><span class="gmail-pun">-</span><span class="gmail-lit">3.8</span><span class="gmail-pun">/</span><span class="gmail-pln">tools</span><span class="gmail-pun">/</span><span class="gmail-pln">clang</span><span class="gmail-pun">/</span><span class="gmail-pln">lib</span><span class="gmail-pun">/</span><span class="gmail-pln">AST</span><span class="gmail-pun">/</span><span class="gmail-typ">ItaniumMangle</span><span class="gmail-pun">.</span><span class="gmail-pln">cpp</span><span class="gmail-pun">:</span><span class="gmail-lit">1471</span><span class="gmail-pln">
</span><span class="gmail-com">#5  0x00007f9ecbe607b7 in (anonymous namespace)::CXXNameMangler::mangleNameWithAbiTags (this=this@entry=0x7ffe35f45470, ND=ND@entry=0x7f9ec0092cc8, </span><span class="gmail-pln">
    </span><span class="gmail-typ">AdditionalAbiTags</span><span class="gmail-pun">=</span><span class="gmail-typ">AdditionalAbiTags@entry</span><span class="gmail-pun">=</span><span class="gmail-lit">0x7ffe35f453c0</span><span class="gmail-pun">,</span><span class="gmail-pln"> </span><span class="gmail-typ">ExcludeUnqualifiedName</span><span class="gmail-pun">=</span><span class="gmail-typ">ExcludeUnqualifiedName@entry</span><span class="gmail-pun">=</span><span class="gmail-kwd">false</span><span class="gmail-pun">)</span><span class="gmail-pln">
    at </span><span class="gmail-pun">/</span><span class="gmail-pln">build</span><span class="gmail-pun">/</span><span class="gmail-pln">llvm</span><span class="gmail-pun">-</span><span class="gmail-pln">toolchain</span><span class="gmail-pun">-</span><span class="gmail-lit">3.8</span><span class="gmail-pun">-</span><span class="gmail-pln">_PD09B</span><span class="gmail-pun">/</span><span class="gmail-pln">llvm</span><span class="gmail-pun">-</span><span class="gmail-pln">toolchain</span><span class="gmail-pun">-</span><span class="gmail-lit">3.8</span><span class="gmail-pun">-</span><span class="gmail-lit">3.8</span><span class="gmail-pun">/</span><span class="gmail-pln">tools</span><span class="gmail-pun">/</span><span class="gmail-pln">clang</span><span class="gmail-pun">/</span><span class="gmail-pln">lib</span><span class="gmail-pun">/</span><span class="gmail-pln">AST</span><span class="gmail-pun">/</span><span class="gmail-typ">ItaniumMangle</span><span class="gmail-pun">.</span><span class="gmail-pln">cpp</span><span class="gmail-pun">:</span><span class="gmail-lit">801</span><span class="gmail-pln">
</span><span class="gmail-com">#6  0x00007f9ecbe61621 in (anonymous namespace)::CXXNameMangler::mangleName (this=0x7ffe35f45470, ND=0x7f9ec0092cc8, ExcludeUnqualifiedName=<optimized out>)</span><span class="gmail-pln">
    at </span><span class="gmail-pun">/</span><span class="gmail-pln">build</span><span class="gmail-pun">/</span><span class="gmail-pln">llvm</span><span class="gmail-pun">-</span><span class="gmail-pln">toolchain</span><span class="gmail-pun">-</span><span class="gmail-lit">3.8</span><span class="gmail-pun">-</span><span class="gmail-pln">_PD09B</span><span class="gmail-pun">/</span><span class="gmail-pln">llvm</span><span class="gmail-pun">-</span><span class="gmail-pln">toolchain</span><span class="gmail-pun">-</span><span class="gmail-lit">3.8</span><span class="gmail-pun">-</span><span class="gmail-lit">3.8</span><span class="gmail-pun">/</span><span class="gmail-pln">tools</span><span class="gmail-pun">/</span><span class="gmail-pln">clang</span><span class="gmail-pun">/</span><span class="gmail-pln">lib</span><span class="gmail-pun">/</span><span class="gmail-pln">AST</span><span class="gmail-pun">/</span><span class="gmail-typ">ItaniumMangle</span><span class="gmail-pun">.</span><span class="gmail-pln">cpp</span><span class="gmail-pun">:</span><span class="gmail-lit">776</span><span class="gmail-pln">
</span><span class="gmail-com">#7  0x00007f9ecbe62822 in (anonymous namespace)::ItaniumMangleContextImpl::mangleCXXName (this=<optimized out>, D=0x7f9ec0092cc8, Out=...)</span><span class="gmail-pln">
    at </span><span class="gmail-pun">/</span><span class="gmail-pln">build</span><span class="gmail-pun">/</span><span class="gmail-pln">llvm</span><span class="gmail-pun">-</span><span class="gmail-pln">toolchain</span><span class="gmail-pun">-</span><span class="gmail-lit">3.8</span><span class="gmail-pun">-</span><span class="gmail-pln">_PD09B</span><span class="gmail-pun">/</span><span class="gmail-pln">llvm</span><span class="gmail-pun">-</span><span class="gmail-pln">toolchain</span><span class="gmail-pun">-</span><span class="gmail-lit">3.8</span><span class="gmail-pun">-</span><span class="gmail-lit">3.8</span><span class="gmail-pun">/</span><span class="gmail-pln">tools</span><span class="gmail-pun">/</span><span class="gmail-pln">clang</span><span class="gmail-pun">/</span><span class="gmail-pln">lib</span><span class="gmail-pun">/</span><span class="gmail-pln">AST</span><span class="gmail-pun">/</span><span class="gmail-typ">ItaniumMangle</span><span class="gmail-pun">.</span><span class="gmail-pln">cpp</span><span class="gmail-pun">:</span><span class="gmail-lit">4422</span><span class="gmail-pln">
</span><span class="gmail-com">#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</span><span class="gmail-pln">
</span><span class="gmail-com">#9  0x00007f9eccbd2e40 in ffi_call_unix64 () from /usr/lib/x86_64-linux-gnu/libffi.so.6</span><span class="gmail-pln">
</span><span class="gmail-com">#10 0x00007f9eccbd28ab in ffi_call () from /usr/lib/x86_64-linux-gnu/libffi.so.6</span></code><br><span style="font-family:monospace,monospace"><code><span class="gmail-pun"></span></code></span></pre><div><div><br></div><div>I tried this python code on bitcoin source code from github and this backtrace is for the file <em>src/bitcoin-cli.cpp</em></div><div>any idea why it crashes ? <br></div><div><br></div><div>Thanks, <br></div><div>  Sagi</div><div><br>-- <br><div class="gmail_signature"><div dir="ltr"><div>Sagi Ben-Akiva<br></div><br></div></div>
</div></div></div>