https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107078
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |INVALID Status|WAITING |RESOLVED --- Comment #20 from Martin Liška <marxin at gcc dot gnu.org> --- Thanks, now I can reproduce and it: Thread 1 "isql" received signal SIGSEGV, Segmentation fault. 0x00007ffff634da54 in Firebird::MemPool::releaseMemory (flagExtent=false, object=<optimized out>) at /home/marxin/Programming/firebird-4.0.2/src/common/classes/alloc.cpp:2402 2402 pool->releaseBlock(block, !flagExtent); (gdb) bt #0 0x00007ffff634da54 in Firebird::MemPool::releaseMemory (flagExtent=false, object=<optimized out>) at /home/marxin/Programming/firebird-4.0.2/src/common/classes/alloc.cpp:2402 #1 Firebird::MemPool::deallocate (block=<optimized out>) at /home/marxin/Programming/firebird-4.0.2/src/common/classes/alloc.cpp:2683 #2 Firebird::MemPool::globalFree (block=<optimized out>) at /home/marxin/Programming/firebird-4.0.2/src/common/classes/alloc.cpp:2671 #3 Firebird::MemoryPool::globalFree (block=<optimized out>) at /home/marxin/Programming/firebird-4.0.2/src/common/classes/alloc.cpp:2836 it crashes because releaseMemory is called with object == NULL: void MemPool::releaseMemory(void* object, bool flagExtent) FB_NOTHROW { if (object) { LTO create a .part clone where it assumes object can't be null. That's true for 'this' pointer, which should never be null. can be fixed with: -O2 -flto=auto -flifetime-dse=1 -fno-delete-null-pointer-checks please build the software with -fsanitize=undefined,address and investigate where it violates that.