Subject | RE: [IBO] RE: Access violation in IB_Components |
---|---|
Author | IBO Support List |
Post date | 2014-01-14T20:24:05Z |
From: IBObjects@yahoogroups.com [mailto:IBObjects@yahoogroups.com] On Behalf Of ma_golyo@...
Sent: Monday, December 2, 2013 12:18 AM
To: IBObjects@yahoogroups.com
Subject: [IBO] RE: Access violation in IB_Components
Hi!
My
simple test case. In this case the access violation error changed to "possibly
status vector overflow". ;)
create
exception testexception 'error';
create or alter procedure
testprocedure
returns(
dummy
integer)
as
begin
exception testexception;
suspend;
end
IB_Connection1.Connected := TRUE;
IB_Query1.SQL.Text := 'SELECT * FROM
testprocedure';
IB_Query1.Open;
On
32 bit : OK - 'error' error message
On 64 bit : NO - Project Project7.exe
raised exception class EIB_ISCError with message '<Missing arg #1 - possibly
status vector overflow>'.
On 32 bit after the fix : OK - 'error' error
message
On 64 bit after the fix : OK - 'error' error message
---In ibobjects@yahoogroups.com, <supportlist@...> wrote:
From: IBObjects@yahoogroups.com [mailto:IBObjects@yahoogroups.com] On Behalf Of ma_golyo@...
Sent: Friday, November 29, 2013 5:27 AM
To: IBObjects@yahoogroups.com
Subject: [IBO] RE: Access violation in IB_Components
Looks like ISC_STATUS definitons is wrong in IB_Header.pas.
After changing from longint to NativeInt (and rebuild IBO) it works as
expected.
---In ibobjects@yahoogroups.com, <ma_golyo@...> wrote:
Using databreakponts it looks like (in callstack) the Self is overwritten in fbclient.dll, after calling isc_dsql_execute2.
So it looks like isc_dsql_execute2 mapping or it's argument type mapping is somehow wrong in 64bit mode.
---In ibobjects@yahoogroups.com, <ma_golyo@...> wrote:
Hi!
IBO : 5.3.1.1862
XE4 upd1
64Win7, 64bit debug
FB2.5.2.26540 (both client and server)
When an EXECUTE PROCEDURE call (TIBOStoredProc.ExecProc) throws an exception at database side (database exception call) then in the TIBOStoredProc Self pointer becomes nil after the
SysExecStatement ( ErrCode, Status );
call (IB_Components.pas, line 25299). Looks like some kind of buffer overflow problem.
Please fix it.
Thank you!