When a dynamic method creates a delegate targeting a different dynamic method using the delegate's constructor, the new delegate works, but it's internal _methodBase field is null. As a result, the delegate does not gc-reference the target dynamic method. If the dynamic method is garbage-collected and its memory overwritten before it is invoked, various bugs and crashes result, the commonest of them being Access Violation (0xc0000005) in mscorwks.dll.
The attached sample demonstrates this issue and workaround.
NB: this issue is found in .NET 2.0, 3.5, 3.5 SP1.