Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


On 10/20/2011 08:08 AM, Stephan Bergmann wrote:
On 10/19/2011 07:17 PM, Andrew Haley wrote:
On 10/19/2011 05:57 PM, Michael Meeks wrote:

On Wed, 2011-10-19 at 17:32 +0200, Stephan Bergmann wrote:
What the LibO hsqldb code does a lot is call JNI's
Attach/DetachCurrentThread.  Googling around,
<http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6929067>  "Stack
guard pages should be removed when thread is detached" suggests that
reading /proc/self/maps might have been added into
Attach/DetachCurrentThread as part of a bug fix.  That would explain things.

    Good catch ! The irony ... :-) this Java bug was kindly fixed for us
indirectly via Andrew Haley to address the bad stack page left around when
we had run some java. That page was causing crashes in calc formula computation
in large sheets.

    It seems we can't win at some stage here. Andrew - I wonder are other
people getting frustrated by performance here too ? it seems there is
some huge /proc/self/maps thrash as we enter/exit Java now on Linux.

Hmmm, I thought this had been fixed.

See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6978641

This might still hit us, if the LibO hsqldb code runs in the main thread 
(which I'm pretty sure it does).  That code calls 
Attach/DetachCurrentThread frequently.

I suppose that code was written with the assumption that
Attach/DetachCurrentThread is cheap.  Checking for the guard pages is
not madly expensive, though: it's only parsing the memory map in a
very simple way.  Having said that, my original patch was rewritten in
a way that makes it run much more slowly because it's now using
unbuffered rather than buffered I/O.

I think the best solution here would be to change the LibO hsqldb code, 
to call Attach/DetachCurrentThread rarely rather than frequently, but 
according to Ocke Janssen (who used to maintain that code) that was no 
easy option.

Or just move it onto a subthread.

Andrew.

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.