From 10314b5d8b653864c92d392cbb774438633b2fe1 Mon Sep 17 00:00:00 2001 From: Stephan Bergmann Date: Thu, 8 May 2014 11:08:51 +0200 Subject: CLucene: Helgrind reported "pthread_mutex_destroy of a locked mutex" > pthread_mutex_destroy (/usr/src/debug/valgrind-3.9.0/helgrind/hg_intercepts.c:478) > lucene::util::mutex_thread::~mutex_thread() (workdir/UnpackedTarball/clucene/src/shared/CLucene/config/threads.cpp:179) > lucene::store::FSDirectory::FSIndexInput::close() (workdir/UnpackedTarball/clucene/src/core/CLucene/store/FSDirectory.cpp:225) > lucene::index::SegmentInfos::read(lucene::store::Directory*, char const*) (workdir/UnpackedTarball/clucene/src/core/CLucene/index/SegmentInfos.cpp:770) > lucene::index::IndexFileDeleter::IndexFileDeleter(lucene::store::Directory*, lucene::index::IndexDeletionPolicy*, lucene::index::SegmentInfos*, std::ostream*, lucene::index::DocumentsWriter*) (workdir/UnpackedTarball/clucene/src/core/CLucene/index/IndexFileDeleter.cpp:149) > lucene::index::IndexWriter::init(lucene::store::Directory*, lucene::analysis::Analyzer*, bool, bool, lucene::index::IndexDeletionPolicy*, bool) (workdir/UnpackedTarball/clucene/src/core/CLucene/index/IndexWriter.cpp:262) > lucene::index::IndexWriter::IndexWriter(char const*, lucene::analysis::Analyzer*, bool) (workdir/UnpackedTarball/clucene/src/core/CLucene/index/IndexWriter.cpp:158) > HelpIndexer::indexDocuments() (helpcompiler/source/HelpIndexer.cxx:55) Change-Id: I19cb9bd49b339d206a624c1f1d3dacdd909f4e25 --- external/clucene/UnpackedTarball_clucene.mk | 1 + external/clucene/patches/clucene-mutex.patch | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 external/clucene/patches/clucene-mutex.patch (limited to 'external/clucene') diff --git a/external/clucene/UnpackedTarball_clucene.mk b/external/clucene/UnpackedTarball_clucene.mk index 5148fb72fd37..4407f73d3cb4 100644 --- a/external/clucene/UnpackedTarball_clucene.mk +++ b/external/clucene/UnpackedTarball_clucene.mk @@ -31,6 +31,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,clucene,\ external/clucene/patches/clucene-aix.patch \ external/clucene/patches/clucene-git1-win64.patch \ external/clucene/patches/clucene-ub.patch \ + external/clucene/patches/clucene-mutex.patch \ )) ifneq ($(OS),WNT) diff --git a/external/clucene/patches/clucene-mutex.patch b/external/clucene/patches/clucene-mutex.patch new file mode 100644 index 000000000000..2a6b7d2d3642 --- /dev/null +++ b/external/clucene/patches/clucene-mutex.patch @@ -0,0 +1,13 @@ +--- src/core/CLucene/store/FSDirectory.cpp ++++ src/core/CLucene/store/FSDirectory.cpp +@@ -219,9 +219,8 @@ + _CLDECDELETE(handle); + + //printf("handle=%d\n", handle->__cl_refcount); +- if ( dounlock ){ + mutex->unlock(); +- }else{ ++ if ( !dounlock ){ + delete mutex; + } + } -- cgit