Lazarus
Programming => General => Topic started by: cai on July 14, 2020, 12:34:32 pm
-
I create a project, put a button and memo, compile with aarch64-linux, when I startup, raise exception: EReadError, Error reading Form1.Height: Access violation.
I think there are some error in TReader.ReadData or res-data(lfm after compile)? now I need to edit & debug TReader to fix it, is there a short way?
-
A quick fix sometimes can be running under gdb
gdb ./project1
and when an exception happens, type
bt
to get a backtrace
-
A quick fix sometimes can be running under gdb
gdb ./project1
and when an exception happens, type
bt
to get a backtrace
thanks! here is backtrace
=========================
(gdb) run
Starting program: /home/uos/Desktop/Winuim/project1
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
Program received signal SIGSEGV, Segmentation fault.
0x00000000005a8114 in CONTROLS$_$TCONTROL_$__$$_FOREIGNANCHORSIDECHANGED$TANCHORSIDE$TANCHORSIDECHANGEOPERATION ()
(gdb) bt
#0 0x00000000005a8114 in CONTROLS$_$TCONTROL_$__$$_FOREIGNANCHORSIDECHANGED$TANCHORSIDE$TANCHORSIDECHANGEOPERATION ()
#1 0x000000000077527c in IMGLIST$_$TCUSTOMIMAGELIST_$__$$_SETHEIGHT$LONGINT ()
#2 0x000000000053aac0 in TYPINFO_$$_SETORDPROP$TOBJECT$PPROPINFO$INT64 ()
#3 0x00000000005004d8 in CLASSES$_$TREADER_$__$$_READPROPVALUE$TPERSISTENT$POINTER ()
#4 0x00000000004ffe40 in CLASSES$_$TREADER_$__$$_READPROPERTY$TPERSISTENT ()
#5 0x00000000004ff204 in CLASSES$_$TREADER_$__$$_READDATA$TCOMPONENT ()
#6 0x00000000004f3950 in CLASSES$_$TCOMPONENT_$__$$_READSTATE$TREADER ()
#7 0x00000000005aa2fc in CONTROLS$_$TCONTROL_$__$$_READSTATE$TREADER ()
#8 0x0000000000500c94 in CLASSES$_$TREADER_$__$$_READROOTCOMPONENT$TCOMPONENT$$TCOMPONENT ()
#9 0x00000000006b1b54 in LRESOURCES$_$INITLAZRESOURCECOMPONENT$TCOMPONENT$TCLASS$$BOOLEAN_$$_INITCOMPONENT$TCLASS$$BOOLEAN ()
#10 0x00000000006b1934 in LRESOURCES_$$_INITLAZRESOURCECOMPONENT$TCOMPONENT$TCLASS$$BOOLEAN ()
#11 0x00000000006a9118 in LRESOURCES_$$_INITRESOURCECOMPONENT$TCOMPONENT$TCLASS$$BOOLEAN ()
#12 0x0000000000499f7c in FORMS$_$TCUSTOMFORM_$__$$_PROCESSRESOURCE ()
#13 0x0000000000499e10 in FORMS$_$TCUSTOMFORM_$__$$_CREATE$TCOMPONENT$$TCUSTOMFORM ()
#14 0x000000000049cfcc in FORMS$_$TFORM_$__$$_CREATE$TCOMPONENT$$TFORM ()
--Type <RET> for more, q to quit, c to continue without paging--ret
formal ()
#16 0x000000000045f0f8 in main () at project1.lpr:18
=====================================
messages without gdb
./project1
[FORMS.PP] ExceptionOccurred
Sender=EReadError
Exception=Error reading Form1.Height: Access violation
Stack trace:
$00000000004FFF74
$00000000004F3950
$00000000005AA2FC
$0000000000500C94
$00000000006B1B54
$00000000006B1934
$00000000006A9118
$0000000000499F7C
$0000000000499E10
$000000000049CFCC
$00000000004A7184
$000000000045F0F8 main, line 18 of project1.lpr
$0000FFFFAF805D24
$000000000045EFC8
TApplication.HandleException Error reading Form1.Height: Access violation
Stack trace:
$00000000004FFF74
$00000000004F3950
$00000000005AA2FC
$0000000000500C94
$00000000006B1B54
$00000000006B1934
$00000000006A9118
$0000000000499F7C
$0000000000499E10
$000000000049CFCC
$00000000004A7184
$000000000045F0F8 main, line 18 of project1.lpr
$0000FFFFAF805D24
$000000000045EFC8
-
Looks to me that setting a property (height) via setheight triggers an anchor property change that should have been under csloading?
I'm no LCL/VCL expert though, but this is not in the streaming, but in the classes reacting wrongly to it.
-
Looks to me that setting a property (height) via setheight triggers an anchor property change that should have been under csloading?
I'm no LCL/VCL expert though, but this is not in the streaming, but in the classes reacting wrongly to it.
thank,
according to InitLazResourceComponent:
begin
if Instance.ComponentState * [csLoading, csInline] <> []
then begin
// global loading not needed
Result := InitComponent(Instance.ClassType);
end
else try
BeginGlobalLoading;
Result := InitComponent(Instance.ClassType);
NotifyGlobalLoading;
finally
EndGlobalLoading;
end;
end;
is csloading still need to be set?
i think this log is problem too,
#1 0x000000000077527c in IMGLIST$_$TCUSTOMIMAGELIST_$__$$_SETHEIGHT$LONGINT ()
#2 0x000000000053aac0 in TYPINFO_$$_SETORDPROP$TOBJECT$PPROPINFO$INT64 ()
at this time, the classname of SETHEIGHT should be TForm? Imagelist properties is not in the lfm-resource.
besides, this version of fpc src, I have compiled to x86_64-ubuntu, mipsel-linux with the same project, and is no problem.
so I guess maybe aarch64 rtti-typesize-process or something error? console-application is no problem too.
-
besides, this version of fpc src, I have compiled to x86_64-ubuntu, mipsel-linux with the same project, and is no problem.
so I guess maybe aarch64 rtti-typesize-process or something error? console-application is no problem too.
Are you using FPC 3.2 or trunk?
-
maybe I found a way to edit&debug rtl-classes now.
1) copy sub-files fo 'fpcsrc\rtl\objpas\classes' to the root-dir of project
2) copy fpcsrc\rtl\unix\classes.pp, tthread.inc to the root-dir of project
3) now i can edit&compile the files of classes.pp
just like in delphi.
-
besides, this version of fpc src, I have compiled to x86_64-ubuntu, mipsel-linux with the same project, and is no problem.
so I guess maybe aarch64 rtti-typesize-process or something error? console-application is no problem too.
Are you using FPC 3.2 or trunk?
i am using codetyphon, i think it is a modification of FPC, this is the message of codetyphon
================================
This is a modification of Freepascal (FPC) Source
version 3.1.1 SVN trunk Rev 35374
-
i am using codetyphon, i think it is a modification of FPC, this is the message of codetyphon
================================
This is a modification of Freepascal (FPC) Source
version 3.1.1 SVN trunk Rev 35374
You should test with either 3.2 or Trunk then, cause it could be that some work on RTTI broke things temporarily, but I definitely won't investigate that in some old, inbetween version.
-
i am using codetyphon, i think it is a modification of FPC, this is the message of codetyphon
================================
This is a modification of Freepascal (FPC) Source
version 3.1.1 SVN trunk Rev 35374
You should test with either 3.2 or Trunk then, cause it could be that some work on RTTI broke things temporarily, but I definitely won't investigate that in some old, inbetween version.
ok, i found CodeTyphon is using version 3.3.1 FPC now, i will test it.
This is a modification of Freepascal (FPC) Source
version 3.3.1 SVN trunk
-
i am using codetyphon, i think it is a modification of FPC, this is the message of codetyphon
================================
This is a modification of Freepascal (FPC) Source
version 3.1.1 SVN trunk Rev 35374
You should test with either 3.2 or Trunk then, cause it could be that some work on RTTI broke things temporarily, but I definitely won't investigate that in some old, inbetween version.
test ok with FPC 3.3.1
-
test ok with FPC 3.3.1
Thought so ;)