macOS ARM Assertion (!defaultMemPool)

31 views
Skip to first unread message

Sergey Khalyutin

unread,
Feb 26, 2026, 10:05:48 AM (yesterday) Feb 26
to firebird-devel
same test in Windows and Linux amd64 is successfully;

under macOS ARM - set of Assertions (!defaultMemPool).

How it may by localised?


bin % ./isql -user sysdba employee
Assertion (!defaultMemPool) failure: /Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/alloc.cpp 1725
Database: employee, User: SYSDBA
SQL> select cast('RDB$RELATION_ID=' || RDB$RELATION_ID as varchar(20)) from rdb$database;

CAST                
====================
RDB$RELATION_ID=139  

SQL> exit;
zsh: segmentation fault  ./isql -user sysdba employee
bin %

///////////////////////////////////////////////////
bin %  ./firebird
Assertion (!defaultMemPool) failure: /Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/alloc.cpp 1725
Server started successfully
///////////////////////////////////////////////////

 %  ./isql -user sysdba -password 'masterkey'  localhost:employee          

Database: localhost:employee, User: SYSDBA
SQL> select 'RDB$RELATION_ID=' || cast(RDB$RELATION_ID as varchar(20)) from rdb$database;

CONCATENATION                        
====================================
RDB$RELATION_ID=139                  

SQL> exit;
bin %



debug command:

"program": "${workspaceFolder}/build/code/firebird/bin/isql",
"args": [  "-user", "sysdba", "employee", "-q", "-i", "${workspaceFolder}/test/create_user.sql"],

stack under debuger:
///////////////////////////

Assertion 1 (!defaultMemPool):

libfbclient.dylib!Firebird::MemPool::initDefaultPool() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/alloc.cpp:1725)
libfbclient.dylib!Firebird::MemoryPool::initDefaultPool() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/alloc.cpp:1920)
libfbclient.dylib!(anonymous namespace)::init() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/init.cpp:170)
libfbclient.dylib!Firebird::InstanceControl::InstanceControl() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/init.cpp:196)
libfbclient.dylib!Firebird::DeleteInstance<Firebird::InitInstance<Why::Dtc, Firebird::StaticInstanceAllocator<Why::Dtc>, Firebird::DeleteInstance>>::DeleteInstance() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/init.h:252)
libfbclient.dylib!Firebird::InitInstance<Why::Dtc, Firebird::StaticInstanceAllocator<Why::Dtc>, Firebird::DeleteInstance>::InitInstance() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/init.h:296)
libfbclient.dylib!Firebird::Static<Why::Dtc>::Static() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/init.h:346)
libfbclient.dylib!Firebird::Static<Why::Dtc>::Static() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/init.h:347)
libfbclient.dylib!::__cxx_global_var_init() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/yvalve/MasterImplementation.cpp:84)
libfbclient.dylib!_GLOBAL__sub_I_MasterImplementation.cpp (Unknown Source:0)


Assertion 2 (!defaultMemPool):

isql!Firebird::MemPool::initDefaultPool() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/alloc.cpp:1725)
isql!Firebird::MemoryPool::initDefaultPool() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/alloc.cpp:1920)
isql!(anonymous namespace)::init() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/init.cpp:170)
isql!Firebird::InstanceControl::InstanceControl() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/init.cpp:196)
isql!Firebird::DeleteInstance<Firebird::InitInstance<Firebird::SimpleFactoryBase<Auth::SrpClientImpl<Firebird::Sha1>>, Firebird::StaticInstanceAllocator<Firebird::SimpleFactoryBase<Auth::SrpClientImpl<Firebird::Sha1>>>, Firebird::DeleteInstance>>::DeleteInstance() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/init.h:252)
isql!Firebird::InitInstance<Firebird::SimpleFactoryBase<Auth::SrpClientImpl<Firebird::Sha1>>, Firebird::StaticInstanceAllocator<Firebird::SimpleFactoryBase<Auth::SrpClientImpl<Firebird::Sha1>>>, Firebird::DeleteInstance>::InitInstance() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/init.h:296)
isql!Firebird::Static<Firebird::SimpleFactoryBase<Auth::SrpClientImpl<Firebird::Sha1>>>::Static() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/init.h:346)
isql!Firebird::SimpleFactory<Auth::SrpClientImpl<Firebird::Sha1>>::SimpleFactory() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/ImplementHelper.h:187)
isql!Firebird::SimpleFactory<Auth::SrpClientImpl<Firebird::Sha1>>::SimpleFactory() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/ImplementHelper.h:187)
isql!::__cxx_global_var_init() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/auth/SecureRemotePassword/client/SrpClient.cpp:182)
isql!_GLOBAL__sub_I_SrpClient.cpp (Unknown Source:0)
...

Assertion 3 (!defaultMemPool):

libEngine14.dylib!Firebird::MemPool::initDefaultPool() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/alloc.cpp:1725)
libEngine14.dylib!Firebird::MemoryPool::initDefaultPool() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/alloc.cpp:1920)
libEngine14.dylib!(anonymous namespace)::init() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/init.cpp:170)
libEngine14.dylib!Firebird::InstanceControl::InstanceControl() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/init.cpp:196)
libEngine14.dylib!Firebird::DeleteInstance<Firebird::InitInstance<(anonymous namespace)::IbUtilStartup, Firebird::DefaultInstanceAllocator<(anonymous namespace)::IbUtilStartup>, Firebird::DeleteInstance>>::DeleteInstance() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/init.h:252)
libEngine14.dylib!Firebird::InitInstance<(anonymous namespace)::IbUtilStartup, Firebird::DefaultInstanceAllocator<(anonymous namespace)::IbUtilStartup>, Firebird::DeleteInstance>::InitInstance() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/init.h:296)
libEngine14.dylib!Firebird::InitInstance<(anonymous namespace)::IbUtilStartup, Firebird::DefaultInstanceAllocator<(anonymous namespace)::IbUtilStartup>, Firebird::DeleteInstance>::InitInstance() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/init.h:298)
libEngine14.dylib!::__cxx_global_var_init.2() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/build/code/src/jrd/fun.epp.master.cpp:109)
libEngine14.dylib!_GLOBAL__sub_I_fun.epp.master.cpp (Unknown Source:0)
...

Assertion 4,5 (!defaultMemPool):

isql!Firebird::MemPool::initDefaultPool() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/alloc.cpp:1725)
libfbintl.dylib!Firebird::MemoryPool::initDefaultPool() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/alloc.cpp:1920)
libfbintl.dylib!(anonymous namespace)::init() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/init.cpp:170)
libfbintl.dylib!Firebird::InstanceControl::InstanceControl() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/init.cpp:196)
libfbintl.dylib!Firebird::DeleteInstance<Firebird::InitInstance<Why::Dtc, Firebird::StaticInstanceAllocator<Why::Dtc>, Firebird::DeleteInstance>>::DeleteInstance() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/init.h:252)
libfbintl.dylib!Firebird::InitInstance<Why::Dtc, Firebird::StaticInstanceAllocator<Why::Dtc>, Firebird::DeleteInstance>::InitInstance() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/init.h:296)
libfbintl.dylib!Firebird::Static<Why::Dtc>::Static() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/init.h:346)
libfbintl.dylib!Firebird::Static<Why::Dtc>::Static() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/common/classes/init.h:347)
libfbintl.dylib!::__cxx_global_var_init() (/Users/khalyutin/WORK/source/COMPONENTS/SQLfb/code/src/yvalve/MasterImplementation.cpp:84)
libfbintl.dylib!_GLOBAL__sub_I_MasterImplementation.cpp (Unknown Source:0)
...

Adriano dos Santos Fernandes

unread,
Feb 26, 2026, 7:49:13 PM (15 hours ago) Feb 26
to firebir...@googlegroups.com
On 2/26/26 12:05, Sergey Khalyutin wrote:
> same test in Windows and Linux amd64 is successfully;
>
> under macOS ARM - set of Assertions (!defaultMemPool).
>
> How it may by localised?
>

Due to undefined behavior.

Try this patch:

diff --git a/src/common/classes/init.cpp b/src/common/classes/init.cpp
index 75949ae6a9..7a63cd1b31 100644
--- a/src/common/classes/init.cpp
+++ b/src/common/classes/init.cpp
@@ -70,7 +70,7 @@ namespace
#endif

// This helps initialize globals, needed before regular ctors run
- int initDone = 0;
+ std::atomic_int initDone = 0;

#ifdef HAVE_PTHREAD_ATFORK
void child(void)


Adriano

Reply all
Reply to author
Forward
0 new messages