I have a classic case of a problem that is sucking all of the enjoyment out of this profession. No it doesn't just suck, it's giving me the stinking shits.
We failed to make a release tonight because of incomprehensible crashes and behaviour with our 7 year old well-tested app when deployed to a Windows 2003 Server. The suite runs and behaves perfectly on our development machines, but when the MSIs were built and installed it all went to hell in a hand basket with errors we have never seen in our lives. I double checked all of the build options and the Framework versions and references of the 52 projects to check for accidental mismatches, but it all looked good. After running hours of tests I eventually managed to log a nested exception in the client app that was opening a binary Remoting channel to the server. One exception referred to a problem with serializing a MarshalByRefObject, another gave the vital clue "object must implement IConvertible". Web searches produced hundreds of hits on this IConvertible message, but there were no answers anywhere. So just for the hell of it (I had no other option) I added the IConvertible interface to the MarshalByRefObject class used in the Remoting code. I left dummy throws in the 17 useless methods of the interface. I rebuilt, redeployed and it all worked. So why the hell would I suddenly need to implement this interface (without any working code) on a MarshalByRefObject class to prevent it crashing on certain machines? This problem happened on different Win3K machines in different testing locations. I can find no pattern anywhere to explain it. Greg
