Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-pascal / 2017-01

Stack trace different for Windows and Linux

3 messages · 2 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Terry Mead

Gentlemen,
I'm a new poster to the mail list. I have a problem logging call stack trace info following an exception.
The following simple program generates a divide by zero error.

PROGRAM Test;
VAR i, j, k : Integer;
PROCEDURE test1;
    BEGIN
      i := i - 1;
      k := j DIV i;
    END; {test}
PROCEDURE test2;
    BEGIN
      test1;
    END; {taskProc}
BEGIN
   i := 1; j := 1;
   test2;
END.

When compiled and run under Windows it generates the stack trace: Runtime error 200 at $00401404
$00401404 TEST1, line 6 of test.pas
$00401428 TEST2, line 11 of test.pas
$00401451 main, line 16 of test.pas
$004077D1

Which is what you would expect. When compiled and run on an ARM processor under Linux (Debian Jessie) it generates the stack trace: Runtime error 200 at $000101AC
$000101AC TEST2, line 11 of test.pas
$000101E0 main, line 16 of test.pas
$00010118

Ie. it does not contain the reference to the actual line which caused the problem. The first entry is to the return address of the faulting procedure.

The same compile options are used for both and include the -gl option. FPC version is 2.6.4.

Anyone have any idea why this happens or more usefully how the Linux result can be fixed ?

Thanks,
Terry

---
This email has been checked for viruses by Avast antivirus software. https://www.avast.com/antivirus

Jonas Maebe
to Terry Mead
Terry Mead wrote 20 lines
When compiled and run under Windows it generates the stack trace: Runtime error 200 at $00401404 $00401404 TEST1, line 6 of test.pas $00401428 TEST2, line 11 of test.pas $00401451 main, line 16 of test.pas $004077D1 Which is what you would expect. When compiled and run on an ARM processor under Linux (Debian Jessie) it generates the stack trace: Runtime error 200 at $000101AC $000101AC TEST2, line 11 of test.pas $000101E0 main, line 16 of test.pas $00010118 Ie. it does not contain the reference to the actual line which caused the problem. The first entry is to the return address of the faulting procedure. The same compile options are used for both and include the -gl option. FPC version is 2.6.4.

Did you also compile both with -O-? That said, ARM is a lot better tested in FPC 3.0 than in 2.6.4, so you may want to try upgrading to that version in case -O- doesn't help.

Jonas

Terry Mead
to Jonas Maebe

Jonas - -O- option didn't do any different but I did bite the bullet and upgrade to 3.0 which does solve the problem.
Thanks.

Jonas Maebe wrote 33 lines
On 23/01/17 10:17, Terry Mead wrote: > When compiled and run under Windows it generates the stack trace: > Runtime error 200 at $00401404 > $00401404 TEST1, line 6 of test.pas > $00401428 TEST2, line 11 of test.pas > $00401451 main, line 16 of test.pas > $004077D1 > > Which is what you would expect. When compiled and run on an ARM > processor under Linux (Debian Jessie) it generates the stack trace: > Runtime error 200 at $000101AC > $000101AC TEST2, line 11 of test.pas > $000101E0 main, line 16 of test.pas > $00010118 > > Ie. it does not contain the reference to the actual line which caused > the problem. The first entry is to the return address of the faulting > procedure. > > The same compile options are used for both and include the -gl option. > FPC version is 2.6.4. Did you also compile both with -O-? That said, ARM is a lot better tested in FPC 3.0 than in 2.6.4, so you may want to try upgrading to that version in case -O- doesn't help. Jonas _______________________________________________ fpc-pascal maillist - http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

---
This email has been checked for viruses by Avast antivirus software. https://www.avast.com/antivirus