Copy complete.

Jonathan Protzenko jonathan.protzenko at
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 mailing list