Created attachment 19238 [details]
A sample project illustrating the issue.
Inside ContractDescriptionGenerator the method GetContractInternal calls into GetContractAssignableToInterfaces with the first parameter being of the given type that is being checked.
GetContractAssignableToInterfaces however doesn't actually look at the given type. So if you have a class that uses ServiceContractAttribute who implements another interface that does *not* use ServiceContractAttribute, the ContractDescriptionGenerator will iterate to the non-service interface, call GetContractAssignableToInterfaces with that type and then recurse forever.
This behavior only occurs in the mono library. We have verified that it does not occur in MS .NET implementation. Have attached a sample project where the bug occurs.