In case of OOM when creating new Statement uninitialized value (typically nullptr) remains in requests array. This causes segfault in Statement::release() code.
#0 0x00007ff9899e4af6 in EXE_unwind (tdbb=tdbb@entry=0x7fe9f5cd2f30, request=request@entry=0x0)
at /usr/home/firebird/B4.0-release/src/jrd/exe.cpp:953
#1 0x00007ff9899e5111 in EXE_release (tdbb=tdbb@entry=0x7fe9f5cd2f30, request=0x0)
at /usr/home/firebird/B4.0-release/src/jrd/exe.cpp:780
#2 0x00007ff9898f9bf8 in Jrd::JrdStatement::release (this=0x7ff48793d9e0, tdbb=0x7fe9f5cd2f30)
at /usr/home/firebird/B4.0-release/src/jrd/JrdStatement.cpp:643
#3 0x00007ff989943c5a in Jrd::Routine::releaseStatement (this=this@entry=0x7ff285b574d0, tdbb=tdbb@entry=0x7fe9f5cd2f30)
at /usr/home/firebird/B4.0-release/src/jrd/Routine.cpp:303
In case of OOM when creating new Statement uninitialized value (typically nullptr) remains in requests array. This causes segfault in Statement::release() code.