

So we've been waiting on a Silverlight 2 update for it to run Firefox 3. After a bit of back and forth, it was apparent that the Silverlight team would be the ones making modifications so that they'd handle both Firefox 2 and 3's different behaviors. The Firefox team clearly didn't want to be bothered with this issue, despite the fact that it was near the top of the list of topcrash bugs for Firefox 3. In our experience, FF2 calls DeallocateObject on our NPObjects when *it* no longer references that NPObject. The reason why we do this is related to how reference counting works in FF2. Apparently FF3's ReleaseObject implementation crashes when an object is passed in that FF3 believes to be dead. the problem is that we're calling ReleaseObject from a call to DeallocateObject (which is called by FF). It appears that something changed in the way that Firefox disposes objects on the move from Firefox 2 to 3, as Wilco Bauwer's comment indicates: There's a lot of back and forth on the Bugzilla thread. You could view Silverlight 2 (Beta 1) objects in Firefox 3, but when you closed the tab, it would crash the entire browser process. It reads innocently enough: "NPRuntime object reference counting is violated by NPObjWrapperPluginDestroyedCallback causing Silverlight 2.0 beta: crashes when closing tab/window JS_SetPrivate - NPObjWrapperPluginDestroyedCallback]". I've been following this issue on Bugzilla ( Bug 421217) for a few months.

One of the best "undocumented" features in Silverlight 2 Beta 2 is that it now works with Firefox 3. If you've been holding off on using Silverlight 2 or Firefox 3 because they weren't playing well together, it's safe to come out now.
