Re: PG11 jit failing on ppc64el

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Thomas Munro <thomas(dot)munro(at)enterprisedb(dot)com>
Cc: Christoph Berg <myon(at)debian(dot)org>, Andres Freund <andres(at)anarazel(dot)de>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: PG11 jit failing on ppc64el
Date: 2018-05-24 03:48:54
Message-ID: 28160.1527133734@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Thomas Munro <thomas(dot)munro(at)enterprisedb(dot)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

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Justin Pryzby 2018-05-24 05:19:15 Re: documentation fixes for partition pruning, round two
Previous Message Michael Paquier 2018-05-24 03:20:28 Re: Simplify final sync in pg_rewind's target folder and add --no-sync