summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2023-12-31 22:34:37 +0600
committerMike Kaganski <mike.kaganski@collabora.com>2023-12-31 22:51:42 +0100
commit75c89e5603b5fbe4fa2b307f565c071f3b36216b (patch)
tree31f665a3346e52a1f2974b9bb370e42c0d6e573c /vcl
parentc3ac62fb5772838cfa27c7c690a57ddfad082cb3 (diff)
Acquire solar mutex in SkiaZone, instead of asserting
The assertion is there since commit 7c1dc527837a65b77f7624e18a575271cb46afba (ensure SolarMutex is held for SkiaZone, 2020-09-29). For unclear reason, it now started to fail locally in JunitTest_toolkit_unoapi_3: vcllo.dll!SkiaZone::SkiaZone() Line 23 C++ vcllo.dll!SkiaSalBitmap::ResetAllData() Line 1412 C++ vcllo.dll!SkiaSalBitmap::Create(const Size & rSize, vcl::PixelFormat ePixelFormat, const BitmapPalette & rPal) Line 85 C++ vcllo.dll!Bitmap::Bitmap(const Size & rSizePixel, vcl::PixelFormat ePixelFormat, const BitmapPalette * pPal) Line 132 C++ vcllo.dll!`anonymous namespace'::GIFReader::CreateBitmaps(__int64 nWidth, __int64 nHeight, BitmapPalette * pPal, bool bWatchForBackgroundColor) Line 224 C++ vcllo.dll!`anonymous namespace'::GIFReader::ReadLocalHeader() Line 513 C++ vcllo.dll!`anonymous namespace'::GIFReader::ProcessGIF() Line 807 C++ vcllo.dll!`anonymous namespace'::GIFReader::ReadGIF(Graphic & rGraphic) Line 946 C++ vcllo.dll!ImportGIF(SvStream & rStm, Graphic & rGraphic) Line 1005 C++ vcllo.dll!GraphicFilter::readGIF(SvStream & rStream, Graphic & rGraphic, GfxLinkType & rLinkType) Line 920 C++ vcllo.dll!GraphicFilter::ImportGraphic(Graphic & rGraphic, std::basic_string_view<char16_t,std::char_traits<char16_t>> rPath, SvStream & rIStream, unsigned short nFormat, unsigned short * pDeterminedFormat, GraphicFilterImportFlags nImportFlags) Line 1328 C++ vcllo.dll!GraphicFilter::FilterCallback(ConvertData & rData) Line 1861 C++ vcllo.dll!GraphicFilter::LinkStubFilterCallback(void * instance, ConvertData & data) Line 1832 C++ sofficeapp.dll!Link<ConvertData &,bool>::Call(ConvertData & data) Line 111 C++ sofficeapp.dll!desktop::Desktop::ImplInitFilterHdl(desktop::Desktop * __formal, ConvertData & rData) Line 1722 C++ sofficeapp.dll!desktop::Desktop::LinkStubImplInitFilterHdl(void * instance, ConvertData & data) Line 1719 C++ vcllo.dll!Link<ConvertData &,bool>::Call(ConvertData & data) Line 111 C++ vcllo.dll!GraphicConverter::Import(SvStream & rIStm, Graphic & rGraphic, ConvertDataFormat nFormat) Line 39 C++ frmlo.dll!ImageProducer::ImplImportGraphic(Graphic & rGraphic) Line 187 C++ frmlo.dll!ImageProducer::startProduction() Line 147 C++ frmlo.dll!frm::OImageControlModel::doSetControlValue(const com::sun::star::uno::Any & _rValue) Line 610 C++ frmlo.dll!frm::OBoundControlModel::setControlValue(const com::sun::star::uno::Any & _rValue, frm::OBoundControlModel::ValueChangeInstigator _eInstigator) Line 2127 C++ frmlo.dll!frm::OImageControlModel::impl_updateStreamForURL_lck(const rtl::OUString & _rURL, frm::OBoundControlModel::ValueChangeInstigator _eInstigator) Line 423 C++ frmlo.dll!frm::OImageControlModel::impl_handleNewImageURL_lck(frm::OBoundControlModel::ValueChangeInstigator _eInstigator) Line 437 C++ frmlo.dll!frm::OImageControlModel::setFastPropertyValue_NoBroadcast(long nHandle, const com::sun::star::uno::Any & rValue) Line 259 C++ cppuhelper3MSC.dll!cppu::OPropertySetHelper::setFastPropertyValue(long nHandle, const com::sun::star::uno::Any & rValue) Line 523 C++ comphelper.dll!comphelper::OPropertySetAggregationHelper::setFastPropertyValue(long _nHandle, const com::sun::star::uno::Any & _rValue) Line 534 C++ cppuhelper3MSC.dll!cppu::OPropertySetHelper::setPropertyValue(const rtl::OUString & rPropertyName, const com::sun::star::uno::Any & rValue) Line 266 C++ mscx_uno.dll!`anonymous namespace'::cpp_call(bridges::cpp_uno::shared::UnoInterfaceProxy * pThis, bridges::cpp_uno::shared::VtableSlot aVtableSlot, _typelib_TypeDescriptionReference * pReturnTypeRef, long nParams, _typelib_MethodParameter * pParams, void * pUnoReturn, void * * pUnoArgs, _uno_Any * * ppUnoExc) Line 214 C++ mscx_uno.dll!unoInterfaceProxyDispatch(_uno_Interface * pUnoI, const _typelib_TypeDescription * pMemberTD, void * pReturn, void * * pArgs, _uno_Any * * ppException) Line 430 C++ binaryurplo.dll!binaryurp::IncomingRequest::execute_throw(binaryurp::BinaryAny * returnValue, std::vector<binaryurp::BinaryAny,std::allocator<binaryurp::BinaryAny>> * outArguments) Line 239 C++ binaryurplo.dll!binaryurp::IncomingRequest::execute() Line 79 C++ binaryurplo.dll!request(void * pThreadSpecificData) Line 84 C++ cppu3.dll!cppu_threadpool::JobQueue::enter(const void * nDisposeId, bool bReturnWhenNoJob) Line 101 C++ cppu3.dll!cppu_threadpool::ORequestThread::run() Line 169 C++ cppu3.dll!threadFunc(void * param) Line 190 C++ sal3.dll!oslWorkerWrapperFunction(void * pData) Line 69 C++ ucrtbased.dll!00007ff9dfee3010() Unknown kernel32.dll!00007ffaab01257d() Unknown ntdll.dll!00007ffaac28aa58() Unknown No idea what caused the problem only now. But since solar mutex is expected to be hold here, let's just do it. Change-Id: Id848f5f43759ef37faa0d18ed3133a7292b3463f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161504 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/inc/skia/zone.hxx7
1 files changed, 4 insertions, 3 deletions
diff --git a/vcl/inc/skia/zone.hxx b/vcl/inc/skia/zone.hxx
index 6d503e7eb803..73fa477d5249 100644
--- a/vcl/inc/skia/zone.hxx
+++ b/vcl/inc/skia/zone.hxx
@@ -13,19 +13,20 @@
#include <comphelper/crashzone.hxx>
#include <vcl/dllapi.h>
-
-#include <comphelper/solarmutex.hxx>
+#include <vcl/svapp.hxx>
// Used around calls to Skia code to detect crashes in drivers.
class VCL_DLLPUBLIC SkiaZone : public CrashZone<SkiaZone>
{
public:
- SkiaZone() { assert(comphelper::SolarMutex::get()->IsCurrentThread()); }
static void hardDisable();
static void relaxWatchdogTimings();
static const CrashWatchdogTimingsValues& getCrashWatchdogTimingsValues();
static void checkDebug(int nUnchanged, const CrashWatchdogTimingsValues& aTimingValues);
static const char* name() { return "Skia"; }
+
+private:
+ SolarMutexGuard g;
};
#endif // INCLUDED_VCL_INC_SKIA_ZONE_H