https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=206384
--- Comment #3 from Ed Maste ---
By comparison, the equivalent struct in the GCC unwinder:
(lldb) p sizeof(_Unwind_FrameState)
(unsigned long) $3 = 384
as it has storage for only 18 registers:
(lldb) p sizeof(fs.regs.reg) / sizeof(fs.reg
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=206384
--- Comment #2 from Ed Maste ---
The large stack usage comes from this function -- note sub $0x878,%rsp:
template
void UnwindCursor::setInfoBasedOnIPRegister(bool isReturnAddress) {
92d0: 55 push %rbp
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=206384
--- Comment #1 from Ed Maste ---
This is happening because libunwind steps on the thread stack guard page.
libpolyml/sighandler.cpp for the signal handler thread calls
pthread_attr_setstacksize(min(4096, PTHREAD_STACK_MIN)) - on FreeBSD/x8
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=206384
Ed Maste changed:
What|Removed |Added
See Also||https://bugs.freebsd.org/bu
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=206384
Bug ID: 206384
Summary: llvm libunwind segfaults while building lang/polyml
Product: Base System
Version: 11.0-CURRENT
Hardware: Any
OS: Any
Status: New