jonathan.protzenko at gmail.com
Sun Dec 5 22:04:48 UTC 2010
Bouncing ideas on IRC, I just figured out my nsIMsgCompose obtained
through msgComposeService::initCompose wasn't rooted. Since
nsMsgCopySendListener from nsMsgCompose.cpp holds a weak pointer to its
corresponding nsIMsgCompose instance (note to future me: use grep -i),
the rare case where a GC was triggered after the sending process had
started and *before* it had ended would collect my msgCompose and defeat
the whole process.
I've given MsgComposeCommands.js in seamonkey a look, but everything
seems to be rooted properly. For the record, I managed to reliably
reproduce the issue by sneaking a call to Cu.forceGC() in my
onStatusChange method from the progressListener. Seamonkey folks might
want to try this, although I offer no guarantees of success.
Thanks for your potential, not-useful-anymore help :-).
More information about the tb-planning