]> Cypherpunks repositories - gostls13.git/commit
runtime: correct seh installation during callbacks
authorAlex Brainman <alex.brainman@gmail.com>
Wed, 10 Aug 2011 07:17:28 +0000 (17:17 +1000)
committerAlex Brainman <alex.brainman@gmail.com>
Wed, 10 Aug 2011 07:17:28 +0000 (17:17 +1000)
commit9c774c3f2665e2ad123e500bef1fdf0ba0072e83
treea8eab12755d85c952607b0cc0895b198d0cd099a
parent8fced60a722e4ef58e69828235587b0fb39316e8
runtime: correct seh installation during callbacks

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
src/pkg/runtime/runtime.h
src/pkg/runtime/windows/386/sys.s