Closed Bug 166977 Opened 22 years ago Closed 13 years ago

Mfcembed no longer runs in Visual Studio Debugger

Categories

(Core Graveyard :: Embedding: APIs, defect)

x86
Windows 2000
defect
Not set
major

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: aaronlev, Unassigned)

References

()

Details

(Keywords: regression)

Attachments

(1 obsolete file)

Heikki and I are both getting a debug assertion dialog box when we try to debug with Mfcembed. Debug Assertion Failed! Program blah/blah/blah/Mfcembed.exe File blah/blah/blah/Mfcembed.cpp line 329
I have an urgent problem in bug 166987 that only happens with embedding applications, but I am unable to debug because of this bug. This is blocking me.
Blocks: 166978
Severity: normal → blocker
Keywords: regression
1.25 <chak@netscape.com> 11 Jun 2002 13:35 Fix for #129582 - Chnages to demostrate MRE usage r=adamlock, sr=rpotts, a=drivers fwiw it's spelled MfcEmbed.cpp, spelling counts for those of us who prefer to use bonsai.mozilla.org/cvsguess.cgi?file= <filename>
Attached patch proposed patch v.1 (obsolete) — Splinter Review
Not being able to register MRE components is not fatal. This should fix the problem you are seeing with MFCEmbed.
Comment on attachment 98082 [details] [diff] [review] proposed patch v.1 please change this to NS_WARNING(): 131 chak 1.35 NS_ASSERTION(PR_FALSE, "Could not AutoRegister MRE components");
Attachment #98082 - Flags: review+
Comment on attachment 98082 [details] [diff] [review] proposed patch v.1 sr=alecf
Attachment #98082 - Flags: superreview+
though, would it make sense to get rid of the if (NS_FAILED(rv) and just make the whole statement NS_ASSERTION(NS_SUCCEEDED(rv), "..."); sr=alecf if you do that too...
yeah, do it that way :-)
Assignee: adamlock → dougt
Checking in nsEmbedAPI.cpp; /cvsroot/mozilla/embedding/base/nsEmbedAPI.cpp,v <-- nsEmbedAPI.cpp new revision: 1.39; previous revision: 1.38 done
Status: NEW → RESOLVED
Closed: 22 years ago
Resolution: --- → FIXED
That didn't help, reopening. The assertion (still) happens, as Aaron pointed out, in MfcEmbed.cpp line 329. I can not just jump over the assertion, it will just assert later in another line, and another line and so on...
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
I don't see any problems with my patch. chak?
Assignee: dougt → chak
Status: REOPENED → NEW
Hmm, I had to clobber in embedding to get a bit forward (the line the debugger showed me was the next line of execution was wrong after line 126: |if (mreDir)| in nsEmbedAPI.cpp) after depend build. Now I can see that I get to line 136: nsCOMPtr<nsIObserver> mStartupNotifier = do_CreateInstance(NS_APPSTARTUPNOTIFIER_CONTRACTID, &rv); which fails (rv==NS_ERROR_FACTORY_NOT_REGISTERED, from nsComponentManagerImpl::FindFactory()).
something is seriously wrong with your build. try removing the following: bin/component.reg bin/components/compreg.dat then starting again.
That did not help. Note that I CAN run MfcEmbed if I double click on it in the Explorer. I just can't run it from Visual Studio (even ctrl+f5 won't work, asserts in the same place as when trying to run it in the debugger). Is anyone able to do this now? What kind of trickery have you done to make it possible? Are there some environment variables I need to set? I was finally able to attach the debugger to a running instance of MfcEmbed from the task manager (right click process, Debug), so I can lower the severity to major. That is still very unconvenient, and won't help if someone has a problem with startup that they need to debug.
Severity: blocker → major
I updated my trunk this afternoon and rebuilt the tree. I'm able to: 1. Run MfcEmbed from the command line or by dbl clicking in Explorer 2. Debug it via VC++ IDE without any issues or doing anything special. One thing i'm curious about is the assert you're seeing at line 329 as mentioned above. If you look at the source at http://lxr.mozilla.org/seamonkey/source/embedding/tests/mfcembed/MfcEmbed.cpp#329 there's no assert at that line or in that vicinity. I'm suspecting you do not have the latest source?
Seems like alecf changed the file this morning. I just updated, I still get the same assert in the same code, the line number is just different: rv = NS_InitEmbedding(mreAppDir, provider); if(NS_FAILED(rv)) { 384: ASSERT(FALSE); <= ASSERT HERE! return FALSE; } Since me, Aaron, Harish and Johnny all hit this assertion this seems real even if you and Doug don't hit it. When you say debug via the VC++ IDE I am assuming you do it by setting Projects > Settings... > Debug > General > "Executable for debug session" to path to mfcembed.exe, and hitting F5. If you are doing something else, let me know.
All I did was File->Open, and select the MFCEmbed.exe.
Ok, File > Open... works for me too, but it creates a new workspace. I don't want that - I want to use my Mozilla workspace where I have all the breakpoints I've set, all the DLLs I want to load into the debugger, all the files I want to see in the class view etc. Hmm, I finally found how I can get MfcEmbed to run like I want. In the settings dialog set the working directory to the directory where the executable is. What is so different in MfcEmbed that this doesn't work? mozilla.exe works, viewer.exe works and all the command line test applications I've tried work. If this is on purpose I need to update the win32 debugging FAQ.
Attachment #98082 - Attachment is obsolete: true
Assignee: chak → nobody
QA Contact: dunn5557 → apis
Mass marking all MFCEmbed bugs as wontfix, since bug 377410 removed it. If this bug was erroneously included (or say equally applies to winEmbed), please reopen & accept my apologies. Filter bugspam on mfcEmbedwontfix.
Status: NEW → RESOLVED
Closed: 22 years ago13 years ago
Resolution: --- → WONTFIX
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: