Hi, I can, although in pretty elaborate setup, trigger unhandled exception in Why (see below). It's 99% related to something that external engine is doing, because removing one external engine function call from PSQL function makes it not crash. What would be a best way to pin point what's happening? Or at least some pointers what to look for?
Using snapshot Firebird-3.0.8.33501-0_x64. ``` Unhandled exception at 0x00007FF9C9516C9C (fbclient.dll) in firebird.exe: 0xC0000005: Access violation reading location 0x0000000000000008. fbclient.dll!Why::YAttachment::YAttachment(Firebird::IProvider * aProvider, Firebird::IAttachment * aNext, const Firebird::StringBase<Firebird::PathNameComparator> & aDbPath) Line 4980 at c:\snapshots\firebird\src\yvalve\why.cpp(4980) fbclient.dll!Why::MasterImplementation::registerAttachment(Firebird::IProvider * provider, Firebird::IAttachment * attachment) Line 3729 at c:\snapshots\firebird\src\yvalve\why.cpp(3729) fbclient.dll!Firebird::IMasterBaseImpl<Why::MasterImplementation,Firebird::CheckStatusWrapper,Firebird::IVersionedImpl<Why::MasterImplementation,Firebird::CheckStatusWrapper,Firebird::Inherit<Firebird::IMaster>>>::cloopregisterAttachmentDispatcher(Firebird::IMaster * self, Firebird::IProvider * provider, Firebird::IAttachment * attachment) Line 5728 at c:\snapshots\firebird\src\include\firebird\idlfbinterfaces.h(5728) engine12.dll!Jrd::ExtEngineManager::ExternalContextImpl::ExternalContextImpl(Jrd::thread_db * tdbb, Firebird::IExternalEngine * aEngine) Line 605 at c:\snapshots\firebird\src\jrd\extenginemanager.cpp(605) engine12.dll!Jrd::ExtEngineManager::getEngineAttachment(Jrd::thread_db * tdbb, Firebird::IExternalEngine * engine, bool closing) Line 1621 at c:\snapshots\firebird\src\jrd\extenginemanager.cpp(1621) engine12.dll!Jrd::ExtEngineManager::makeFunction(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb, Jrd::Function * udf, const Firebird::MetaName & engine, const Firebird::StringBase<Firebird::StringComparator> & entryPoint, const Firebird::StringBase<Firebird::StringComparator> & body) Line 1182 at c:\snapshots\firebird\src\jrd\extenginemanager.cpp(1182) engine12.dll!Jrd::Function::loadMetadata(Jrd::thread_db * tdbb, unsigned short id, bool noscan, unsigned short flags) Line 1107 at c:\snapshots\firebird\gen\jrd\function.cpp(1107) engine12.dll!Jrd::Function::lookup(Jrd::thread_db * tdbb, const Firebird::QualifiedName & name, bool noscan) Line 646 at c:\snapshots\firebird\gen\jrd\function.cpp(646) engine12.dll!Jrd::UdfCallNode::parse(Jrd::thread_db * tdbb, Firebird::MemoryPool & pool, Jrd::CompilerScratch * csb, const unsigned char blrOp) Line 11061 at c:\snapshots\firebird\src\dsql\exprnodes.cpp(11061) engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1650 at c:\snapshots\firebird\src\jrd\par.cpp(1650) engine12.dll!PAR_parse_value(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1585 at c:\snapshots\firebird\src\jrd\par.cpp(1585) engine12.dll!Jrd::AssignmentNode::parse(Jrd::thread_db * tdbb, Firebird::MemoryPool & pool, Jrd::CompilerScratch * csb, const unsigned char __formal) Line 280 at c:\snapshots\firebird\src\dsql\stmtnodes.cpp(280) engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1650 at c:\snapshots\firebird\src\jrd\par.cpp(1650) engine12.dll!PAR_parse_stmt(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1596 at c:\snapshots\firebird\src\jrd\par.cpp(1596) engine12.dll!Jrd::CompoundStmtNode::parse(Jrd::thread_db * tdbb, Firebird::MemoryPool & pool, Jrd::CompilerScratch * csb, const unsigned char __formal) Line 773 at c:\snapshots\firebird\src\dsql\stmtnodes.cpp(773) engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1650 at c:\snapshots\firebird\src\jrd\par.cpp(1650) engine12.dll!PAR_parse_stmt(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1596 at c:\snapshots\firebird\src\jrd\par.cpp(1596) engine12.dll!Jrd::CompoundStmtNode::parse(Jrd::thread_db * tdbb, Firebird::MemoryPool & pool, Jrd::CompilerScratch * csb, const unsigned char __formal) Line 773 at c:\snapshots\firebird\src\dsql\stmtnodes.cpp(773) engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1650 at c:\snapshots\firebird\src\jrd\par.cpp(1650) engine12.dll!PAR_parse_stmt(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1596 at c:\snapshots\firebird\src\jrd\par.cpp(1596) engine12.dll!Jrd::LabelNode::parse(Jrd::thread_db * tdbb, Firebird::MemoryPool & pool, Jrd::CompilerScratch * csb, const unsigned char __formal) Line 4875 at c:\snapshots\firebird\src\dsql\stmtnodes.cpp(4875) engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1650 at c:\snapshots\firebird\src\jrd\par.cpp(1650) engine12.dll!PAR_parse_stmt(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1596 at c:\snapshots\firebird\src\jrd\par.cpp(1596) engine12.dll!Jrd::CompoundStmtNode::parse(Jrd::thread_db * tdbb, Firebird::MemoryPool & pool, Jrd::CompilerScratch * csb, const unsigned char __formal) Line 773 at c:\snapshots\firebird\src\dsql\stmtnodes.cpp(773) engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1650 at c:\snapshots\firebird\src\jrd\par.cpp(1650) engine12.dll!PAR_parse_stmt(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1596 at c:\snapshots\firebird\src\jrd\par.cpp(1596) engine12.dll!Jrd::ReceiveNode::parse(Jrd::thread_db * tdbb, Firebird::MemoryPool & pool, Jrd::CompilerScratch * csb, const unsigned char __formal) Line 6416 at c:\snapshots\firebird\src\dsql\stmtnodes.cpp(6416) engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1650 at c:\snapshots\firebird\src\jrd\par.cpp(1650) engine12.dll!PAR_parse_stmt(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1596 at c:\snapshots\firebird\src\jrd\par.cpp(1596) engine12.dll!Jrd::CompoundStmtNode::parse(Jrd::thread_db * tdbb, Firebird::MemoryPool & pool, Jrd::CompilerScratch * csb, const unsigned char __formal) Line 773 at c:\snapshots\firebird\src\dsql\stmtnodes.cpp(773) engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1650 at c:\snapshots\firebird\src\jrd\par.cpp(1650) engine12.dll!PAR_blr(Jrd::thread_db * tdbb, Jrd::jrd_rel * relation, const unsigned char * blr, unsigned long blr_length, Jrd::CompilerScratch * view_csb, Jrd::CompilerScratch * * csb_ptr, Jrd::JrdStatement * * statementPtr, const bool trigger, unsigned short flags) Line 235 at c:\snapshots\firebird\src\jrd\par.cpp(235) engine12.dll!Jrd::Routine::parseBlr(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb, Jrd::bid * blob_id, Jrd::bid * blobDbg) Line 175 at c:\snapshots\firebird\src\jrd\routine.cpp(175) engine12.dll!Jrd::Function::loadMetadata(Jrd::thread_db * tdbb, unsigned short id, bool noscan, unsigned short flags) Line 1121 at c:\snapshots\firebird\gen\jrd\function.cpp(1121) engine12.dll!Jrd::Function::lookup(Jrd::thread_db * tdbb, const Firebird::QualifiedName & name, bool noscan) Line 646 at c:\snapshots\firebird\gen\jrd\function.cpp(646) engine12.dll!Jrd::UdfCallNode::parse(Jrd::thread_db * tdbb, Firebird::MemoryPool & pool, Jrd::CompilerScratch * csb, const unsigned char blrOp) Line 11061 at c:\snapshots\firebird\src\dsql\exprnodes.cpp(11061) engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1650 at c:\snapshots\firebird\src\jrd\par.cpp(1650) engine12.dll!PAR_parse_value(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1585 at c:\snapshots\firebird\src\jrd\par.cpp(1585) engine12.dll!Jrd::AssignmentNode::parse(Jrd::thread_db * tdbb, Firebird::MemoryPool & pool, Jrd::CompilerScratch * csb, const unsigned char __formal) Line 280 at c:\snapshots\firebird\src\dsql\stmtnodes.cpp(280) engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1650 at c:\snapshots\firebird\src\jrd\par.cpp(1650) engine12.dll!PAR_parse_stmt(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1596 at c:\snapshots\firebird\src\jrd\par.cpp(1596) engine12.dll!Jrd::CompoundStmtNode::parse(Jrd::thread_db * tdbb, Firebird::MemoryPool & pool, Jrd::CompilerScratch * csb, const unsigned char __formal) Line 773 at c:\snapshots\firebird\src\dsql\stmtnodes.cpp(773) engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1650 at c:\snapshots\firebird\src\jrd\par.cpp(1650) engine12.dll!PAR_parse_stmt(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1596 at c:\snapshots\firebird\src\jrd\par.cpp(1596) engine12.dll!Jrd::CompoundStmtNode::parse(Jrd::thread_db * tdbb, Firebird::MemoryPool & pool, Jrd::CompilerScratch * csb, const unsigned char __formal) Line 773 at c:\snapshots\firebird\src\dsql\stmtnodes.cpp(773) engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1650 at c:\snapshots\firebird\src\jrd\par.cpp(1650) engine12.dll!PAR_parse_stmt(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1596 at c:\snapshots\firebird\src\jrd\par.cpp(1596) engine12.dll!Jrd::LabelNode::parse(Jrd::thread_db * tdbb, Firebird::MemoryPool & pool, Jrd::CompilerScratch * csb, const unsigned char __formal) Line 4875 at c:\snapshots\firebird\src\dsql\stmtnodes.cpp(4875) engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1650 at c:\snapshots\firebird\src\jrd\par.cpp(1650) engine12.dll!PAR_parse_stmt(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1596 at c:\snapshots\firebird\src\jrd\par.cpp(1596) engine12.dll!Jrd::CompoundStmtNode::parse(Jrd::thread_db * tdbb, Firebird::MemoryPool & pool, Jrd::CompilerScratch * csb, const unsigned char __formal) Line 773 at c:\snapshots\firebird\src\dsql\stmtnodes.cpp(773) engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1650 at c:\snapshots\firebird\src\jrd\par.cpp(1650) engine12.dll!PAR_parse_stmt(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1596 at c:\snapshots\firebird\src\jrd\par.cpp(1596) engine12.dll!Jrd::ReceiveNode::parse(Jrd::thread_db * tdbb, Firebird::MemoryPool & pool, Jrd::CompilerScratch * csb, const unsigned char __formal) Line 6416 at c:\snapshots\firebird\src\dsql\stmtnodes.cpp(6416) engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1650 at c:\snapshots\firebird\src\jrd\par.cpp(1650) engine12.dll!PAR_parse_stmt(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1596 at c:\snapshots\firebird\src\jrd\par.cpp(1596) engine12.dll!Jrd::CompoundStmtNode::parse(Jrd::thread_db * tdbb, Firebird::MemoryPool & pool, Jrd::CompilerScratch * csb, const unsigned char __formal) Line 773 at c:\snapshots\firebird\src\dsql\stmtnodes.cpp(773) engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1650 at c:\snapshots\firebird\src\jrd\par.cpp(1650) engine12.dll!PAR_blr(Jrd::thread_db * tdbb, Jrd::jrd_rel * relation, const unsigned char * blr, unsigned long blr_length, Jrd::CompilerScratch * view_csb, Jrd::CompilerScratch * * csb_ptr, Jrd::JrdStatement * * statementPtr, const bool trigger, unsigned short flags) Line 235 at c:\snapshots\firebird\src\jrd\par.cpp(235) engine12.dll!Jrd::Routine::parseBlr(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb, Jrd::bid * blob_id, Jrd::bid * blobDbg) Line 175 at c:\snapshots\firebird\src\jrd\routine.cpp(175) engine12.dll!Jrd::Function::loadMetadata(Jrd::thread_db * tdbb, unsigned short id, bool noscan, unsigned short flags) Line 1121 at c:\snapshots\firebird\gen\jrd\function.cpp(1121) engine12.dll!Jrd::Function::lookup(Jrd::thread_db * tdbb, const Firebird::QualifiedName & name, bool noscan) Line 646 at c:\snapshots\firebird\gen\jrd\function.cpp(646) engine12.dll!Jrd::UdfCallNode::parse(Jrd::thread_db * tdbb, Firebird::MemoryPool & pool, Jrd::CompilerScratch * csb, const unsigned char blrOp) Line 11061 at c:\snapshots\firebird\src\dsql\exprnodes.cpp(11061) engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1650 at c:\snapshots\firebird\src\jrd\par.cpp(1650) engine12.dll!PAR_parse_value(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1585 at c:\snapshots\firebird\src\jrd\par.cpp(1585) engine12.dll!Jrd::ComparativeBoolNode::parse(Jrd::thread_db * tdbb, Firebird::MemoryPool & pool, Jrd::CompilerScratch * csb, const unsigned char blrOp) Line 328 at c:\snapshots\firebird\src\dsql\boolnodes.cpp(328) engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1650 at c:\snapshots\firebird\src\jrd\par.cpp(1650) engine12.dll!PAR_parse_boolean(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1574 at c:\snapshots\firebird\src\jrd\par.cpp(1574) engine12.dll!Jrd::BinaryBoolNode::parse(Jrd::thread_db * tdbb, Firebird::MemoryPool & pool, Jrd::CompilerScratch * csb, const unsigned char blrOp) Line 114 at c:\snapshots\firebird\src\dsql\boolnodes.cpp(114) engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1650 at c:\snapshots\firebird\src\jrd\par.cpp(1650) engine12.dll!PAR_parse_boolean(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1574 at c:\snapshots\firebird\src\jrd\par.cpp(1574) engine12.dll!Jrd::BinaryBoolNode::parse(Jrd::thread_db * tdbb, Firebird::MemoryPool & pool, Jrd::CompilerScratch * csb, const unsigned char blrOp) Line 114 at c:\snapshots\firebird\src\dsql\boolnodes.cpp(114) engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1650 at c:\snapshots\firebird\src\jrd\par.cpp(1650) engine12.dll!PAR_parse_boolean(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1574 at c:\snapshots\firebird\src\jrd\par.cpp(1574) engine12.dll!Jrd::BinaryBoolNode::parse(Jrd::thread_db * tdbb, Firebird::MemoryPool & pool, Jrd::CompilerScratch * csb, const unsigned char blrOp) Line 114 at c:\snapshots\firebird\src\dsql\boolnodes.cpp(114) engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1650 at c:\snapshots\firebird\src\jrd\par.cpp(1650) engine12.dll!PAR_parse_boolean(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1574 at c:\snapshots\firebird\src\jrd\par.cpp(1574) engine12.dll!Jrd::BoolAsValueNode::parse(Jrd::thread_db * tdbb, Firebird::MemoryPool & pool, Jrd::CompilerScratch * csb, const unsigned char __formal) Line 2567 at c:\snapshots\firebird\src\dsql\exprnodes.cpp(2567) engine12.dll!PAR_parse_node(Jrd::thread_db * tdbb, Jrd::CompilerScratch * csb) Line 1650 at c:\snapshots\firebird\src\jrd\par.cpp(1650) engine12.dll!PAR_blr(Jrd::thread_db * tdbb, Jrd::jrd_rel * relation, const unsigned char * blr, unsigned long blr_length, Jrd::CompilerScratch * view_csb, Jrd::CompilerScratch * * csb_ptr, Jrd::JrdStatement * * statementPtr, const bool trigger, unsigned short flags) Line 235 at c:\snapshots\firebird\src\jrd\par.cpp(235) engine12.dll!MET_scan_relation(Jrd::thread_db * tdbb, Jrd::jrd_rel * relation) Line 9085 at c:\snapshots\firebird\gen\jrd\met.cpp(9085) engine12.dll!MET_lookup_index_expression(Jrd::thread_db * tdbb, Jrd::jrd_rel * relation, Jrd::index_desc * idx) Line 7161 at c:\snapshots\firebird\gen\jrd\met.cpp(7161) engine12.dll!BTR_description(Jrd::thread_db * tdbb, Jrd::jrd_rel * relation, Ods::index_root_page * root, Jrd::index_desc * idx, unsigned short id) Line 518 at c:\snapshots\firebird\src\jrd\btr.cpp(518) engine12.dll!IDX_garbage_collect(Jrd::thread_db * tdbb, Jrd::record_param * rpb, Firebird::Stack<Jrd::Record *,16> & going, Firebird::Stack<Jrd::Record *,16> & staying) Line 738 at c:\snapshots\firebird\src\jrd\idx.cpp(738) engine12.dll!garbage_collect(Jrd::thread_db * tdbb, Jrd::record_param * rpb, unsigned long prior_page, Firebird::Stack<Jrd::Record *,16> & staying) Line 4803 at c:\snapshots\firebird\src\jrd\vio.cpp(4803) engine12.dll!purge(Jrd::thread_db * tdbb, Jrd::record_param * rpb) Line 6101 at c:\snapshots\firebird\src\jrd\vio.cpp(6101) engine12.dll!VIO_chase_record_version(Jrd::thread_db * tdbb, Jrd::record_param * rpb, Jrd::jrd_tra * transaction, Firebird::MemoryPool * pool, bool writelock, bool noundo) Line 1257 at c:\snapshots\firebird\src\jrd\vio.cpp(1257) engine12.dll!VIO_next_record(Jrd::thread_db * tdbb, Jrd::record_param * rpb, Jrd::jrd_tra * transaction, Firebird::MemoryPool * pool, bool onepage) Line 3094 at c:\snapshots\firebird\src\jrd\vio.cpp(3094) engine12.dll!Jrd::Database::garbage_collector(Jrd::Database * dbb) Line 5008 at c:\snapshots\firebird\src\jrd\vio.cpp(5008) engine12.dll!ThreadFinishSync<Jrd::Database * __ptr64>::internalRun() Line 189 at c:\snapshots\firebird\src\common\threadstart.h(189) engine12.dll!ThreadFinishSync<Jrd::Database * __ptr64>::internalRun(void * arg) Line 182 at c:\snapshots\firebird\src\common\threadstart.h(182) engine12.dll!threadStart(void * arg) Line 97 at c:\snapshots\firebird\src\common\threadstart.cpp(97) msvcr100.dll!_callthreadstartex() Line 314 at f:\dd\vctools\crt_bld\self_64_amd64\crt\src\threadex.c(314) msvcr100.dll!_threadstartex(void * ptd) Line 292 at f:\dd\vctools\crt_bld\self_64_amd64\crt\src\threadex.c(292) kernel32.dll!BaseThreadInitThunk() ntdll.dll!RtlUserThreadStart() ``` -- Mgr. Jiří Činčura https://www.tabsoverspaces.com/ Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel