This post originated from an RSS feed registered with .NET Buzz
by Sam Gentile.
Original Post: ES, Distributed Transactions do work on Win2K3
Feed Title: Sam Gentile's Blog
Feed URL: http://samgentile.com/blog/Rss.aspx
Feed Description: .NET and Software Development from an experienced perspective - .NET/CLR, Rotor, Interop, MC+/C++, COM+, ES, Mac OS X, Extreme Programming and More!
Last week an alien took over my blog. This alternate Sam Gentile brashly said Distributed Transactions do not work on Win2K3. Imagine that! Now that I have gotten control of my blog back by vanquishing the alien, the real Sam Gentile is here to say that of course ES Distributed Transactions do work on Win2K3 and it was silly to say otherwise. They are in use all over the world in all sorts of systems. In the case of our particular problems with Oracle, it turns out to be that nasty thing that plagues all C based APIs and non-careful C++ programmers (in this case Oracle programmers): heap corruption. The Oracle Services for MTS has a nasty heap corruption bug caused when the programmer called IDispenserManager::RegisterDispenser with an ANSI string instead of a UNICODE string and then causing the heap to corrupt. The problem of course manifested as distributed transactions unable to enlist but in a combination of systems it can be anything and in this case it was an Oracle programmer doing what we have all done at some time or another: corrupt the heap with some C++ code. Many thanks to Florin Lazar and his team at Microsoft for tracking down the problem.