Lazarus crash using Zeos 6.6.4 SQL 2005
Moderators: gto, cipto_kh, EgonHugeist
Lazarus crash using Zeos 6.6.4 SQL 2005
Hello,
With lazarus 0.9.26 beta, i'm using in a form a zconnection using mssql.
When I use a Zquery and after a put active the query, lazarus crash.
If I do the same thing with a zconneciton and a table no problem appears.
The funny thing is that after the startup configuration of the zconnection to the sql 2005 server, and when put connected , no problem appears and I can see that the connection is done.
Can someone help please ?
Thanks is advance
With lazarus 0.9.26 beta, i'm using in a form a zconnection using mssql.
When I use a Zquery and after a put active the query, lazarus crash.
If I do the same thing with a zconneciton and a table no problem appears.
The funny thing is that after the startup configuration of the zconnection to the sql 2005 server, and when put connected , no problem appears and I can see that the connection is done.
Can someone help please ?
Thanks is advance
Thanks Mark for your help, but that didn't work also.
I'm using in the test form a zcconection , a zquery and a Tdatasource, and the goal is to show in a grid the record of a table, that should appear after turning on the active property of the zquery.
Im using Lazarus in Windows, and when in zquery.sql property a use like "select * from <tablename>" , after the active in turned on, the lazarus crash without a message.
Any suggestion ?
Thanks in advance
Paulo
I'm using in the test form a zcconection , a zquery and a Tdatasource, and the goal is to show in a grid the record of a table, that should appear after turning on the active property of the zquery.
Im using Lazarus in Windows, and when in zquery.sql property a use like "select * from <tablename>" , after the active in turned on, the lazarus crash without a message.
Any suggestion ?
Thanks in advance
Paulo
- mdaems
- Zeos Project Manager
- Posts: 2766
- Joined: 20.09.2005, 15:28
- Location: Brussels, Belgium
- Contact:
In that case the only thing we can do now is debug until the crash line is found...
I've no mssql server available. So no way I can test it.
So if you set the connection active during design time and compile, your program also works? If not, that may mean there are environment differences between the Lazarus exe context and your program executable.
Mark
I've no mssql server available. So no way I can test it.
So if you set the connection active during design time and compile, your program also works? If not, that may mean there are environment differences between the Lazarus exe context and your program executable.
Mark
Hi Mark
In design time I can put active the connection , but when I active the zquery, that as a "select * from <tablename>" in the SQL property, it crash everything including lazarus.
I've tried every way (in design and with source code), but it seems that doesn't work at all.
Does SQL 2005 Express produced the same ? Can you tried with that ? I'm trying to do a application with lazarus to manage some account documents for my company, and I don't want to change again to Delphi 7.
Thanks in advance
PS
In design time I can put active the connection , but when I active the zquery, that as a "select * from <tablename>" in the SQL property, it crash everything including lazarus.
I've tried every way (in design and with source code), but it seems that doesn't work at all.
Does SQL 2005 Express produced the same ? Can you tried with that ? I'm trying to do a application with lazarus to manage some account documents for my company, and I don't want to change again to Delphi 7.
Thanks in advance
PS
- mdaems
- Zeos Project Manager
- Posts: 2766
- Joined: 20.09.2005, 15:28
- Location: Brussels, Belgium
- Contact:
Paulo,
I have no SQL server available... So that's really bad luck for you.
Do you still have a D7 copy where you can test the situation on? Just to make sure it's Lazarus only?
To find out where it goes wrong exactly:
- Make sure the zeoslib sources are read by the debugger as well
- Add a button to your form to open the query
- Put a debug point on the ZQuery1.Open line
- Step into the zeoslib internal code until you're thrown out. Maybe you can do this layer by layer instead of going until the lowest level at once. So find out what line of a procedure is the last one entered before digging deeper into a subprocedure. eg just step through ZAbstractRODataset.InternalOpen instead of also stepping into all it's subroutines. In a second pass you can step into the subprocedure that finally threw you out of Lazarus.
Mark
I have no SQL server available... So that's really bad luck for you.
Do you still have a D7 copy where you can test the situation on? Just to make sure it's Lazarus only?
To find out where it goes wrong exactly:
- Make sure the zeoslib sources are read by the debugger as well
- Add a button to your form to open the query
- Put a debug point on the ZQuery1.Open line
- Step into the zeoslib internal code until you're thrown out. Maybe you can do this layer by layer instead of going until the lowest level at once. So find out what line of a procedure is the last one entered before digging deeper into a subprocedure. eg just step through ZAbstractRODataset.InternalOpen instead of also stepping into all it's subroutines. In a second pass you can step into the subprocedure that finally threw you out of Lazarus.
Mark
Thanks Mark.
I've have done the following code in the button clause :
ZConnection1.Connected := True;
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add('Select * from TEMP_VENDAS');
ZQuery1.Active:= True;
When debugging the application send me a "Project raise exception class 'External : SIGSEGV'
address : $7C90E8C5
Procedure : strchr
File:
after the the Zquery1.active := True statment
I will try with D7 to see if the same occurs.
Thanks in advance
Paulo
I've have done the following code in the button clause :
ZConnection1.Connected := True;
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add('Select * from TEMP_VENDAS');
ZQuery1.Active:= True;
When debugging the application send me a "Project raise exception class 'External : SIGSEGV'
address : $7C90E8C5
Procedure : strchr
File:
after the the Zquery1.active := True statment
I will try with D7 to see if the same occurs.
Thanks in advance
Paulo
Mark
Here it's the code from debugger , when he raize error:
Paulo
----------
procedure TZDBLibMSSQL7PlainDriver.CheckError;
var
I: Integer;
S: string;
lErrorEntry: PDBLibError;
lMesageEntry: PDBLibMessage;
begin
{ TODO -ofjanos -cGeneral : Error handling should be based on connection object.
At the moment it is global. }
if (MSSqlErrors.Count = 0) and (MSSqlMessages.Count = 0) then
Exit;
S := '';
for I := 0 to MSSqlErrors.Count - 1 do
S := S + PDBLibError(MSSqlErrors.Items).DbErrStr + ' '
+ PDBLibError(MSSqlErrors.Items).OsErrStr + ' '#13;
for I := 0 to MSSqlMessages.Count - 1 do
if PDBLibMessage(MSSqlMessages.Items).Severity > EXINFO then
S := S + PDBLibMessage(MSSqlMessages.Items).MsgText + ' '#13;
while MSSqlErrors.Count > 0 do
begin
lErrorEntry := MSSqlErrors.Items[0];
Dispose(lErrorEntry);
MSSqlErrors.Delete(0);
end;
MSSqlErrors.Clear;
while MSSqlMessages.Count > 0 do
begin
lMesageEntry := MSSqlMessages.Items[0];
Dispose(lMesageEntry);
MSSqlMessages.Delete(0);
end;
MSSqlMessages.Clear;
if S <> '' then
raise Exception.Create(S);
end;
Here it's the code from debugger , when he raize error:
Paulo
----------
procedure TZDBLibMSSQL7PlainDriver.CheckError;
var
I: Integer;
S: string;
lErrorEntry: PDBLibError;
lMesageEntry: PDBLibMessage;
begin
{ TODO -ofjanos -cGeneral : Error handling should be based on connection object.
At the moment it is global. }
if (MSSqlErrors.Count = 0) and (MSSqlMessages.Count = 0) then
Exit;
S := '';
for I := 0 to MSSqlErrors.Count - 1 do
S := S + PDBLibError(MSSqlErrors.Items).DbErrStr + ' '
+ PDBLibError(MSSqlErrors.Items).OsErrStr + ' '#13;
for I := 0 to MSSqlMessages.Count - 1 do
if PDBLibMessage(MSSqlMessages.Items).Severity > EXINFO then
S := S + PDBLibMessage(MSSqlMessages.Items).MsgText + ' '#13;
while MSSqlErrors.Count > 0 do
begin
lErrorEntry := MSSqlErrors.Items[0];
Dispose(lErrorEntry);
MSSqlErrors.Delete(0);
end;
MSSqlErrors.Clear;
while MSSqlMessages.Count > 0 do
begin
lMesageEntry := MSSqlMessages.Items[0];
Dispose(lMesageEntry);
MSSqlMessages.Delete(0);
end;
MSSqlMessages.Clear;
if S <> '' then
raise Exception.Create(S);
end;
- mdaems
- Zeos Project Manager
- Posts: 2766
- Joined: 20.09.2005, 15:28
- Location: Brussels, Belgium
- Contact:
Sorry for the delay, I didn't login for 6 days now...
The thing you show above is NOT a call stack. The piece of code you quote does not contain a call to the failing strchr function. So I can't guess what line exactly it's going wrong. The problem may even be in a lazarus/fpc function that's calling strchr.
Mark
The thing you show above is NOT a call stack. The piece of code you quote does not contain a call to the failing strchr function. So I can't guess what line exactly it's going wrong. The problem may even be in a lazarus/fpc function that's calling strchr.
Mark