Skip to content

Avoid internal exception in fbclient during isc_detach_database #8522

@ppazera

Description

@ppazera

Hello,

firebird v5.0.2 classic on windows (we are trying to migrate from v2.5.9)
c++ exception is raised when trying to disconnect form database
we develop in Delphi and use vectoredExceptionHandler, it logs quite many of those even if they are caught and ignored by fbclient code itself
Delphi does not understand c++ call stack nor arguments nor exceptions, it just reports Exception code E06D7363
but I was able to extract following call stack using MS tools:


00000000`1388faf4  563e30d6 fbclient!isc_detach_database+0xa6 [C:\firebird-build\src\yvalve\why.cpp @ 2098]
00000000`1388fa5c  563d3cd1 fbclient!Why::YAttachment::detach+0x81 [C:\firebird-build\src\yvalve\why.cpp @ 6027]
00000000`1388fa20  563c3223 fbclient!std::_Func_impl_no_alloc<<lambda_18d8c172797690a2d51358950b866ce1>,void>::_Do_call+0x63 [C:\VisualStudio\VC\Tools\MSVC\14.37.32822\include\functional @ 839]
00000000`1388f9dc  5637859d fbclient!Firebird::IAttachmentBaseImpl<Remote::Attachment,Firebird::CheckStatusWrapper,Firebird::IReferenceCountedImpl<Remote::Attachment,Firebird::CheckStatusWrapper,Firebird::Inherit<Firebird::IVersionedImpl<Remote::Attachment,Firebird::CheckStatusWrapper,Firebird::Inherit<Firebird::IAttachment> > > > >::cloopdetachDispatcher+0x6d [C:\firebird-build\src\include\firebird\IdlFbInterfaces.h @ 12019]
00000000`1388f978  56382a75 fbclient!Remote::Attachment::freeClientData+0x235 [C:\firebird-build\src\remote\client\interface.cpp @ 2201]
00000000`1388f950  5637fa3e fbclient!Remote::disconnect+0x2e [C:\firebird-build\src\remote\client\interface.cpp @ 8210]
00000000`1388f918  56382582 fbclient!Remote::finalize+0xe2 [C:\firebird-build\src\remote\client\interface.cpp @ 8177]
00000000`1388f8d0  56461eec fbclient!REMOTE_free_packet+0xac [C:\firebird-build\src\remote\remote.cpp @ 341]
00000000`1388f644  56467f30 fbclient!xdr_protocol+0x18d0 [C:\firebird-build\src\remote\protocol.cpp @ 1096]
00000000`1388f618  56465988 fbclient!getStatement+0x88 [C:\firebird-build\src\remote\protocol.cpp @ 2262]
00000000`1388f5b4  563ed0b5 fbclient!Firebird::status_exception::raise+0x25 [C:\firebird-build\src\common\fb_exception.cpp @ 143]

looks like the problem is in xdr_protocol when trying to release op_batch_set_bpb packet buffer
It looks like it tries to do a bit more than needed in XDR_FREE mode (looks like it fails when trying to do getStatement)
Would it be possible eliminate this exception in future v5 version?

Thanks,
Paulius (GLDS)

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions