[llvm-bugs] [Bug 26757] New: [WinEH] invalid exception object in catch handler

via llvm-bugs llvm-bugs at lists.llvm.org
Sat Feb 27 01:47:30 PST 2016


https://llvm.org/bugs/show_bug.cgi?id=26757

            Bug ID: 26757
           Summary: [WinEH] invalid exception object in catch handler
           Product: new-bugs
           Version: trunk
          Hardware: PC
                OS: Windows NT
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
          Assignee: unassignedbugs at nondot.org
          Reporter: r.sagitario at gmx.de
                CC: llvm-bugs at lists.llvm.org
    Classification: Unclassified

The attached IR is generated by enabling optimization in the D compiler, but
generates code that crashes in the continuation of the catch handler because
the exception object is invalid.

The stack offset for the exception object in the handlerMap is 0, see the
respective asm:

$handlerMap$0$__D3enf15__unittestL11_1FZv:
    .long    0
    .long    _Dobject.Exception at TypeDescriptor
    .long    0
    .long    "?catch$4@?0?__D3enf15__unittestL11_1FZv at 4HA" 

This is rejected by the VC runtime in int __BuildCatchObjectHelper(),
HT_DISPCATCH(*pCatch) is 0:

    // If the catch is by ellipsis, then there is no object to construct.
    // If the catch is by type(No Catch Object), then leave too!
    if (HT_IS_TYPE_ELLIPSIS(*pCatch) ||
        (!HT_DISPCATCH(*pCatch) && !HT_ISCOMPLUSEH(*pCatch))) {
        EHTRACE_EXIT;
        return 0;
    }

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20160227/a3e80c68/attachment.html>


More information about the llvm-bugs mailing list