[Libreoffice] UNO Object Life Cycle question
Stephan Bergmann
sbergman at redhat.com
Wed Jan 11 05:47:29 PST 2012
On 01/11/2012 12:51 PM, Tomas Hlavaty wrote:
>>> Is there a mechanism that when a link between the server and client
>>> bridge breaks, the server releases the resources properly, or do we
>>> get/expect memory leaks?
>>
>> In some sense this is a QoI issue.
>
> What is "a QoI issue"? Quality of Information? You mean that the
> server must be able to detect disconnection, which works with sockets
> but wouldn't work for example with named pipes?
Quality of Implementation, sorry. As I wrote the other day, UNO largely
tries to pretend that interprocess communication is no different from
intraprocess communication. So questions of how to react to a lost
connection are somewhat outside the scope of the UNO specification.
> My use case is as follows:
>
> 1) connect to LO via unix domain socket
>
> 2) load and traverse (via uno) a large word document (about 1200 pages
> of plain text)
>
> 3) close the connection
>
> And repeat many times with long running LO process.
[...]
> The memory usage keeps growing, slightly but persistently. Is it a
> leak, or a feature of the custom LO allocator, or would it stabilise
> eventually?
Setting G_SLICE=always-malloc environment variable should help rule out
the LO memory allocator.
I can easily imagine that there is a leak somewhere. Why the numbers
are different with different release strategies is hard to tell. In
principle, it could be that releasing a remotely held UNO object early
releases more additional data structures than if it is only released
later, if the indirectly referenced data structures change in the
meantime (e.g., mass release during connection loss might hypothetically
lead to unreclaimable ring references).
Stephan
More information about the LibreOffice
mailing list