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

Stephan Bergmann sbergman at redhat.com
Thu Apr 18 16:40:24 PDT 2013


 vcl/source/gdi/virdev.cxx |    9 ---------
 1 file changed, 9 deletions(-)

New commits:
commit 4069417bc3bbe4858f4d7cd264604e76affe82fc
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Fri Apr 19 01:26:36 2013 +0200

    Do not arbitrarily lock a mutex
    
    ...without unlocking it again.  This nonsense /does/ cause deadlocks and hours
    of frustrated debugging on --enable-dbgutil Mac OS X, e.g., after this code is
    called as
    
    0  VirtualDevice::~VirtualDevice (this=0xa363200) at lo/core/vcl/source/gdi/virdev.cxx:187
    1  0x05541677 in VirtualDevice::~VirtualDevice (this=0xa363200) at lo/core/vcl/source/gdi/virdev.cxx:182
    2  0x0554164a in VirtualDevice::~VirtualDevice (this=0xa363200) at lo/core/vcl/source/gdi/virdev.cxx:182
    3  0x05646a76 in StatusBar::~StatusBar (this=0xa362f10) at lo/core/vcl/source/window/status.cxx:176
    4  0x05646947 in StatusBar::~StatusBar (this=0xa362f10) at lo/core/vcl/source/window/status.cxx:168
    5  0x0564691a in StatusBar::~StatusBar (this=0xa362f10) at lo/core/vcl/source/window/status.cxx:168
    6  0x0396cf2f in VCLXDevice::DestroyOutputDevice (this=0x390356cc) at lo/core/toolkit/source/awt/vclxdevice.cxx:56
    7  0x039d4345 in VCLXWindow::dispose (this=0x390356cc) at lo/core/toolkit/source/awt/vclxwindow.cxx:956
    8  0x039d452c in non-virtual thunk to VCLXWindow::dispose() (this=0x390356f8) at lo/core/toolkit/source/awt/vclxwindow.cxx:976
    9  0x10dc6126 in framework::ProgressBarWrapper::setStatusBar (this=0x39002aac, rStatusBar=@0xb122e050, bOwnsInstance=0) at lo/core/framework/source/uielement/progressbarwrapper.cxx:63
    10 0x10c17c84 in framework::LayoutManager::implts_backupProgressBarWrapper (this=0x19582c48) at lo/core/framework/source/layoutmanager/layoutmanager.cxx:943
    11 0x10c16ca7 in framework::LayoutManager::implts_destroyProgressBar (this=0x19582c48) at lo/core/framework/source/layoutmanager/layoutmanager.cxx:959
    12 0x10c13928 in framework::LayoutManager::implts_destroyStatusBar (this=0x19582c48) at lo/core/framework/source/layoutmanager/layoutmanager.cxx:837
    13 0x10c135cb in framework::LayoutManager::implts_destroyElements (this=0x19582c48) at lo/core/framework/source/layoutmanager/layoutmanager.cxx:446
    14 0x10c1a022 in framework::LayoutManager::setDockingAreaAcceptor (this=0x19582c48, xDockingAreaAcceptor=@0xb122e318) at lo/core/framework/source/layoutmanager/layoutmanager.cxx:1344
    15 0x10c1b199 in non-virtual thunk to framework::LayoutManager::setDockingAreaAcceptor(com::sun::star::uno::Reference<com::sun::star::ui::XDockingAreaAcceptor> const&) (this=0x19582c60, xDockingAreaAcceptor=@0xb122e318) at lo/core/framework/source/layoutmanager/layoutmanager.cxx:1363
    16 0x10cc26fb in framework::lcl_disableLayoutManager (xLayoutManager=@0x39013338, xFrame=@0xb122e3d8) at lo/core/framework/source/services/frame.cxx:505
    17 0x10cca452 in framework::Frame::dispose (this=0x3901320c) at lo/core/framework/source/services/frame.cxx:1851
    18 0x10cc925e in framework::Frame::close (this=0x3901320c, bDeliverOwnership=1) at lo/core/framework/source/services/frame.cxx:1644
    19 0x10cc933b in non-virtual thunk to framework::Frame::close(unsigned char) (this=0x39013238, bDeliverOwnership=1) at lo/core/framework/source/services/frame.cxx:1645
    20 0x0cfb07ad in (anonymous namespace)::callVirtualMethod (pAdjustedThisPtr=0x39013238, nVtableIndex=5, pRegisterReturn=0x0, pReturnTypeDescr=0xa03e240, bSimpleReturn=true, pStackLongs=0xb122e610, nStackLongs=2) at lo/core/bridges/source/cpp_uno/gcc3_macosx_intel/uno2cpp.cxx:75
    21 0x0cfb01aa in (anonymous namespace)::cpp_call (pThis=0x179e2b20, aVtableSlot={offset = 0, index = 5}, pReturnTypeRef=0xa03e240, nParams=1, pParams=0x179ec9e0, pUnoReturn=0x0, pUnoArgs=0xa3652a0, ppUnoExc=0xb122eaac) at lo/core/bridges/source/cpp_uno/gcc3_macosx_intel/uno2cpp.cxx:270
    22 0x0cfaf785 in bridges::cpp_uno::shared::unoInterfaceProxyDispatch (pUnoI=0x179e2b20, pMemberDescr=0x179ed690, pReturn=0x0, pArgs=0xa3652a0, ppException=0xb122eaac) at lo/core/bridges/source/cpp_uno/gcc3_macosx_intel/uno2cpp.cxx:461
    23 0x10817d68 in binaryurp::IncomingRequest::execute_throw (this=0x179edf90, returnValue=0xb122ed58, outArguments=0xb122ed48) at lo/core/binaryurp/source/incomingrequest.cxx:245
    24 0x10816293 in binaryurp::IncomingRequest::execute (this=0x179edf90) at lo/core/binaryurp/source/incomingrequest.cxx:74
    25 0x10829105 in request (pThreadSpecificData=0x179edf90) at lo/core/binaryurp/source/reader.cxx:85
    26 0x00bc39fe in cppu_threadpool::JobQueue::enter (this=0x179db470, nDisposeId=171320704, bReturnWhenNoJob=1) at lo/core/cppu/source/threadpool/jobqueue.cxx:115
    27 0x00bc67f1 in cppu_threadpool::ORequestThread::run (this=0xa362580) at lo/core/cppu/source/threadpool/thread.cxx:171
    28 0x00bc698c in non-virtual thunk to cppu_threadpool::ORequestThread::run() (this=0xa362588) at lo/core/cppu/source/threadpool/thread.cxx:201
    29 0x00bc81ad in threadFunc (param=0xa362588) at thread.hxx:187
    30 0x00016f4c in osl_thread_start_Impl (pData=0xa362030) at lo/core/sal/osl/unx/thread.c:251
    31 0x9560eed9 in _pthread_start ()
    32 0x956126de in thread_start ()
    
    in JunitTest_extensions_unoapi; but it is also called regularly when running a
    plain backing-windows soffice instance,
    
    0  VirtualDevice::~VirtualDevice (this=0xbfff7a60) at lo/core/vcl/source/gdi/virdev.cxx:187
    1  0x05541677 in VirtualDevice::~VirtualDevice (this=0xbfff7a60) at lo/core/vcl/source/gdi/virdev.cxx:182
    2  0x10ca4f3d in framework::BackingWindow::Paint (this=0xa9da800) at lo/core/framework/source/services/backingwindow.cxx:699
    3  0x05698dd8 in Window::ImplCallPaint (this=0xa9da800, pRegion=0x179d55c0, nPaintFlags=60) at lo/core/vcl/source/window/window.cxx:2462
    4  0x05698f4b in Window::ImplCallPaint (this=0xa08dad0, pRegion=0x179c7270, nPaintFlags=60) at lo/core/vcl/source/window/window.cxx:2486
    5  0x05698f4b in Window::ImplCallPaint (this=0xa08dd90, pRegion=0x0, nPaintFlags=60) at lo/core/vcl/source/window/window.cxx:2486
    6  0x0569a141 in Window::Update (this=0xa08dd90) at lo/core/vcl/source/window/window.cxx:7505
    7  0x056c9881 in ImplHandlePaint (pWindow=0xa08dd90, rBoundRect=@0xbfff8198, bImmediateUpdate=true) at lo/core/vcl/source/window/winproc.cxx:1575
    8  0x056c6e88 in ImplWindowFrameProc (pWindow=0xa08dd90, nEvent=8, pEvent=0xbfff82a0) at lo/core/vcl/source/window/winproc.cxx:2484
    9  0x056f33a6 in SalFrame::CallCallback (this=0xa08e050, nEvent=8, pEvent=0xbfff82a0) at salframe.hxx:243
    10 0x05727a93 in AquaSalFrame::SendPaintEvent (this=0xa08e050, pRect=0x0) at lo/core/vcl/aqua/source/window/salframe.cxx:423
    11 0x057678d3 in -[SalFrameWindow windowDidBecomeKey:] (self=0xa08e130, _cmd=0x9402b075, pNotification=0x179d5240) at lo/core/vcl/aqua/source/window/salframeview.mm:227
    12 0x9b556df1 in __-[NSNotificationCenter addObserver:selector:name:object:]_block_invoke_1 ()
    13 0x996ba903 in ___CFXNotificationPost_block_invoke_1 ()
    14 0x99685688 in _CFXNotificationPost ()
    15 0x9b541fde in -[NSNotificationCenter postNotificationName:object:userInfo:] ()
    16 0x9b557272 in -[NSNotificationCenter postNotificationName:object:] ()
    17 0x937deec5 in -[NSWindow becomeKeyWindow] ()
    18 0x9374af4d in _NXSendWindowNotification ()
    19 0x937de618 in _NXShowKeyAndMain ()
    20 0x9374477d in -[NSApplication sendEvent:] ()
    21 0x0575388d in -[VCL_NSApplication sendEvent:] (self=0xa02d120, _cmd=0x94126a08, pEvent=0x179c8430) at lo/core/vcl/aqua/source/app/vclnsapp.mm:208
    22 0x056f081e in AquaSalInstance::Yield (this=0xa315ff0, bWait=true, bHandleAllCurrentEvents=false) at lo/core/vcl/aqua/source/app/salinst.cxx:695
    23 0x050acee2 in ImplYield (i_bWait=true, i_bAllEvents=false) at lo/core/vcl/source/app/svapp.cxx:422
    24 0x050a81be in Application::Yield (i_bAllEvents=false) at lo/core/vcl/source/app/svapp.cxx:456
    25 0x050a817a in Application::Execute () at lo/core/vcl/source/app/svapp.cxx:401
    26 0x00124a3a in desktop::Desktop::Main (this=0xbfff95e0) at lo/core/desktop/source/app/app.cxx:1736
    27 0x050b8934 in ImplSVMain () at lo/core/vcl/source/app/svmain.cxx:162
    28 0x056eff73 in AquaSalInstance::handleAppDefinedEvent (pEvent=0xa324b20) at lo/core/vcl/aqua/source/app/salinst.cxx:538
    29 0x05752faf in -[VCL_NSApplication sendEvent:] (self=0xa02d120, _cmd=0x94126a08, pEvent=0xa324b20) at lo/core/vcl/aqua/source/app/vclnsapp.mm:60
    30 0x936d6b21 in -[NSApplication run] ()
    31 0x93967ac5 in NSApplicationMain ()
    32 0x056eec96 in ImplSVMainHook (pnInit=0xbfff9580) at lo/core/vcl/aqua/source/app/salinst.cxx:231
    33 0x050b9ea1 in SVMain () at lo/core/vcl/source/app/svmain.cxx:195
    34 0x0018e01d in soffice_main () at lo/core/desktop/source/app/sofficemain.cxx:82
    35 0x00001f5b in sal_main () at lo/core/desktop/source/app/main.c:48
    36 0x00001f40 in main (argc=5, argv=0xbfff966c) at lo/core/desktop/source/app/main.c:47
    
    Whatever the root problem behind 8ed93fef13be39815b452474e9e44bf8b6861ea3
    "We need to acquire the yield mutex here," please fix it properly instead.
    
    Change-Id: I281da60de1471f702ca34fd2b3239b6da83e2cf9

diff --git a/vcl/source/gdi/virdev.cxx b/vcl/source/gdi/virdev.cxx
index 2e8415d..3559550 100644
--- a/vcl/source/gdi/virdev.cxx
+++ b/vcl/source/gdi/virdev.cxx
@@ -184,15 +184,6 @@ VirtualDevice::~VirtualDevice()
 
     ImplSVData* pSVData = ImplGetSVData();
 
-#if defined(DBG_UTIL) && defined(MACOSX)
-    // OutputDevice::ImplReleaseGraphics() requires the yield mutex to be
-    // held, hmm. For some reason this is a problem only in a dbgutil build on
-    // OS X, when this stuff gets called when soffice is about to exit, from
-    // editeng/source/editeng/eerdll.cxx. If this code is used on Linux, we
-    // again get a hang in some/all of the subsequentchecks.
-    pSVData->mpDefInst->AcquireYieldMutex( 1 );
-#endif
-
     ImplReleaseGraphics();
 
     if ( mpVirDev )


More information about the Libreoffice-commits mailing list