summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2021-06-05 15:57:48 +0100
committerCaolán McNamara <caolanm@redhat.com>2021-06-05 18:54:17 +0200
commit2614ca783d3fa181a8a3a00c38103abc54cac56c (patch)
tree936b886945974c7d4f14afe062802e3023fa2475
parentcb90eda86544fdda9bd49f394b7a286fa355ce90 (diff)
psp::PPDParser::getParser deadlock on launch
#3 0x00007fef4e844945 in std::mutex::lock() (this=0x7fef4f817640 <psp::PPDParser::getParser(rtl::OUString const&)::aMutex>) #4 0x00007fef4eb2da43 in std::lock_guard<std::mutex>::lock_guard(std::mutex&) (this=0x7ffc2f47a2a0, __m=...) #5 0x00007fef4eb1dd12 in psp::PPDParser::getParser(rtl::OUString const&) (rFile="SGENPRT") at vcl/unx/generic/printer/ppdparser.cxx:535 ^^^second reentry^^^ #6 0x00007fef4eb76f3b in psp::CUPSManager::createCUPSParser(rtl::OUString const&) (this=0x329c0e0, rPrinter="CUPS:MP230-series") at vcl/unx/generic/printer/cupsmgr.cxx:533 #7 0x00007fef4eb1e4fa in psp::PPDParser::getParser(rtl::OUString const&) (rFile="CUPS:MP230-series") at vcl/unx/generic/printer/ppdparser.cxx:565 ^^^first entry^^^ #8 0x00007fef4eb7815d in psp::CUPSManager::setupJobContextData(psp::JobData&) (this=0x329c0e0, rData=...) at vcl/unx/generic/printer/cupsmgr.cxx:566 since... commit 80255dcde14755bb4a342b7392fb26d27580ff6d Date: Sun May 30 19:29:07 2021 +0200 vcl unix : use std::thread in PPDParser::getParser Change-Id: I3c66e23568e388425de9ee07f2d7606f4df0cfd3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116750 Tested-by: Caolán McNamara <caolanm@redhat.com> Reviewed-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--vcl/unx/generic/printer/ppdparser.cxx2
1 files changed, 1 insertions, 1 deletions
diff --git a/vcl/unx/generic/printer/ppdparser.cxx b/vcl/unx/generic/printer/ppdparser.cxx
index ea03299ed7fb..8de73fa860b1 100644
--- a/vcl/unx/generic/printer/ppdparser.cxx
+++ b/vcl/unx/generic/printer/ppdparser.cxx
@@ -531,7 +531,7 @@ OUString PPDParser::getPPDFile( const OUString& rFile )
const PPDParser* PPDParser::getParser( const OUString& rFile )
{
- static std::mutex aMutex;
+ static std::recursive_mutex aMutex;
std::lock_guard aGuard( aMutex );
OUString aFile = rFile;