Re: PG11 jit failing on ppc64el - Mailing list pgsql-hackers

From Tom Lane
Subject Re: PG11 jit failing on ppc64el
Date
Msg-id 28160.1527133734@sss.pgh.pa.us
Whole thread Raw
In response to Re: PG11 jit failing on ppc64el  (Thomas Munro <thomas.munro@enterprisedb.com>)
Responses Re: PG11 jit failing on ppc64el  (Thomas Munro <thomas.munro@enterprisedb.com>)
List pgsql-hackers
Thomas Munro <thomas.munro@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


pgsql-hackers by date:

Previous
From: Michael Paquier
Date:
Subject: Re: Simplify final sync in pg_rewind's target folder and add--no-sync
Next
From: Justin Pryzby
Date:
Subject: Re: documentation fixes for partition pruning, round two