Skip to content

Segfault with Root and Julia #12

@lyon-fnal

Description

@lyon-fnal

Hi - I'm trying to use Root and Julia with your Root.jl package. I followed the instructions for installing and am using the special build of Julia. If I run your example in the README.md, things work until I do @cxx canvas->SaveAs(pointer("myhist.png")) and then Julia segfaults. The important part of the stack trace seems to be...

[vagrant@localhost ~]$ rjulia run_root.jl

signal (11): Segmentation fault
while loading /home/vagrant/run_root.jl, in expression starting on line 11
_ZN4llvm19SmallPtrSetImplBase9erase_impEPKv at /Users/lyon/Development/julia/julia-centos6/julia/usr/lib/libLLVM-3.9.so (unknown line)
_ZN5clang4Sema30UpdateMarkingForLValueToRValueEPNS_4ExprE at /Users/lyon/Development/julia/julia-centos6/pkgs/v0.6/Cxx/src/../deps/usr/lib/libcxxffi.so (unknown line)
_ZN5clang4Sema23DefaultLvalueConversionEPNS_4ExprE at /Users/lyon/Development/julia/julia-centos6/pkgs/v0.6/Cxx/src/../deps/usr/lib/libcxxffi.so (unknown line)
_ZN5clang4Sema36DefaultFunctionArrayLvalueConversionEPNS_4ExprEb at /Users/lyon/Development/julia/julia-centos6/pkgs/v0.6/Cxx/src/../deps/usr/lib/libcxxffi.so (unknown line)
_ZN5clang4Sema31PerformMemberExprBaseConversionEPNS_4ExprEb at /Users/lyon/Development/julia/julia-centos6/pkgs/v0.6/Cxx/src/../deps/usr/lib/libcxxffi.so (unknown line)
unknown function (ip: 0x7feb60fe7c4e)
_ZN5clang4Sema24BuildMemberReferenceExprEPNS_4ExprENS_8QualTypeENS_14SourceLocationEbRNS_12CXXScopeSpecES4_PNS_9NamedDeclERKNS_19DeclarationNameInfoEPKNS_24TemplateArgumentListInfoEPNS0_26ActOnMemberAccessExtraArgsE at /cvmfs/gm2.opensciencegrid.org/prod7/external/root/v6_06_04b/Linux64bit+2.6-2.12-e10-prof/lib/libCling.so (unknown line)
_ZN5clang4Sema21ActOnMemberAccessExprEPNS_5ScopeEPNS_4ExprENS_14SourceLocationENS_3tok9TokenKindERNS_12CXXScopeSpecES5_RNS_13UnqualifiedIdEPNS_4DeclEb at /cvmfs/gm2.opensciencegrid.org/prod7/external/root/v6_06_04b/Linux64bit+2.6-2.12-e10-prof/lib/libCling.so (unknown line)
# ... a lot more  ...

You'll notice that up until _ZN5clang4Sema31PerformMemberExprBaseConversionEPNS_4ExprEb, functions are being pulled from Root's libCling.so. At that function, it switches to libcxxffi.so from Julia. That function is defined in both libCling.so and libcxxffi.so, so my guess is that the wrong one is being chosen and that eventually leads to the segfault. I imagine that the version of Clang/LLVM in libcxxffi.so is quite a bit newer than what libCling.so can handle.

Any ideas here? I realize this is not an easy problem. My setup is also somewhat complicated...

I'm running centos 6.8 (in a VirtualBox virtual machine on my Mac).
The version of Root is 6.06/04 built with gcc 4.9.3 . This Root is in a special place and LD_LIBRARY_PATH is used to get the shared objects correct. I build Julia, Cxx.jl and Root.jl with this same compiler. My julia versioninfo (from the special executable) is,

julia> versioninfo()
Julia Version 0.6.1
Commit 0d7248e (2017-10-24 22:15 UTC)
Platform Info:
  OS: Linux (x86_64-unknown-linux-gnu)
  CPU: Intel(R) Core(TM) i7-4980HQ CPU @ 2.80GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Sandybridge)
  LAPACK: libopenblas64_
  LIBM: libopenlibm
  LLVM: libLLVM-3.9.1 (ORCJIT, haswell)

Thanks for any advice!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions