• Mike Kaganski's avatar
    tdf#38915: set cProcessed condition on any process outcome · 30f07eb1
    Mike Kaganski yazdı
    When application is initializing, initially request handler is not
    processing requests (its state is Starting). Requests processing is
    enabled in Desktop::OpenClients() after recovery had been processed.
    
    If another soffice process is started, it communicates over already
    established pipe, and sends a request to the first process. In
    IpcThread::process(), it is decided if the request needs to be checked
    for completion (e.g., if a file or specific module was requested to be
    open). After that, the prepared request is posted for processing. In
    case when the completion should be checked, PipeIpcThread::execute()
    then waits for Processed condition indefinitely.
    
    Request is processed in RequestHandler::ExecuteCmdLineRequests, which
    first checks that handler's state is RequestsEnabled, and if it isn't,
    then returns. Otherwise, after processing, Processed condition is set.
    
    The problem is, thus, in case when the request comes before requests
    processing is enabled (e.g., when recovery dialog is open): request
    handler thread waits indefinitely, but the processed condition will
    not be set. This will not allow to close the pipe to second process,
    and it will hang indefinitely. The IPC thread will be hung even after
    user closes recovery dialog, and continues working with program. So,
    subsequent attempts to open files from file manager (launching new
    process) will fail, and new zombie soffice processes will wait the
    first indefinitely. Also, when first process will be closed by user,
    the deinit sequence will attempt to wait for the IPC thread to finish
    (in RequestHandler::Disable(), after all visible windows had been
    closed), which will leave the first process hung, preventing all
    subsequent attempts to open LibreOffice.
    
    This patch ensures that the Processed condition is set at any outcome
    in RequestHandler::ExecuteCmdLineRequests. Also, it brings (possibly
    hidden) recovery dialog to front, making the reason why following
    attempts to open files fail apparent to user.
    
    Change-Id: Ibddf7483e5b1d6167ac7f307ea2442119f446129
    Reviewed-on: https://gerrit.libreoffice.org/48280Tested-by: 's avatarJenkins <ci@libreoffice.org>
    Reviewed-by: 's avatarAron Budea <aron.budea@collabora.com>
    Reviewed-by: 's avatarMike Kaganski <mike.kaganski@collabora.com>
    (cherry picked from commit cf333a87)
    Reviewed-on: https://gerrit.libreoffice.org/48289Reviewed-by: 's avatarMichael Stahl <mstahl@redhat.com>
    30f07eb1
Adı
Son kayıt (commit)
Son güncelleme
..
AccessibleFrameSelector.hxx Loading commit data...
DefaultShapesPanel.hxx Loading commit data...
GraphCtlAccessibleContext.hxx Loading commit data...
ShapesUtil.hxx Loading commit data...
cell.hxx Loading commit data...
celltypes.hxx Loading commit data...
charmapacc.hxx Loading commit data...
clonelist.hxx Loading commit data...
coreservices.hxx Loading commit data...
datalistener.hxx Loading commit data...
datanavi.hxx Loading commit data...
delayedevent.hxx Loading commit data...
docrecovery.hxx Loading commit data...
eventhandler.hxx Loading commit data...
filtnav.hxx Loading commit data...
fmPropBrw.hxx Loading commit data...
fmcontrolbordermanager.hxx Loading commit data...
fmcontrollayout.hxx Loading commit data...
fmdocumentclassification.hxx Loading commit data...
fmexch.hxx Loading commit data...
fmexpl.hxx Loading commit data...
fmitems.hxx Loading commit data...
fmobj.hxx Loading commit data...
fmpgeimp.hxx Loading commit data...
fmprop.hxx Loading commit data...
fmscriptingenv.hxx Loading commit data...
fmservs.hxx Loading commit data...
fmshimp.hxx Loading commit data...
fmslotinvalidator.hxx Loading commit data...
fmtextcontroldialogs.hxx Loading commit data...
fmtextcontrolfeature.hxx Loading commit data...
fmtextcontrolshell.hxx Loading commit data...
fmundo.hxx Loading commit data...
fmurl.hxx Loading commit data...
fmvwimp.hxx Loading commit data...
formcontrolfactory.hxx Loading commit data...
formcontroller.hxx Loading commit data...
formcontrolling.hxx Loading commit data...
formdispatchinterceptor.hxx Loading commit data...
formfeaturedispatcher.hxx Loading commit data...
formtoolbars.hxx Loading commit data...
frmselimpl.hxx Loading commit data...
gridcell.hxx Loading commit data...
gridcols.hxx Loading commit data...
sdbdatacolumn.hxx Loading commit data...
sqlparserclient.hxx Loading commit data...
svdobjplusdata.hxx Loading commit data...
svdobjuserdatalist.hxx Loading commit data...
svdoutlinercache.hxx Loading commit data...
svxpixelctlaccessiblecontext.hxx Loading commit data...
svxrectctaccessiblecontext.hxx Loading commit data...
tablemodel.hxx Loading commit data...
tabwin.hxx Loading commit data...
tbxform.hxx Loading commit data...
treevisitor.hxx Loading commit data...
xfm_addcondition.hxx Loading commit data...
xmlxtexp.hxx Loading commit data...
xmlxtimp.hxx Loading commit data...