Closed Bug 7210 Opened 26 years ago Closed 26 years ago

MLK: nsTransactionManagerFactory

Categories

(Core :: DOM: Editor, defect, P3)

defect

Tracking

()

VERIFIED FIXED

People

(Reporter: bruce, Assigned: sfraser_bugs)

References

Details

Build from May 26, 1999. Solaris 2.6. Start and immediately exit apprunner -editor and this leaks. MLK: 88 bytes leaked at 0x96e638 * This memory was allocated from: malloc [rtlib.o] __bUiLtIn_nEw [libgcc.a] __builtin_new [rtlib.o] nsTransactionManagerFactory::CreateInstance(nsISupports*,const nsID&,void**) [nsTransactionManagerFactory.cpp:101] nsComponentManagerImpl::CreateInstance(const nsID&,nsISupports*,const nsID&,void**) [nsComponentManager.cpp:1118] nsEditor::EnableUndo(int) [nsEditor.cpp:490] nsTextEditor::EnableUndo(int) [nsTextEditor.cpp:855] nsHTMLEditor::EnableUndo(int) [nsHTMLEditor.cpp:316] nsTextEditor::Init(nsIDOMDocument*,nsIPresShell*) [nsTextEditor.cpp:330] nsHTMLEditor::Init(nsIDOMDocument*,nsIPresShell*) [nsHTMLEditor.cpp:118] nsEditorAppCore::InstantiateEditor(nsIDOMDocument*,nsIPresShell*) [nsEditorAppCore.cpp:335] nsEditorAppCore::DoEditorMode(nsIWebShell*) [nsEditorAppCore.cpp:387] nsEditorAppCore::PrepareDocumentForEditing() [nsEditorAppCore.cpp:681] nsEditorAppCore::OnEndDocumentLoad(nsIDocumentLoader*,nsIURL*,int) [nsEditorAppCore.cpp:1987] nsWebShell::OnEndDocumentLoad(nsIDocumentLoader*,nsIURL*,int) [nsWebShell.cpp:2486] nsDocLoaderImpl::FireOnEndDocumentLoad(nsIDocumentLoader*,int) [nsDocLoader.cpp:840] nsDocLoaderImpl::LoadURLComplete(nsIURL*,nsISupports*,int) [nsDocLoader.cpp:1018] nsDocumentBindInfo::OnStopBinding(nsIURL*,unsigned int,const unsigned short*) [nsDocLoader.cpp:1539] stub_complete(_NET_StreamClass*) [nsStubContext.cpp:772] net_ProcessFile [mkfile.c:1360] NET_ProcessNet [mkgeturl.c:3355] NET_PollSockets [mkselect.c:298] nsNetlibService::NetPollSocketsCallback(nsITimer*,void*) [nsNetService.cpp:1276] TimerImpl::FireTimeout() [nsTimer.cpp:73] nsTimerExpired [nsTimer.cpp:189] g_timeout_dispatch [gmain.c:1147] g_main_dispatch [gmain.c:647] g_main_iterate [gmain.c:854] g_main_run [gmain.c:912] gtk_main [gtkmain.c:475]
Assignee: kostello → kin
Target Milestone: M7
Reassigning to myself.
accepting bug.
Status: NEW → ASSIGNED
Assignee: kin → sfraser
Status: ASSIGNED → NEW
QA Contact: sujay → bruce
My ownership fixes should have fixed this.
Status: NEW → RESOLVED
Closed: 26 years ago
Resolution: --- → FIXED
Status: RESOLVED → REOPENED
Simon, I picked up your changes this morning and tried it on Win32. The editor still doesn't get Released(). Doesn't matter if I close via File->Quit or the window close button. I also found an addref problem in nsEditor::EnableUndo(). It looks like someone forgot to release a ref to the transaction manager it just created, before returning from the method, so we end up with a refcount of 2 for the transaction manager. I'll fix it.
I did more poking around, and it seems that JavaScript method EditorShutdown() isn't getting called on Win32. I also noticed that there are 2 references to nsEditorAppCore that aren't being released: 1. The add ref for nativeThis in EditorAppCore(). 2. The add ref that happens when you call nsWebShell::SetDocLoadObserver(). It looks like the web shell will not release it's reference to the DocLoadObserver unless you call SetDocLoadObserver() again with another observer or a null.
Forgot to add that when I modify the nsEditorAppCore refcnt in the debugger so that things actually do get released, both the editor and the transaction manager get released properly. So if we can just fix things on the appcore side, we should be in the clear. :)
Resolution: FIXED → ---
Clearing Fixed resolution.
Depends on: 5806
Target Milestone: M7 → M8
Status: REOPENED → RESOLVED
Closed: 26 years ago26 years ago
Resolution: --- → FIXED
The nsTransactionManagerFactory is only every made temporarily when creating the transaction manager. I verified in the debugger that it gets deleted.
Verified
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.