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 _______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice