On Mon, Sep 09, 2013 at 03:35:22PM +0200, Stephan Bergmann wrote:
On 09/07/2013 09:46 AM, Lionel Elie Mamane wrote:
On Tue, Aug 20, 2013 at 10:57:06AM +0200, Stephan Bergmann wrote:
On 08/16/2013 03:46 PM, Lionel Elie Mamane wrote:
On Fri, Aug 16, 2013 at 02:55:35PM +0200, Stephan Bergmann wrote:
No real insight into any of this, but would it make sense to rely on
some explicit "commit" stimulus to do that committing, instead of
doing it upon "dispose"
I don't understand what "commit stimulus" is.
I was thinking of some "close" function (analogous to how, say, a
Java class representing a file should have an explicit close()
method rather than relying on a finalizer).
It seems the shutdown of ODatabaseContext at "dispose" time creates
other problems... E.g. https://bugs.freedesktop.org/69036
So I tried to look into this, and using a "close" that would be called
earlier makes sense to me, but in the context of application shutdown,
I don't see *who* would call it when :-| I'm a bit stuck there.
But wouldn't every "database context" be tied to some open window,
I don't see why that would be, unless we create a "fake" window in
headless situations or for things that don't have a UI window. I'm
thinking of this scenario:
1) run
soffice "-accept=socket,host=localhost,port=2002;urp;"
or
soffice "-accept=socket,host=localhost,port=2002;urp;" --nodefault
or
soffice "-accept=socket,host=localhost,port=2002;urp;" --headless
or
soffice "-accept=socket,host=localhost,port=2002;urp;" --headless --nodefault
or some such.
2) Run a python script like
import uno
localContext = uno.getComponentContext()
resolver = localContext.ServiceManager.createInstanceWithContext(
"com.sun.star.bridge.UnoUrlResolver", localContext )
ctx = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext" )
smgr = ctx.ServiceManager
dbCtx = smgr.createInstanceWithContext( "com.sun.star.sdb.DatabaseContext",ctx)
The ODatabaseContext that just got created, to what window would it be
tied?
or some "shell" in sfx2 speak,
Is the notion of "shell" different than "window"? Would the above
scenario have a shell, but no window?
In the context of https://bugs.freedesktop.org/69036, I would like to
see who holds a reference to the DatabaseContext that gets closed. It
is my understanding that (because we have reference-counting garbage
collection), dispose() should actually be called as soon as nobody
holds a reference to it anymore (unless we have a reference cycle).
How can I find that out? Anything better than breaking on the
constructor and going a few frames up, and reading the code to try to
guess where the reference is leaked / stored / ..., and then breaking
on any function that returns the reference as result, etc?
My end goal is to see if I cannot rather close the putative reference
leak or break the putative cycle, so that the DatabaseContext is
disposed as soon as it is not used anymore.
I grepped through some code creating DatabaseContext, it seems to
usually hold the reference for only a *short* time.
--
Lionel
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.