The answer to this is XP_PC vs XP_WIN. After two days debugging this I
discovered the XP_WIN change.

http://bugzilla.mozilla.org/show_bug.cgi?id=65727

>From the bug report...

Could nscom.h be changed to generate a compiler error if XP_PC is used?

I recompiled an older standalone XPCOM project that had XP_PC defined. It
took
me two days of debugging to figure out what happen.

Having XP_PC defined instead of XP_WIN causes __stdcall to be dropped from
Add/Release calls. So everything compiles and links just fine but the app
will
give stack imbalance errors when run. In the user app the calls to
Add/Release
() have been compiled as __thiscall instead of __stdcall since XP_WIN was
not
defined.

This is very difficult to find since all of the souce code looks correct
when
viewed in the debugger. Only after looking at the disassembled code could I
see
the missing push of the this pointer and finally figure out what happened.

--
Jon Smirl
[EMAIL PROTECTED]




Reply via email to