views:

199

answers:

4

While answering this question I noticed that I got the following dialog while atempting to move the "cursor" while an exception was being handled:

Unable to set the next statement to this location. The attempt to unwind the callstack failed.

Unwinding is not possible in the following scenarios:

  1. Debugging was started via Just-In-Time debugging.
  2. An unwind is in progress
  3. A System.StackOverflowException or System.Threading.ThreadAbortException exception has been thrown.

What exactly is an unwind?

+7  A: 

It's me!

No, in this context it typically refers to the process of stepping through a stack, removing successive frames until you've come back to the desired level.

This Wikipedia page has more detail.

unwind
+1  A: 

Unwinding is just moving back up the stack.

Craig Perry
A: 

It means there is a faulty thread or probably that is because the stack is full and no stack frame is created, the CLR as opts to UNWIND the current context in this situation.

Ravia
A: 

This where the CLR is 'unwinding' the stack in order to locate a method with a catch block that can handle the exception i.e. if the current method doesn't handle the exception it then returns to the method that called it to see if it will. This is repeated until it either finds a method to handle the exception or hits application level error handling.

Andy Rose