jamsla jamsla

Niner since 2007


  • Ale Contenti and Louis Lafreniere: ​Understandi​ng Exceptions and When/How to Handle Them

    I was hoping to hear more about where the exception objects 'live' until they're caught:
    • Is some big buffer allocated into which they are placed, on a per-stack basis (in which case, who allocates it? What if I stupidly use CreateThread instead of _beginthreadex)?
    • Is the exception constructed first and copied there (or else what happens when an exception is thrown during exception object construction - when is the exception considered thrown)?
    • How big can an exception object be?
    • If I do something silly to increase the alignment of a class, is that handled?
    • How do exception frames work within exception handlers? So on.
    Great video otherwise, but it would have been nice to get further into the implementation details beyond "We have a linked list of frames at FS:0 on x86 and a table of handlers based on instruction addresses for x64". For example, a while ago I saw Brandon Bray give a great presentation on SafeSEH, which wasn't even mentioned here.