• Alex Brainman's avatar
    runtime: correct seh installation during callbacks · 9c774c3f
    Alex Brainman authored
    Every time we enter callback from Windows, it is
    possible that go exception handler is not at the top
    of per-thread exception handlers chain. So it needs
    to be installed again. At this moment this is done
    by replacing top SEH frame with SEH frame as at time
    of syscall for the time of callback. This is incorrect,
    because, if exception strike, we won't be able to call
    any exception handlers installed inside syscall,
    because they are not in the chain. This changes
    procedure to add new SEH frame on top of existing
    chain instead.
    
    I also removed m sehframe field, because I don't
    think it is needed. We use single global exception
    handler everywhere.
    
    R=golang-dev, r
    CC=golang-dev, hectorchu
    https://golang.org/cl/4832060
    9c774c3f
sys.s 4.62 KB