[Libreoffice-commits] core.git: sc/source

Luboš Luňák l.lunak at collabora.com
Wed Jun 6 16:00:45 UTC 2018


 sc/source/core/tool/token.cxx |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

New commits:
commit abb19edc79bd7d96827214d3b49f80e270e1c0b7
Author: Luboš Luňák <l.lunak at collabora.com>
Date:   Wed Jun 6 14:21:55 2018 +0200

    blacklist ocExternal for calc's threaded calculations
    
    Opcode ocExternal is used for functions implemented as UNO calls,
    which has a number of problems:
    - ooo#118213-2 contains GETEOMONTH(), which maps to ocExternal, which
      calls AnalysisAddIn::getEomonth() in scaddins, which ends up calling
      ScModelObj::getPropertyValue(), which deadlocks on SolarMutex
    - it uses ScUnoAddInCollection class, which uses delayed initialization
      (even though it's created on-demand), which is not thread-safe; however,
      it seems that the initialization is generally done already while loading
      a file, so this is possibly in practice safe
    - who knows what all kinds of race conditions there are in all the functions
      this may call via UNO
    
    Change-Id: I80c4264102b8bc492853852c2c12e5cd2a8ea99e
    Reviewed-on: https://gerrit.libreoffice.org/55382
    Reviewed-by: Michael Meeks <michael.meeks at collabora.com>
    Tested-by: Jenkins <ci at libreoffice.org>

diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx
index 000e537b65b8..ac4fed165b87 100644
--- a/sc/source/core/tool/token.cxx
+++ b/sc/source/core/tool/token.cxx
@@ -1321,7 +1321,8 @@ void ScTokenArray::CheckForThreading( OpCode eOp  )
         ocCell,
         ocInfo,
         ocStyle,
-        ocDBSum
+        ocDBSum,
+        ocExternal
     });
 
     // We only call this if it was already disabled


More information about the Libreoffice-commits mailing list