# illegalPrepareConstrainedRegion MDA

The illegalPrepareConstrainedRegion managed debugging assistant (MDA) is activated when a RuntimeHelpers.PrepareConstrainedRegions method call does not immediately precede the try statement of the exception handler. This restriction is at the MSIL level, so it is permissible to have non-code-generating source between the call and the try, such as comments.

## Symptoms

A constrained execution region (CER) that is never treated as such, but as a simple exception handling block (finally or catch). As a consequence, the region does not run in the event of an out-of-memory condition or a thread abort.

## Cause

The preparation pattern for a CER is not followed correctly. This is an error event. The PrepareConstrainedRegions method call used to mark exception handlers as introducing a CER in their catch/finally/fault/filter blocks must be used immediately before the try statement.

## Resolution

Ensure that the call to PrepareConstrainedRegions happens immediately before the try statement.

## Effect on the Runtime

This MDA has no effect on the CLR.

## Output

The MDA displays the name of the method calling the PrepareConstrainedRegions method, the MSIL offset, and a message indicating the call does not immediately precede the beginning of the try block.

## Configuration

<mdaConfig>
<assistants>
<illegalPrepareConstrainedRegion/>
</assistants>
</mdaConfig>


## Example

The following code example demonstrates the pattern that causes this MDA to be activated.

void MethodWithInvalidPCR()
{
RuntimeHelpers.PrepareConstrainedRegions();
Object o = new Object();
try
{
…
}
finally
{
…
}
}