[Bug 206384] llvm libunwind segfaults while building lang/polyml

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Tue Jan 19 20:14:25 UTC 2016


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=206384

--- Comment #2 from Ed Maste <emaste at freebsd.org> ---
The large stack usage comes from this function -- note sub $0x878,%rsp:

template <typename A, typename R>
void UnwindCursor<A, R>::setInfoBasedOnIPRegister(bool isReturnAddress) {
    92d0:       55                      push   %rbp
    92d1:       48 89 e5                mov    %rsp,%rbp
    92d4:       41 57                   push   %r15
    92d6:       41 56                   push   %r14
    92d8:       41 55                   push   %r13
    92da:       41 54                   push   %r12
    92dc:       53                      push   %rbx
    92dd:       48 81 ec 78 08 00 00    sub    $0x878,%rsp

from the stack-allocated typename CFI_Parser<A>::PrologInfo prolog

  1229  #if _LIBUNWIND_SUPPORT_DWARF_UNWIND
  1230    // There is no static unwind info for this pc. Look to see if an FDE
was
  1231    // dynamically registered for it.
  1232    pint_t cachedFDE = DwarfFDECache<A>::findFDE(0, pc);
  1233    if (cachedFDE != 0) {
  1234      CFI_Parser<LocalAddressSpace>::FDE_Info fdeInfo;
  1235      CFI_Parser<LocalAddressSpace>::CIE_Info cieInfo;
  1236      const char *msg = CFI_Parser<A>::decodeFDE(_addressSpace,
  1237                                                  cachedFDE, &fdeInfo,
&cieInfo);
  1238      if (msg == NULL) {
  1239        typename CFI_Parser<A>::PrologInfo prolog;
  1240        if (CFI_Parser<A>::parseFDEInstructions(_addressSpace, fdeInfo,
cieInfo,
  1241                                                                  pc,
&prolog)) {

(lldb) p sizeof(PrologInfo)
(unsigned long) $10 = 1952

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list