Thomas Munro <thomas.mu...@enterprisedb.com> writes:
> BTW It is working on arm64 too, starting with LLVM 6.  5 crashed the
> same way as it does on ppc.  See build farm member eelpout which is
> running Debian.

For entertainment's sake, I tried building --with-llvm on FreeBSD 12
arm64 (hey, gotta do something with this raspberry pi toy I got).
I used llvm-devel-7.0.d20180327 which seems to be the latest available in
FreeBSD's package system.  Builds cleanly, does not work at all.
SIGSEGV here:

#0  __clear_cache (start=0x4c055000, end=0x4c0566ec)
    at /usr/src/contrib/compiler-rt/lib/builtins/clear_cache.c:168
#1  0x000000004bb78d8c in 
llvm::sys::Memory::protectMappedMemory(llvm::sys::MemoryBlock const&, unsigned 
int) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#2  0x000000004b68f020 in 
llvm::SectionMemoryManager::applyMemoryGroupPermissions(llvm::SectionMemoryManager::MemoryGroup&,
 unsigned int) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#3  0x000000004b68ef38 in 
llvm::SectionMemoryManager::finalizeMemory(std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> >*) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#4  0x000000004b85d310 in llvm::RuntimeDyld::finalizeWithMemoryManagerLocking()
    () from /home/tgl/installdir/lib/postgresql/llvmjit.so
#5  0x000000004ad22c38 in llvm::orc::RTDyldObjectLinkingLayer::ConcreteLinkedObj
ect<std::__1::shared_ptr<llvm::RuntimeDyld::MemoryManager> >::finalize() ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#6  0x000000004ad236ec in 
llvm::orc::RTDyldObjectLinkingLayer::ConcreteLinkedObject<std::__1::shared_ptr<llvm::RuntimeDyld::MemoryManager>
 >::getSymbolMaterializer(std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> 
>)::{lambda()#1}::operator()() const ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#7  0x000000004ad22084 in llvm::JITSymbol::getAddress() ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#8  0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#9  0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#10 0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#11 0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#12 0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#13 0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#14 0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#15 0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#16 0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#17 0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#18 0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#19 0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#20 0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#21 0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#22 0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#23 0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#24 0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#25 0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#26 0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#27 0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#28 0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#29 0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
#30 0x000000004ad1dbec in llvm::OrcCBindingsStack::findSymbolAddress(unsigned 
long&, std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, bool) ()
   from /home/tgl/installdir/lib/postgresql/llvmjit.so
... etc etc ...

Sure looks like infinite recursion in findSymbolAddress.  Thoughts?

                        regards, tom lane

Reply via email to