summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--office/LibreOffice/LibreOffice.SlackBuild5
-rw-r--r--office/LibreOffice/LibreOffice.info10
-rw-r--r--office/LibreOffice/firebird.diff1091
3 files changed, 7 insertions, 1099 deletions
diff --git a/office/LibreOffice/LibreOffice.SlackBuild b/office/LibreOffice/LibreOffice.SlackBuild
index 5683f4355c..0dff27339b 100644
--- a/office/LibreOffice/LibreOffice.SlackBuild
+++ b/office/LibreOffice/LibreOffice.SlackBuild
@@ -26,9 +26,9 @@
PRGNAM=LibreOffice
SRCNAM=libreoffice
-VERSION=${VERSION:-5.3.0.3}
+VERSION=${VERSION:-5.3.1.2}
SHORT_VERSION=${VERSION%.*.*}
-BUILD=${BUILD:-3}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PACKAGER=${PACKAGER:-"AnonymousCoward"}
@@ -70,7 +70,6 @@ rm -rf $SRCNAM-$VERSION
tar xvf $CWD/$SRCNAM-$VERSION.tar.xz
cd $SRCNAM-$VERSION
patch -p0 < $CWD/no-check-if-root.diff
-patch -p1 < $CWD/firebird.diff
if [ "$HAVE_SRCS_TARBALL" = "1" ]; then
tar xvf $CWD/$SRCNAM-${VERSION}-srcs.tar.xz
diff --git a/office/LibreOffice/LibreOffice.info b/office/LibreOffice/LibreOffice.info
index 152e815ecd..44deca3574 100644
--- a/office/LibreOffice/LibreOffice.info
+++ b/office/LibreOffice/LibreOffice.info
@@ -1,10 +1,10 @@
PRGNAM="LibreOffice"
-VERSION="5.3.0.3"
+VERSION="5.3.1.2"
HOMEPAGE="http://libreoffice.org"
-DOWNLOAD="http://download.documentfoundation.org/libreoffice/src/5.3.0/libreoffice-5.3.0.3.tar.xz \
- http://sourceforge.net/projects/slackbuildsdirectlinks/files/LibreOffice/libreoffice-5.3.0.3-srcs.tar.xz"
-MD5SUM="204c492a0b5e58dd0be9788c74a364ab \
- 20d3cee8f200ce35b6f1c966ef5abb3e"
+DOWNLOAD="http://download.documentfoundation.org/libreoffice/src/5.3.1/libreoffice-5.3.1.2.tar.xz \
+ http://sourceforge.net/projects/slackbuildsdirectlinks/files/LibreOffice/libreoffice-5.3.1.2-srcs.tar.xz"
+MD5SUM="4ba66c0812165af9af8e03f3f60280a5 \
+ 2ca9b33502785c152217e0ff4092292e"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="python3 openjdk apache-ant perl-Archive-Zip"
diff --git a/office/LibreOffice/firebird.diff b/office/LibreOffice/firebird.diff
deleted file mode 100644
index 49bc2750c4..0000000000
--- a/office/LibreOffice/firebird.diff
+++ /dev/null
@@ -1,1091 +0,0 @@
-diff --git a/external/firebird/0001-Avoid-hangup-in-SS-when-error-happens-at-system-atta.patch.1 b/external/firebird/0001-Avoid-hangup-in-SS-when-error-happens-at-system-atta.patch.1
-new file mode 100644
-index 0000000..e569fcc
---- /dev/null
-+++ b/external/firebird/0001-Avoid-hangup-in-SS-when-error-happens-at-system-atta.patch.1
-@@ -0,0 +1,51 @@
-+From 36a7a2634669075be3294a1d075524a0b6f80962 Mon Sep 17 00:00:00 2001
-+From: hvlad <hvlad@users.sourceforge.net>
-+Date: Wed, 17 Aug 2016 15:45:30 +0300
-+Subject: [PATCH] Avoid hangup in SS when error happens at system attachment
-+ initialization time
-+
-+---
-+ src/jrd/cch.cpp | 7 ++++++-
-+ src/jrd/vio.cpp | 5 +++++
-+ 2 files changed, 11 insertions(+), 1 deletion(-)
-+
-+diff --git a/src/jrd/cch.cpp b/src/jrd/cch.cpp
-+index 35ea096..643cf4d 100644
-+--- a/src/jrd/cch.cpp
-++++ b/src/jrd/cch.cpp
-+@@ -2963,10 +2963,15 @@ static THREAD_ENTRY_DECLARE cache_writer(THREAD_ENTRY_PARAM arg)
-+ iscDbLogStatus(dbb->dbb_filename.c_str(), &status_vector);
-+ }
-+
-+- bcb->bcb_flags &= ~(BCB_cache_writer | BCB_writer_start);
-++ bcb->bcb_flags &= ~BCB_cache_writer;
-+
-+ try
-+ {
-++ if (bcb->bcb_flags & BCB_writer_start)
-++ {
-++ bcb->bcb_flags &= ~BCB_writer_start;
-++ bcb->bcb_writer_init.release();
-++ }
-+ bcb->bcb_writer_fini.release();
-+ }
-+ catch (const Firebird::Exception& ex)
-+diff --git a/src/jrd/vio.cpp b/src/jrd/vio.cpp
-+index a8cf0fc..3d35a27 100644
-+--- a/src/jrd/vio.cpp
-++++ b/src/jrd/vio.cpp
-+@@ -4988,6 +4988,11 @@ static THREAD_ENTRY_DECLARE garbage_collector(THREAD_ENTRY_PARAM arg)
-+ try
-+ {
-+ // Notify the finalization caller that we're finishing.
-++ if (dbb->dbb_flags & DBB_gc_starting)
-++ {
-++ dbb->dbb_flags &= ~DBB_gc_starting;
-++ dbb->dbb_gc_init.release();
-++ }
-+ dbb->dbb_gc_fini.release();
-+ }
-+ catch (const Firebird::Exception& ex)
-+--
-+2.9.3
-+
-diff --git a/external/firebird/0002-Backported-fix-for-CORE-5452-Segfault-when-engine-s-.patch.1 b/external/firebird/0002-Backported-fix-for-CORE-5452-Segfault-when-engine-s-.patch.1
-new file mode 100644
-index 0000000..c55df4d
---- /dev/null
-+++ b/external/firebird/0002-Backported-fix-for-CORE-5452-Segfault-when-engine-s-.patch.1
-@@ -0,0 +1,1013 @@
-+From 40f782ae3e918c4f3842571ff8064be1c4f54961 Mon Sep 17 00:00:00 2001
-+From: AlexPeshkoff <peshkoff@mail.ru>
-+Date: Fri, 13 Jan 2017 14:29:54 +0300
-+Subject: [PATCH] Backported fix for CORE-5452: Segfault when engine's dynamic
-+ library is unloaded right after closing worker threads (GC and/or cache
-+ writer)
-+
-+---
-+ src/alice/alice_meta.epp | 1 -
-+ src/burp/burp.h | 2 -
-+ src/common/ThreadStart.h | 86 ++++++++++++++++++++++++++++
-+ src/common/classes/Synchronize.h | 5 +-
-+ src/common/classes/misc/class_perf.cpp | 1 -
-+ src/common/xdr.cpp | 2 -
-+ src/gpre/boot/gpre_meta_boot.cpp | 1 -
-+ src/gpre/std/gpre_meta.epp | 1 -
-+ src/include/fb_exception.h | 1 -
-+ src/include/firebird.h | 1 -
-+ src/isql/OptionsBase.cpp | 1 -
-+ src/isql/extract.epp | 1 -
-+ src/isql/isql.epp | 5 --
-+ src/jrd/Attachment.h | 1 +
-+ src/jrd/Database.h | 6 +-
-+ src/jrd/Mapping.cpp | 26 +++++----
-+ src/jrd/cch.cpp | 31 +++++-----
-+ src/jrd/cch.h | 14 ++++-
-+ src/jrd/event.cpp | 13 +++--
-+ src/jrd/event_proto.h | 7 +--
-+ src/jrd/intl.cpp | 1 -
-+ src/jrd/trace/TraceConfigStorage.h | 1 +
-+ src/jrd/vio.cpp | 23 ++++----
-+ src/lock/lock.cpp | 29 ++++++----
-+ src/lock/lock_proto.h | 8 +--
-+ src/qli/command.cpp | 1 -
-+ src/qli/dtr.h | 1 -
-+ src/qli/lex.cpp | 4 --
-+ src/qli/meta.epp | 1 -
-+ src/utilities/gsec/gsecswi.h | 1 -
-+ src/utilities/gstat/dba.epp | 1 +
-+ src/utilities/nbackup/nbkswi.h | 1 -
-+ src/utilities/ntrace/os/win32/FileObject.cpp | 1 -
-+ src/yvalve/gds.cpp | 1 +
-+ src/yvalve/preparse.cpp | 1 -
-+ 35 files changed, 182 insertions(+), 99 deletions(-)
-+
-+diff --git a/src/alice/alice_meta.epp b/src/alice/alice_meta.epp
-+index d0f59bc..65dc37e 100644
-+--- a/src/alice/alice_meta.epp
-++++ b/src/alice/alice_meta.epp
-+@@ -30,7 +30,6 @@
-+ #include "firebird.h"
-+ #include <stdio.h>
-+ #include "../jrd/ibase.h"
-+-//#include "../jrd/license.h"
-+ #include "../alice/alice.h"
-+ #include "../alice/alice_meta.h"
-+ #include "../yvalve/gds_proto.h"
-+diff --git a/src/burp/burp.h b/src/burp/burp.h
-+index 293a91f..fe26335 100644
-+--- a/src/burp/burp.h
-++++ b/src/burp/burp.h
-+@@ -769,8 +769,6 @@ struct burp_meta_obj
-+ // I need to review if we tolerate different lengths for different OS's here.
-+ const unsigned int MAX_FILE_NAME_SIZE = 256;
-+
-+-//#include "../jrd/svc.h"
-+-
-+ #include "../burp/std_desc.h"
-+
-+ #ifdef WIN_NT
-+diff --git a/src/common/ThreadStart.h b/src/common/ThreadStart.h
-+index 85e6a38..823c5c1 100644
-+--- a/src/common/ThreadStart.h
-++++ b/src/common/ThreadStart.h
-+@@ -31,6 +31,7 @@
-+ #define JRD_THREADSTART_H
-+
-+ #include "../common/ThreadData.h"
-++#include "../common/classes/semaphore.h"
-+
-+ #ifdef WIN_NT
-+ #include <windows.h>
-+@@ -89,4 +90,89 @@ inline ThreadId getThreadId()
-+ return Thread::getId();
-+ }
-+
-++
-++#ifndef USE_POSIX_THREADS
-++#define USE_FINI_SEM
-++#endif
-++
-++template <typename TA>
-++class ThreadFinishSync
-++{
-++public:
-++ typedef void ThreadRoutine(TA);
-++
-++ ThreadFinishSync(Firebird::MemoryPool& pool, ThreadRoutine* routine, int priority_arg)
-++ :
-++#ifdef USE_FINI_SEM
-++ fini(pool),
-++#else
-++ threadHandle(0),
-++#endif
-++ threadRoutine(routine),
-++ threadPriority(priority_arg)
-++ { }
-++
-++ void run(TA arg)
-++ {
-++ threadArg = arg;
-++
-++ Thread::start(internalRun, this, threadPriority
-++#ifndef USE_FINI_SEM
-++ , &threadHandle
-++#endif
-++ );
-++ }
-++
-++ void waitForCompletion()
-++ {
-++#ifdef USE_FINI_SEM
-++ fini.enter();
-++#else
-++ Thread::waitForCompletion(threadHandle);
-++ threadHandle = 0;
-++#endif
-++ }
-++
-++private:
-++#ifdef USE_FINI_SEM
-++ Firebird::Semaphore fini;
-++#else
-++ Thread::Handle threadHandle;
-++#endif
-++
-++ TA threadArg;
-++ ThreadRoutine* threadRoutine;
-++ int threadPriority;
-++ bool starting;
-++
-++ static THREAD_ENTRY_DECLARE internalRun(THREAD_ENTRY_PARAM arg)
-++ {
-++ ((ThreadFinishSync*)arg)->internalRun();
-++ return 0;
-++ }
-++
-++ void internalRun()
-++ {
-++ try
-++ {
-++ threadRoutine(threadArg);
-++ }
-++ catch (const Firebird::Exception& ex)
-++ {
-++ threadArg->exceptionHandler(ex, threadRoutine);
-++ }
-++
-++#ifdef USE_FINI_SEM
-++ try
-++ {
-++ fini.release();
-++ }
-++ catch (const Firebird::Exception& ex)
-++ {
-++ threadArg->exceptionHandler(ex, threadRoutine);
-++ }
-++#endif
-++ }
-++};
-++
-+ #endif // JRD_THREADSTART_H
-+diff --git a/src/common/classes/Synchronize.h b/src/common/classes/Synchronize.h
-+index 198de44..3788541 100644
-+--- a/src/common/classes/Synchronize.h
-++++ b/src/common/classes/Synchronize.h
-+@@ -33,10 +33,7 @@
-+ #define CLASSES_SYNCHRONIZE_H
-+
-+ #include "../common/classes/SyncObject.h"
-+-
-+-#ifndef WIN_NT
-+-#include "fb_pthread.h"
-+-#endif
-++#include "../common/ThreadStart.h"
-+
-+
-+ namespace Firebird {
-+diff --git a/src/common/classes/misc/class_perf.cpp b/src/common/classes/misc/class_perf.cpp
-+index 97b7bb3..142bfde 100644
-+--- a/src/common/classes/misc/class_perf.cpp
-++++ b/src/common/classes/misc/class_perf.cpp
-+@@ -28,7 +28,6 @@
-+
-+ #include "tree.h"
-+ #include "alloc.h"
-+-//#include "../memory/memory_pool.h"
-+ #include <stdio.h>
-+ #include <time.h>
-+ #include <set>
-+diff --git a/src/common/xdr.cpp b/src/common/xdr.cpp
-+index b9f9f4d..1dfff76 100644
-+--- a/src/common/xdr.cpp
-++++ b/src/common/xdr.cpp
-+@@ -26,9 +26,7 @@
-+
-+ #include "firebird.h"
-+ #include <string.h>
-+-//#include "../remote/remote.h"
-+ #include "../common/xdr.h"
-+-//#include "../remote/proto_proto.h"
-+ #include "../common/xdr_proto.h"
-+ #include "../yvalve/gds_proto.h"
-+ #include "../common/gdsassert.h"
-+diff --git a/src/gpre/boot/gpre_meta_boot.cpp b/src/gpre/boot/gpre_meta_boot.cpp
-+index 0fde018..1f302c6 100644
-+--- a/src/gpre/boot/gpre_meta_boot.cpp
-++++ b/src/gpre/boot/gpre_meta_boot.cpp
-+@@ -32,7 +32,6 @@
-+ #include <string.h>
-+ #include "../jrd/ibase.h"
-+ #include "../gpre/gpre.h"
-+-//#include "../jrd/license.h"
-+ #include "../jrd/intl.h"
-+ #include "../gpre/gpre_proto.h"
-+ #include "../gpre/hsh_proto.h"
-+diff --git a/src/gpre/std/gpre_meta.epp b/src/gpre/std/gpre_meta.epp
-+index 34ff932..0780dd4 100644
-+--- a/src/gpre/std/gpre_meta.epp
-++++ b/src/gpre/std/gpre_meta.epp
-+@@ -32,7 +32,6 @@
-+ #include <string.h>
-+ #include "../jrd/ibase.h"
-+ #include "../gpre/gpre.h"
-+-//#include "../jrd/license.h"
-+ #include "../jrd/intl.h"
-+ #include "../gpre/gpre_proto.h"
-+ #include "../gpre/hsh_proto.h"
-+diff --git a/src/include/fb_exception.h b/src/include/fb_exception.h
-+index 030cf94..c4c1df4 100644
-+--- a/src/include/fb_exception.h
-++++ b/src/include/fb_exception.h
-+@@ -43,7 +43,6 @@
-+
-+ #include "fb_types.h"
-+ #include "firebird/Interface.h"
-+-#include "../common/ThreadStart.h"
-+
-+ namespace Firebird
-+ {
-+diff --git a/src/include/firebird.h b/src/include/firebird.h
-+index 3d74354..87f0a11 100644
-+--- a/src/include/firebird.h
-++++ b/src/include/firebird.h
-+@@ -68,7 +68,6 @@
-+
-+ #ifdef __cplusplus
-+ #include "../common/common.h"
-+-//#include "fb_exception.h"
-+ #endif
-+
-+ #ifndef NULL
-+diff --git a/src/isql/OptionsBase.cpp b/src/isql/OptionsBase.cpp
-+index 5a78540..0974fa3 100644
-+--- a/src/isql/OptionsBase.cpp
-++++ b/src/isql/OptionsBase.cpp
-+@@ -24,7 +24,6 @@
-+
-+ #include "firebird.h"
-+ #include "OptionsBase.h"
-+-//#include "../common/utils_proto.h" // strnicmp
-+ #include "../common/gdsassert.h"
-+
-+
-+diff --git a/src/isql/extract.epp b/src/isql/extract.epp
-+index ec2ddb1..99e821c 100644
-+--- a/src/isql/extract.epp
-++++ b/src/isql/extract.epp
-+@@ -59,7 +59,6 @@
-+ #include "../jrd/ods.h"
-+ #include "../common/utils_proto.h"
-+ #include "../jrd/constants.h"
-+-//#include "../common/classes/ImplementHelper.h"
-+
-+ using MsgFormat::SafeArg;
-+
-+diff --git a/src/isql/isql.epp b/src/isql/isql.epp
-+index ccadce2..98b37bb 100644
-+--- a/src/isql/isql.epp
-++++ b/src/isql/isql.epp
-+@@ -46,7 +46,6 @@
-+ #include "firebird.h"
-+ #include <stdio.h>
-+ #include "../yvalve/keywords.h"
-+-//#include "../yvalve/gds_proto.h"
-+ #include "../jrd/intl.h"
-+ #include <stdlib.h>
-+ #include <stdarg.h>
-+@@ -79,10 +78,6 @@
-+ #include <locale.h>
-+ #endif
-+
-+-//#ifdef HAVE_IO_H
-+-//#include <io.h> // mktemp
-+-//#endif
-+-
-+ #ifdef HAVE_EDITLINE_H
-+ // This is a local file included in our distribution - but not always
-+ // compiled into the system
-+diff --git a/src/jrd/Attachment.h b/src/jrd/Attachment.h
-+index 2807db3..e71610e 100644
-+--- a/src/jrd/Attachment.h
-++++ b/src/jrd/Attachment.h
-+@@ -39,6 +39,7 @@
-+ #include "../common/classes/array.h"
-+ #include "../common/classes/stack.h"
-+ #include "../common/classes/timestamp.h"
-++#include "../common/ThreadStart.h"
-+
-+ #include "../jrd/EngineInterface.h"
-+
-+diff --git a/src/jrd/Database.h b/src/jrd/Database.h
-+index 0eab40d..f0f44d3 100644
-+--- a/src/jrd/Database.h
-++++ b/src/jrd/Database.h
-+@@ -440,7 +440,7 @@ public:
-+ GarbageCollector* dbb_garbage_collector; // GarbageCollector class
-+ Firebird::Semaphore dbb_gc_sem; // Event to wake up garbage collector
-+ Firebird::Semaphore dbb_gc_init; // Event for initialization garbage collector
-+- Firebird::Semaphore dbb_gc_fini; // Event for finalization garbage collector
-++ ThreadFinishSync<Database*> dbb_gc_fini; // Sync for finalization garbage collector
-+
-+ Firebird::MemoryStats dbb_memory_stats;
-+ RuntimeStatistics dbb_stats;
-+@@ -511,6 +511,7 @@ private:
-+ dbb_owner(*p),
-+ dbb_pools(*p, 4),
-+ dbb_sort_buffers(*p),
-++ dbb_gc_fini(*p, garbage_collector, THREAD_medium),
-+ dbb_stats(*p),
-+ dbb_lock_owner_id(getLockOwnerId()),
-+ dbb_tip_cache(NULL),
-+@@ -560,6 +561,9 @@ public:
-+ // reset sweep flags and release sweep lock
-+ void clearSweepFlags(thread_db* tdbb);
-+
-++ static void garbage_collector(Database* dbb);
-++ void exceptionHandler(const Firebird::Exception& ex, ThreadFinishSync<Database*>::ThreadRoutine* routine);
-++
-+ private:
-+ //static int blockingAstSharedCounter(void*);
-+ static int blocking_ast_sweep(void* ast_object);
-+diff --git a/src/jrd/Mapping.cpp b/src/jrd/Mapping.cpp
-+index c1bcf0e..8df7e2f 100644
-+--- a/src/jrd/Mapping.cpp
-++++ b/src/jrd/Mapping.cpp
-+@@ -581,7 +581,8 @@ class MappingIpc FB_FINAL : public Firebird::IpcObject
-+
-+ public:
-+ explicit MappingIpc(MemoryPool&)
-+- : processId(getpid())
-++ : processId(getpid()),
-++ cleanupSync(*getDefaultMemoryPool(), clearDelivery, THREAD_high)
-+ { }
-+
-+ ~MappingIpc()
-+@@ -602,7 +603,7 @@ public:
-+ sMem->process[process].flags &= ~MappingHeader::FLAG_ACTIVE;
-+ (void) // Ignore errors in cleanup
-+ sharedMemory->eventPost(&sMem->process[process].notifyEvent);
-+- cleanupSemaphore.tryEnter(5);
-++ cleanupSync.waitForCompletion();
-+
-+ // Ignore errors in cleanup
-+ sharedMemory->eventFini(&sMem->process[process].notifyEvent);
-+@@ -755,7 +756,7 @@ public:
-+
-+ try
-+ {
-+- Thread::start(clearDelivery, this, THREAD_high);
-++ cleanupSync.run(this);
-+ }
-+ catch (const Exception&)
-+ {
-+@@ -764,6 +765,12 @@ public:
-+ }
-+ }
-+
-++ void exceptionHandler(const Exception& ex, ThreadFinishSync<MappingIpc*>::ThreadRoutine*)
-++ {
-++ iscLogException("Fatal error in clearDeliveryThread", ex);
-++ fb_utils::logAndDie("Fatal error in clearDeliveryThread");
-++ }
-++
-+ private:
-+ void clearDeliveryThread()
-+ {
-+@@ -801,13 +808,10 @@ private:
-+ }
-+ if (startup)
-+ startupSemaphore.release();
-+-
-+- cleanupSemaphore.release();
-+ }
-+ catch (const Exception& ex)
-+ {
-+- iscLogException("Fatal error in clearDeliveryThread", ex);
-+- fb_utils::logAndDie("Fatal error in clearDeliveryThread");
-++ exceptionHandler(ex, NULL);
-+ }
-+ }
-+
-+@@ -862,11 +866,9 @@ private:
-+ MappingIpc* const data;
-+ };
-+
-+- static THREAD_ENTRY_DECLARE clearDelivery(THREAD_ENTRY_PARAM par)
-++ static void clearDelivery(MappingIpc* mapping)
-+ {
-+- MappingIpc* m = (MappingIpc*)par;
-+- m->clearDeliveryThread();
-+- return 0;
-++ mapping->clearDeliveryThread();
-+ }
-+
-+ AutoPtr<SharedMemory<MappingHeader> > sharedMemory;
-+@@ -874,7 +876,7 @@ private:
-+ const SLONG processId;
-+ unsigned process;
-+ Semaphore startupSemaphore;
-+- Semaphore cleanupSemaphore;
-++ ThreadFinishSync<MappingIpc*> cleanupSync;
-+ };
-+
-+ GlobalPtr<MappingIpc, InstanceControl::PRIORITY_DELETE_FIRST> mappingIpc;
-+diff --git a/src/jrd/cch.cpp b/src/jrd/cch.cpp
-+index e1d403b..1bf714f 100644
-+--- a/src/jrd/cch.cpp
-++++ b/src/jrd/cch.cpp
-+@@ -120,14 +120,11 @@ static BufferDesc* alloc_bdb(thread_db*, BufferControl*, UCHAR **);
-+ static Lock* alloc_page_lock(Jrd::thread_db*, BufferDesc*);
-+ static int blocking_ast_bdb(void*);
-+ #ifdef CACHE_READER
-+-static THREAD_ENTRY_DECLARE cache_reader(THREAD_ENTRY_PARAM);
-+-
-+ static void prefetch_epilogue(Prefetch*, FbStatusVector *);
-+ static void prefetch_init(Prefetch*, thread_db*);
-+ static void prefetch_io(Prefetch*, FbStatusVector *);
-+ static void prefetch_prologue(Prefetch*, SLONG *);
-+ #endif
-+-static THREAD_ENTRY_DECLARE cache_writer(THREAD_ENTRY_PARAM);
-+ static void check_precedence(thread_db*, WIN*, PageNumber);
-+ static void clear_precedence(thread_db*, BufferDesc*);
-+ static BufferDesc* dealloc_bdb(BufferDesc*);
-+@@ -1438,7 +1435,7 @@ void CCH_init2(thread_db* tdbb)
-+
-+ try
-+ {
-+- Thread::start(cache_writer, dbb, THREAD_medium);
-++ bcb->bcb_writer_fini.run(bcb);
-+ }
-+ catch (const Exception&)
-+ {
-+@@ -2017,7 +2014,7 @@ void CCH_shutdown(thread_db* tdbb)
-+ {
-+ bcb->bcb_flags &= ~BCB_cache_writer;
-+ bcb->bcb_writer_sem.release(); // Wake up running thread
-+- bcb->bcb_writer_fini.enter();
-++ bcb->bcb_writer_fini.waitForCompletion();
-+ }
-+
-+ SyncLockGuard bcbSync(&bcb->bcb_syncObject, SYNC_EXCLUSIVE, "CCH_shutdown");
-+@@ -2692,7 +2689,7 @@ static void flushAll(thread_db* tdbb, USHORT flush_flag)
-+
-+
-+ #ifdef CACHE_READER
-+-static THREAD_ENTRY_DECLARE cache_reader(THREAD_ENTRY_PARAM arg)
-++void BufferControl::cache_reader(BufferControl* bcb)
-+ {
-+ /**************************************
-+ *
-+@@ -2706,7 +2703,7 @@ static THREAD_ENTRY_DECLARE cache_reader(THREAD_ENTRY_PARAM arg)
-+ * busy at a time.
-+ *
-+ **************************************/
-+- Database* dbb = (Database*) arg;
-++ Database* dbb = bcb->bcb_database;
-+ Database::SyncGuard dsGuard(dbb);
-+
-+ FbLocalStatus status_vector;
-+@@ -2846,7 +2843,7 @@ static THREAD_ENTRY_DECLARE cache_reader(THREAD_ENTRY_PARAM arg)
-+ #endif
-+
-+
-+-static THREAD_ENTRY_DECLARE cache_writer(THREAD_ENTRY_PARAM arg)
-++void BufferControl::cache_writer(BufferControl* bcb)
-+ {
-+ /**************************************
-+ *
-+@@ -2859,8 +2856,7 @@ static THREAD_ENTRY_DECLARE cache_writer(THREAD_ENTRY_PARAM arg)
-+ *
-+ **************************************/
-+ FbLocalStatus status_vector;
-+- Database* const dbb = (Database*) arg;
-+- BufferControl* const bcb = dbb->dbb_bcb;
-++ Database* const dbb = bcb->bcb_database;
-+
-+ try
-+ {
-+@@ -2964,8 +2960,7 @@ static THREAD_ENTRY_DECLARE cache_writer(THREAD_ENTRY_PARAM arg)
-+ } // try
-+ catch (const Firebird::Exception& ex)
-+ {
-+- ex.stuffException(&status_vector);
-+- iscDbLogStatus(dbb->dbb_filename.c_str(), &status_vector);
-++ bcb->exceptionHandler(ex, cache_writer);
-+ }
-+
-+ bcb->bcb_flags &= ~BCB_cache_writer;
-+@@ -2977,15 +2972,19 @@ static THREAD_ENTRY_DECLARE cache_writer(THREAD_ENTRY_PARAM arg)
-+ bcb->bcb_flags &= ~BCB_writer_start;
-+ bcb->bcb_writer_init.release();
-+ }
-+- bcb->bcb_writer_fini.release();
-+ }
-+ catch (const Firebird::Exception& ex)
-+ {
-+- ex.stuffException(&status_vector);
-+- iscDbLogStatus(dbb->dbb_filename.c_str(), &status_vector);
-++ bcb->exceptionHandler(ex, cache_writer);
-+ }
-++}
-+
-+- return 0;
-++
-++void BufferControl::exceptionHandler(const Firebird::Exception& ex, BcbSync::ThreadRoutine* /*routine*/)
-++{
-++ FbLocalStatus status_vector;
-++ ex.stuffException(&status_vector);
-++ iscDbLogStatus(bcb_database->dbb_filename.c_str(), &status_vector);
-+ }
-+
-+
-+diff --git a/src/jrd/cch.h b/src/jrd/cch.h
-+index b920566..b7f8486 100644
-+--- a/src/jrd/cch.h
-++++ b/src/jrd/cch.h
-+@@ -29,6 +29,7 @@
-+ #include "../common/classes/RefCounted.h"
-+ #include "../common/classes/semaphore.h"
-+ #include "../common/classes/SyncObject.h"
-++#include "../common/ThreadStart.h"
-+ #ifdef SUPERSERVER_V2
-+ #include "../jrd/sbm.h"
-+ #include "../jrd/pag.h"
-+@@ -85,7 +86,8 @@ class BufferControl : public pool_alloc<type_bcb>
-+ BufferControl(MemoryPool& p, Firebird::MemoryStats& parentStats)
-+ : bcb_bufferpool(&p),
-+ bcb_memory_stats(&parentStats),
-+- bcb_memory(p)
-++ bcb_memory(p),
-++ bcb_writer_fini(p, cache_writer, THREAD_medium)
-+ {
-+ bcb_database = NULL;
-+ QUE_INIT(bcb_in_use);
-+@@ -144,18 +146,24 @@ public:
-+ Firebird::SyncObject bcb_syncLRU;
-+ //Firebird::SyncObject bcb_syncPageWrite;
-+
-++ typedef ThreadFinishSync<BufferControl*> BcbSync;
-++
-++ static void cache_writer(BufferControl* bcb);
-+ Firebird::Semaphore bcb_writer_sem; // Wake up cache writer
-+ Firebird::Semaphore bcb_writer_init; // Cache writer initialization
-+- Firebird::Semaphore bcb_writer_fini; // Cache writer finalization
-++ BcbSync bcb_writer_fini; // Cache writer finalization
-+ #ifdef SUPERSERVER_V2
-++ static void cache_reader(BufferControl* bcb);
-+ // the code in cch.cpp is not tested for semaphore instead event !!!
-+ Firebird::Semaphore bcb_reader_sem; // Wake up cache reader
-+ Firebird::Semaphore bcb_reader_init; // Cache reader initialization
-+- Firebird::Semaphore bcb_reader_fini; // Cache reader finalization
-++ BcbSync bcb_reader_fini; // Cache reader finalization
-+
-+ PageBitmap* bcb_prefetch; // Bitmap of pages to prefetch
-+ #endif
-+
-++ void exceptionHandler(const Firebird::Exception& ex, BcbSync::ThreadRoutine* routine);
-++
-+ bcb_repeat* bcb_rpt;
-+ };
-+
-+diff --git a/src/jrd/event.cpp b/src/jrd/event.cpp
-+index 3a6bf28..cb6dc33 100644
-+--- a/src/jrd/event.cpp
-++++ b/src/jrd/event.cpp
-+@@ -126,6 +126,7 @@ EventManager::EventManager(const Firebird::string& id, Firebird::RefPtr<Config>
-+ m_processOffset(0),
-+ m_dbId(getPool(), id),
-+ m_config(conf),
-++ m_cleanupSync(getPool(), watcher_thread, THREAD_medium),
-+ m_sharedFileCreated(false),
-+ m_exiting(false)
-+ {
-+@@ -146,7 +147,7 @@ EventManager::~EventManager()
-+ // Terminate the event watcher thread
-+ m_startupSemaphore.tryEnter(5);
-+ (void) m_sharedMemory->eventPost(&m_process->prb_event);
-+- m_cleanupSemaphore.tryEnter(5);
-++ m_cleanupSync.waitForCompletion();
-+
-+ #ifdef HAVE_OBJECT_MAP
-+ m_sharedMemory->unmapObject(&localStatus, &m_process);
-+@@ -697,7 +698,7 @@ void EventManager::create_process()
-+
-+ release_shmem();
-+
-+- Thread::start(watcher_thread, this, THREAD_medium);
-++ m_cleanupSync.run(this);
-+ }
-+
-+
-+@@ -1414,12 +1415,16 @@ void EventManager::watcher_thread()
-+ {
-+ m_startupSemaphore.release();
-+ }
-+- m_cleanupSemaphore.release();
-+ }
-+ catch (const Firebird::Exception& ex)
-+ {
-+- iscLogException("Error closing event watcher thread\n", ex);
-++ exceptionHandler(ex, NULL);
-+ }
-+ }
-+
-++void EventManager::exceptionHandler(const Firebird::Exception& ex, ThreadFinishSync<EventManager*>::ThreadRoutine*)
-++{
-++ iscLogException("Error closing event watcher thread\n", ex);
-++}
-++
-+ } // namespace
-+diff --git a/src/jrd/event_proto.h b/src/jrd/event_proto.h
-+index 3301203..9bfd20e 100644
-+--- a/src/jrd/event_proto.h
-++++ b/src/jrd/event_proto.h
-+@@ -63,6 +63,7 @@ public:
-+
-+ bool initialize(Firebird::SharedMemoryBase*, bool);
-+ void mutexBug(int osErrorCode, const char* text);
-++ void exceptionHandler(const Firebird::Exception& ex, ThreadFinishSync<EventManager*>::ThreadRoutine* routine);
-+
-+ private:
-+ void acquire_shmem();
-+@@ -91,11 +92,9 @@ private:
-+ void detach_shared_file();
-+ void get_shared_file_name(Firebird::PathName&) const;
-+
-+- static THREAD_ENTRY_DECLARE watcher_thread(THREAD_ENTRY_PARAM arg)
-++ static void watcher_thread(EventManager* eventMgr)
-+ {
-+- EventManager* const eventMgr = static_cast<EventManager*>(arg);
-+ eventMgr->watcher_thread();
-+- return 0;
-+ }
-+
-+ static void mutex_bugcheck(const TEXT*, int);
-+@@ -109,7 +108,7 @@ private:
-+ Firebird::AutoPtr<Firebird::SharedMemory<evh> > m_sharedMemory;
-+
-+ Firebird::Semaphore m_startupSemaphore;
-+- Firebird::Semaphore m_cleanupSemaphore;
-++ ThreadFinishSync<EventManager*> m_cleanupSync;
-+
-+ bool m_sharedFileCreated;
-+ bool m_exiting;
-+diff --git a/src/jrd/intl.cpp b/src/jrd/intl.cpp
-+index 6666c5f..b0e662b 100644
-+--- a/src/jrd/intl.cpp
-++++ b/src/jrd/intl.cpp
-+@@ -104,7 +104,6 @@
-+ #include "../intl/charsets.h"
-+ #include "../intl/country_codes.h"
-+ #include "../common/gdsassert.h"
-+-//#include "../jrd/license.h"
-+ #ifdef INTL_BUILTIN
-+ #include "../intl/ld_proto.h"
-+ #endif
-+diff --git a/src/jrd/trace/TraceConfigStorage.h b/src/jrd/trace/TraceConfigStorage.h
-+index ca973c0..3d08143 100644
-+--- a/src/jrd/trace/TraceConfigStorage.h
-++++ b/src/jrd/trace/TraceConfigStorage.h
-+@@ -32,6 +32,7 @@
-+ #include "../../common/classes/fb_string.h"
-+ #include "../../common/classes/init.h"
-+ #include "../../common/isc_s_proto.h"
-++#include "../../common/ThreadStart.h"
-+ #include "../../jrd/trace/TraceSession.h"
-+ #include "../../common/classes/RefCounted.h"
-+
-+diff --git a/src/jrd/vio.cpp b/src/jrd/vio.cpp
-+index 02c5809..8ca9f66 100644
-+--- a/src/jrd/vio.cpp
-++++ b/src/jrd/vio.cpp
-+@@ -107,7 +107,6 @@ static bool dfw_should_know(record_param* org_rpb, record_param* new_rpb,
-+ USHORT irrelevant_field, bool void_update_is_relevant = false);
-+ static void garbage_collect(thread_db*, record_param*, ULONG, RecordStack&);
-+ static void garbage_collect_idx(thread_db*, record_param*, Record*, Record*);
-+-static THREAD_ENTRY_DECLARE garbage_collector(THREAD_ENTRY_PARAM);
-+
-+
-+ #ifdef VIO_DEBUG
-+@@ -1958,7 +1957,7 @@ void VIO_fini(thread_db* tdbb)
-+ {
-+ dbb->dbb_flags &= ~DBB_garbage_collector;
-+ dbb->dbb_gc_sem.release(); // Wake up running thread
-+- dbb->dbb_gc_fini.enter();
-++ dbb->dbb_gc_fini.waitForCompletion();
-+ }
-+ }
-+
-+@@ -2420,7 +2419,7 @@ void VIO_init(thread_db* tdbb)
-+ {
-+ try
-+ {
-+- Thread::start(garbage_collector, dbb, THREAD_medium);
-++ dbb->dbb_gc_fini.run(dbb);
-+ }
-+ catch (const Exception&)
-+ {
-+@@ -4741,7 +4740,7 @@ static void garbage_collect_idx(thread_db* tdbb,
-+ }
-+
-+
-+-static THREAD_ENTRY_DECLARE garbage_collector(THREAD_ENTRY_PARAM arg)
-++void Database::garbage_collector(Database* dbb)
-+ {
-+ /**************************************
-+ *
-+@@ -4758,7 +4757,6 @@ static THREAD_ENTRY_DECLARE garbage_collector(THREAD_ENTRY_PARAM arg)
-+ *
-+ **************************************/
-+ FbLocalStatus status_vector;
-+- Database* const dbb = (Database*) arg;
-+
-+ try
-+ {
-+@@ -4989,8 +4987,7 @@ static THREAD_ENTRY_DECLARE garbage_collector(THREAD_ENTRY_PARAM arg)
-+ } // try
-+ catch (const Firebird::Exception& ex)
-+ {
-+- ex.stuffException(&status_vector);
-+- iscDbLogStatus(dbb->dbb_filename.c_str(), &status_vector);
-++ dbb->exceptionHandler(ex, NULL);
-+ }
-+
-+ dbb->dbb_flags &= ~(DBB_garbage_collector | DBB_gc_active | DBB_gc_pending);
-+@@ -5003,15 +5000,19 @@ static THREAD_ENTRY_DECLARE garbage_collector(THREAD_ENTRY_PARAM arg)
-+ dbb->dbb_flags &= ~DBB_gc_starting;
-+ dbb->dbb_gc_init.release();
-+ }
-+- dbb->dbb_gc_fini.release();
-+ }
-+ catch (const Firebird::Exception& ex)
-+ {
-+- ex.stuffException(&status_vector);
-+- iscDbLogStatus(dbb->dbb_filename.c_str(), &status_vector);
-++ dbb->exceptionHandler(ex, NULL);
-+ }
-++}
-++
-+
-+- return 0;
-++void Database::exceptionHandler(const Firebird::Exception& ex, ThreadFinishSync<Database*>::ThreadRoutine* /*routine*/)
-++{
-++ FbLocalStatus status_vector;
-++ ex.stuffException(&status_vector);
-++ iscDbLogStatus(dbb_filename.c_str(), &status_vector);
-+ }
-+
-+
-+diff --git a/src/lock/lock.cpp b/src/lock/lock.cpp
-+index 89eb4c5..2ab3358 100644
-+--- a/src/lock/lock.cpp
-++++ b/src/lock/lock.cpp
-+@@ -214,6 +214,7 @@ LockManager::LockManager(const Firebird::string& id, RefPtr<Config> conf)
-+ m_sharedFileCreated(false),
-+ m_process(NULL),
-+ m_processOffset(0),
-++ m_cleanupSync(getPool(), blocking_action_thread, THREAD_high),
-+ m_sharedMemory(NULL),
-+ m_blockage(false),
-+ m_dbId(getPool(), id),
-+@@ -259,7 +260,7 @@ LockManager::~LockManager()
-+ m_sharedMemory->eventPost(&m_process->prc_blocking);
-+
-+ // Wait for the AST thread to finish cleanup or for 5 seconds
-+- m_cleanupSemaphore.tryEnter(5);
-++ m_cleanupSync.waitForCompletion();
-+ }
-+
-+ #ifdef HAVE_OBJECT_MAP
-+@@ -1548,16 +1549,22 @@ void LockManager::blocking_action_thread()
-+ {
-+ iscLogException("Error in blocking action thread\n", x);
-+ }
-++}
-+
-+- try
-+- {
-+- // Wakeup the main thread waiting for our exit
-+- m_cleanupSemaphore.release();
-+- }
-+- catch (const Firebird::Exception& x)
-+- {
-+- iscLogException("Error closing blocking action thread\n", x);
-+- }
-++
-++void LockManager::exceptionHandler(const Firebird::Exception& ex, ThreadFinishSync<LockManager*>::ThreadRoutine* /*routine*/)
-++{
-++/**************************************
-++ *
-++ * e x c e p t i o n H a n d l e r
-++ *
-++ **************************************
-++ *
-++ * Functional description
-++ * Handler for blocking thread close bugs.
-++ *
-++ **************************************/
-++ iscLogException("Error closing blocking action thread\n", ex);
-+ }
-+
-+
-+@@ -1815,7 +1822,7 @@ bool LockManager::create_process(CheckStatusWrapper* statusVector)
-+ {
-+ try
-+ {
-+- Thread::start(blocking_action_thread, this, THREAD_high);
-++ m_cleanupSync.run(this);
-+ }
-+ catch (const Exception& ex)
-+ {
-+diff --git a/src/lock/lock_proto.h b/src/lock/lock_proto.h
-+index d991c1e..2faec49 100644
-+--- a/src/lock/lock_proto.h
-++++ b/src/lock/lock_proto.h
-+@@ -418,6 +418,8 @@ public:
-+ SINT64 readData2(USHORT, const UCHAR*, USHORT, SRQ_PTR);
-+ SINT64 writeData(SRQ_PTR, SINT64);
-+
-++ void exceptionHandler(const Firebird::Exception& ex, ThreadFinishSync<LockManager*>::ThreadRoutine* routine);
-++
-+ private:
-+ explicit LockManager(const Firebird::string&, Firebird::RefPtr<Config>);
-+ ~LockManager();
-+@@ -471,11 +473,9 @@ private:
-+ void detach_shared_file(Firebird::CheckStatusWrapper*);
-+ void get_shared_file_name(Firebird::PathName&, ULONG extend = 0) const;
-+
-+- static THREAD_ENTRY_DECLARE blocking_action_thread(THREAD_ENTRY_PARAM arg)
-++ static void blocking_action_thread(LockManager* lockMgr)
-+ {
-+- LockManager* const lockMgr = static_cast<LockManager*>(arg);
-+ lockMgr->blocking_action_thread();
-+- return 0;
-+ }
-+
-+ bool initialize(Firebird::SharedMemoryBase* sm, bool init);
-+@@ -490,7 +490,7 @@ private:
-+ Firebird::RWLock m_remapSync;
-+ Firebird::AtomicCounter m_waitingOwners;
-+
-+- Firebird::Semaphore m_cleanupSemaphore;
-++ ThreadFinishSync<LockManager*> m_cleanupSync;
-+ Firebird::Semaphore m_startupSemaphore;
-+
-+ public:
-+diff --git a/src/qli/command.cpp b/src/qli/command.cpp
-+index 5f949f3..fbbf4fb 100644
-+--- a/src/qli/command.cpp
-++++ b/src/qli/command.cpp
-+@@ -30,7 +30,6 @@
-+ #include "../qli/parse.h"
-+ #include "../qli/compile.h"
-+ #include "../qli/exe.h"
-+-//#include "../jrd/license.h"
-+ #include "../qli/all_proto.h"
-+ #include "../qli/err_proto.h"
-+ #include "../qli/exe_proto.h"
-+diff --git a/src/qli/dtr.h b/src/qli/dtr.h
-+index ba5cd64..e246ef4 100644
-+--- a/src/qli/dtr.h
-++++ b/src/qli/dtr.h
-+@@ -480,7 +480,6 @@ struct qli_fun
-+ };
-+
-+ // Program wide globals
-+-//#include <setjmp.h>
-+
-+ #ifdef QLI_MAIN
-+ #define EXTERN
-+diff --git a/src/qli/lex.cpp b/src/qli/lex.cpp
-+index c20d1f9..9e26046 100644
-+--- a/src/qli/lex.cpp
-++++ b/src/qli/lex.cpp
-+@@ -50,10 +50,6 @@ using MsgFormat::SafeArg;
-+ #include <unistd.h>
-+ #endif
-+
-+-//#ifdef HAVE_CTYPES_H
-+-//#include <ctypes.h>
-+-//#endif
-+-
-+ #ifdef HAVE_IO_H
-+ #include <io.h> // isatty
-+ #endif
-+diff --git a/src/qli/meta.epp b/src/qli/meta.epp
-+index a7f222c..2d55716 100644
-+--- a/src/qli/meta.epp
-++++ b/src/qli/meta.epp
-+@@ -28,7 +28,6 @@
-+ #include "../qli/dtr.h"
-+ #include "../qli/compile.h"
-+ #include "../qli/exe.h"
-+-//#include "../jrd/license.h"
-+ #include "../jrd/flags.h"
-+ #include "../jrd/ibase.h"
-+ #include "../qli/reqs.h"
-+diff --git a/src/utilities/gsec/gsecswi.h b/src/utilities/gsec/gsecswi.h
-+index b8519f5..9b560e3 100644
-+--- a/src/utilities/gsec/gsecswi.h
-++++ b/src/utilities/gsec/gsecswi.h
-+@@ -24,7 +24,6 @@
-+ #ifndef GSEC_GSECSWI_H
-+ #define GSEC_GSECSWI_H
-+
-+-//#include "../common/common.h"
-+ #include "../jrd/constants.h"
-+
-+ /* Switch handling constants. Note that the first IN_SW_DATA_ITEMS
-+diff --git a/src/utilities/gstat/dba.epp b/src/utilities/gstat/dba.epp
-+index 379b418..19b99d1 100644
-+--- a/src/utilities/gstat/dba.epp
-++++ b/src/utilities/gstat/dba.epp
-+@@ -56,6 +56,7 @@
-+ #include "../common/classes/UserBlob.h"
-+ #include "../common/os/os_utils.h"
-+ #include "../common/StatusHolder.h"
-++#include "../common/ThreadStart.h"
-+
-+ using MsgFormat::SafeArg;
-+
-+diff --git a/src/utilities/nbackup/nbkswi.h b/src/utilities/nbackup/nbkswi.h
-+index 4326c3d..b8d43da 100644
-+--- a/src/utilities/nbackup/nbkswi.h
-++++ b/src/utilities/nbackup/nbkswi.h
-+@@ -27,7 +27,6 @@
-+ #ifndef NBACKUP_NBKSWI_H
-+ #define NBACKUP_NBKSWI_H
-+
-+-//#include "../common/common.h"
-+ #include "../jrd/constants.h"
-+
-+ // Switch handling constants
-+diff --git a/src/utilities/ntrace/os/win32/FileObject.cpp b/src/utilities/ntrace/os/win32/FileObject.cpp
-+index 73ed38f..53fbfc0 100644
-+--- a/src/utilities/ntrace/os/win32/FileObject.cpp
-++++ b/src/utilities/ntrace/os/win32/FileObject.cpp
-+@@ -27,7 +27,6 @@
-+
-+ #include "firebird.h"
-+ #include "../FileObject.h"
-+-//#include "../common/classes/locks.h"
-+
-+ using namespace Firebird;
-+ Firebird::Mutex open_mutex;
-+diff --git a/src/yvalve/gds.cpp b/src/yvalve/gds.cpp
-+index c851f7c..998bbde 100644
-+--- a/src/yvalve/gds.cpp
-++++ b/src/yvalve/gds.cpp
-+@@ -57,6 +57,7 @@
-+ #include "../common/classes/init.h"
-+ #include "../common/classes/TempFile.h"
-+ #include "../common/utils_proto.h"
-++#include "../common/ThreadStart.h"
-+
-+ #ifdef HAVE_UNISTD_H
-+ #include <unistd.h>
-+diff --git a/src/yvalve/preparse.cpp b/src/yvalve/preparse.cpp
-+index b2335a5..e742784 100644
-+--- a/src/yvalve/preparse.cpp
-++++ b/src/yvalve/preparse.cpp
-+@@ -25,7 +25,6 @@
-+ #include "firebird.h"
-+ #include <stdlib.h>
-+ #include <string.h>
-+-//#include "../dsql/chars.h"
-+ #include "../yvalve/prepa_proto.h"
-+ #include "../yvalve/gds_proto.h"
-+ #include "../yvalve/YObjects.h"
-+--- a/src/common/isc_sync.cpp
-++++ b/src/common/isc_sync.cpp
-+@@ -67,6 +67,7 @@
-+ #include "../common/classes/RefMutex.h"
-+ #include "../common/classes/array.h"
-+ #include "../common/StatusHolder.h"
-++#include "../common/ThreadStart.h"
-+
-+ static int process_id;
-+
-+--
-+2.9.3
-+
-diff --git a/external/firebird/UnpackedTarball_firebird.mk b/external/firebird/UnpackedTarball_firebird.mk
-index b65d041..d62bad7 100644
---- a/external/firebird/UnpackedTarball_firebird.mk
-+++ b/external/firebird/UnpackedTarball_firebird.mk
-@@ -22,6 +22,8 @@ $(eval $(call gb_UnpackedTarball_add_patches,firebird,\
- external/firebird/wnt-dbgutil.patch \
- external/firebird/debug-gfix-failure.patch \
- external/firebird/libc++.patch \
-+ external/firebird/0001-Avoid-hangup-in-SS-when-error-happens-at-system-atta.patch.1 \
-+ external/firebird/0002-Backported-fix-for-CORE-5452-Segfault-when-engine-s-.patch.1 \
- ))
-
- ifeq ($(OS)-$(COM),WNT-MSC)
-
-generated by cgit v0.10.2 at 2017-02-14 10:16:39 (GMT)