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


Running JunitTest_dbaccess_complex happened to deadlock the soffice.bin process for me once (non-reproducibly), and jstack shows that there is a deadlock in HSQLDB Java code in the in-process JVM:

Found one Java-level deadlock:
=============================
"Thread-275584":
  waiting to lock monitor 0x00002ac4e8004d78 (object 0x00000005e9008720, a 
org.hsqldb.lib.HsqlTimer$TaskQueue),
  which is held by "HSQLDB Timer @5749ac52"
"HSQLDB Timer @5749ac52":
  waiting to lock monitor 0x00002ac4e8005508 (object 0x00000007959e9bb0, a 
org.hsqldb.lib.HsqlTimer$Task),
  which is held by "Thread-275584"

Java stack information for the threads listed above:
===================================================
"Thread-275584":
        at org.hsqldb.lib.HsqlTimer$TaskQueue.signalTaskCancelled(HsqlTimer.java:926)
        - waiting to lock <0x00000005e9008720> (a org.hsqldb.lib.HsqlTimer$TaskQueue)
        at org.hsqldb.lib.HsqlTimer$Task.cancel(HsqlTimer.java:728)
        at org.hsqldb.lib.HsqlTimer$Task.setPeriod(HsqlTimer.java:803)
        - locked <0x00000007959e9bb0> (a org.hsqldb.lib.HsqlTimer$Task)
        at org.hsqldb.lib.HsqlTimer.setPeriod(HsqlTimer.java:428)
        at org.hsqldb.scriptio.ScriptWriterBase.setWriteDelay(ScriptWriterBase.java:418)
        at org.hsqldb.persist.Log.setWriteDelay(Log.java:529)
        at org.hsqldb.persist.Logger.setWriteDelay(Logger.java:386)
        - locked <0x00000005e971ad68> (a org.hsqldb.persist.Logger)
        at org.hsqldb.DatabaseCommandInterpreter.processSet(DatabaseCommandInterpreter.java:2361)
        at org.hsqldb.DatabaseCommandInterpreter.executePart(DatabaseCommandInterpreter.java:308)
        at org.hsqldb.DatabaseCommandInterpreter.execute(DatabaseCommandInterpreter.java:170)
        at org.hsqldb.Session.sqlExecuteDirectNoPreChecks(Session.java:1037)
        - locked <0x00000005e9703c98> (a org.hsqldb.Database)
        at org.hsqldb.Session.execute(Session.java:899)
        - locked <0x00000005e9703c98> (a org.hsqldb.Database)
        at org.hsqldb.jdbc.jdbcStatement.fetchResult(jdbcStatement.java:1581)
        at org.hsqldb.jdbc.jdbcStatement.execute(jdbcStatement.java:628)
"HSQLDB Timer @5749ac52":
        at org.hsqldb.lib.HsqlTimer$Task.getNextScheduled(HsqlTimer.java:763)
        - waiting to lock <0x00000007959e9bb0> (a org.hsqldb.lib.HsqlTimer$Task)
        at org.hsqldb.lib.HsqlTimer.compare(HsqlTimer.java:108)
        at org.hsqldb.lib.HsqlArrayHeap.add(HsqlArrayHeap.java:122)
        - locked <0x00000005e9008720> (a org.hsqldb.lib.HsqlTimer$TaskQueue)
        at org.hsqldb.lib.HsqlTimer$TaskQueue.addTask(HsqlTimer.java:841)
        at org.hsqldb.lib.HsqlTimer.nextTask(HsqlTimer.java:558)
        at org.hsqldb.lib.HsqlTimer$TaskRunner.run(HsqlTimer.java:610)
        at java.lang.Thread.run(Thread.java:745)

At least at first sight, this smells more like a bug in HSQLDB itself than like a problem caused by invalid use of HSQLDB from LO code. According to Wikipedia, the current stable release of HSQLDB is 2.3.3 (from June 2015), while LO's external/hsqldb appears to be 1.8.0 (at least, the tarball we use is named 17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip).

And LO's configure.ac checks that the version is indeed 1.8,

  AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])

so looks like we're stuck with that, for whatever reason?  Anybody knows?

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.