[AV] Re-destruction of the rem_port object ------------------------------------------
Key: CORE-6224 URL: http://tracker.firebirdsql.org/browse/CORE-6224 Project: Firebird Core Issue Type: Bug Components: Engine Affects Versions: 3.0.5 Environment: Test of IBProvider builtin client for Firebird. Reporter: Kovalenko Dmitry FB3.0.5.33225 x64 SuperServer. Connection through TCP/IP. ------- Under mt-tesing of IBProvider builtin client for Firebird, Firebird crash on the destroy of rem_port object. This is a reproducible problem on the "clear" build of server. Run parameters [for history] target\vs2019-x64-Debug\test_db_client_fb_1.exe /thread_count 10 /auto /log_dir _logs /log_file_prefix fb03-0-4 /inet_host HOME4 /db d:\database\ram\ibp_test_fb30_d3.gdb /db_user GAMER /db_password vermut /new_db_dir d:\database\ram\ /isc_api_library fbclient_30.dll /cn_str "remote:protocol_arch=symmetric,generic;remote:wire_compression=required" /dbms "FB-3" /test RemoteFB.WORK.019.StmtExecute.* -------- [The "best" case of crash] I made some changes in FB sources for better undertand of problem. CRASH THREAD [ID 31192 - not sure at current time] virtual int release() const { fb_assert(m_refCnt.value() > 0); //<- HERE STACK: firebird.exe!fb_assert_impl(const char * msg, const char * file, int line, bool do_abort)Строка 48 C++ > firebird.exe!Firebird::RefCounted::release()Строка 45 C++ firebird.exe!rem_port::release()Строка 1162 C++ firebird.exe!Firebird::RefPtr<rem_port>::assign(rem_port * const p)Строка 276 C++ firebird.exe!Firebird::RefPtr<rem_port>::operator=(rem_port * p)Строка 182 C++ firebird.exe!server_req_t::~server_req_t()Строка 130 C++ firebird.exe!server_req_t::`scalar deleting destructor'(unsigned int) C++ firebird.exe!loopThread(void * __formal)Строка 6180 C++ firebird.exe!`anonymous namespace'::ThreadArgs::run()Строка 78 C++ firebird.exe!threadStart(void * arg)Строка 97 C++ ucrtbased.dll!thread_start<unsigned int (__cdecl*)(void *),1>(void * const parameter)Строка 97 C++ kernel32.dll!BaseThreadInitThunk() Нет данных ntdll.dll!RtlUserThreadStart() Нет данных LOCAL VARIABLES: - this 0x00000000008ca1d0 {m_refCnt={...} m_debug__WAS_DELETED=-572662307 } const Firebird::RefCounted * + __vfptr 0xdddddddddddddddd {???, ???, ???} void * * - m_refCnt {...} Firebird::AtomicCounter + Firebird::PlatformAtomicCounter {counter=-2459565876494606883 } Firebird::PlatformAtomicCounter m_debug__WAS_DELETED -572662307 long refCnt -858993460 const int NOTE ON THE this - is is 0x00000000008ca1d0 ------ TRACE INFORMATION, WHICH WAS CREATED __BEFORE__ CRASH: It is dirrect call of rem_port::release from "static void disconnect(rem_port* const port)" (inet.cpp). Decrement from 2 to 1. REM_PORT_RLS - 0x00000000008ca1d0. TID: 31192. R: 1. STACK: firebird.exe!rem_port::release firebird.exe!disconnect firebird.exe!rem_port::disconnect firebird.exe!rem_port::disconnect firebird.exe!process_packet firebird.exe!loopThread firebird.exe!`anonymous namespace'::ThreadArgs::run firebird.exe!threadStart ucrtbased.dll!thread_start<unsigned int (__cdecl*)(void *),1> kernel32.dll!BaseThreadInitThunk ntdll.dll!RtlUserThreadStart It is destroy of rem_port object. Decrement from 1 to 0. REM_PORT_DCR - 0x00000000008ca1d0. TID: 31192. STACK: firebird.exe!rem_port::~rem_port firebird.exe!rem_port::`scalar deleting destructor' firebird.exe!Firebird::RefCounted::release firebird.exe!rem_port::release firebird.exe!Firebird::RefPtr<rem_port>::~RefPtr<rem_port> firebird.exe!DecrementRequestsQueued::~DecrementRequestsQueued firebird.exe!process_packet firebird.exe!loopThread firebird.exe!`anonymous namespace'::ThreadArgs::run firebird.exe!threadStart ucrtbased.dll!thread_start<unsigned int (__cdecl*)(void *),1> kernel32.dll!BaseThreadInitThunk ntdll.dll!RtlUserThreadStart -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://tracker.firebirdsql.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel