Operating System - OpenVMS
1748036 Members
4666 Online
108757 Solutions
New Discussion юеВ

Re: ovms8.1 Linker lib$signal Traceback

 
SOLVED
Go to solution

ovms8.1 Linker lib$signal Traceback

The ovms8.1 Traceback facility does not give
image /module /routine /line information with
lib$signal or with a FORTRAN Access Violation.
The Debugger seems similarly hobbled.

>> Is this just not yet implemented in 8.1, or
are there settings/workarounds available?

Specifically, on ovms8.1
Program Crash_Test
call sub1( )
End
Subroutine sub1( z )
type *, 'calling lib$signal...'
call lib$signal( %val(0) )
type *, z
Return
End
$ Fortran /obj /lis crash_test /noopt /debug
$ Link /exe /map crash_test /Traceback
$ Run crash_test
calling lib$signal...
%NONAME-W-NOMSG, Message number 00000000
%TRACE-W-TRACEBACK, symbolic stack dump follows

Traceback - Exception frame found. Mechanism vector address 000000007AC06FC0
Traceback - Condition handler called with exception 0000000000000000:
%NONAME-W-NOMSG, Message number 00000000

image module routine line rel PC abs PC
0000000000010180
0000000000010090
FFFFFFFF80947E10
000000007ADEADB0
Traceback - Bottom of call stack
0.0000000E+00
-----------------------------------------------
whereas same code built on ovms7.3 gives
calling lib$signal...
%NONAME-W-NOMSG, Message number 00000000
%TRACE-W-TRACEBACK, symbolic stack dump follows
image module routine line rel PC abs PC
CRASH_TEST CRASH_TEST SUB1 7 ...
CRASH_TEST CRASH_TEST CRASH_TEST 2 ....
...
4 REPLIES 4
Craig A Berry
Honored Contributor
Solution

Re: ovms8.1 Linker lib$signal Traceback

This appears to be something they are working on. The testdrive system from testdrive.hp.com, which I believe is at some internal release between 8.1 and 8.2, shows a stack dump but not the routine names or line numbers (see below). It may well be that the compilers will need another tweak to record the appropriate information for the traceback handler to find, but that's just speculation.

$ r crash_test
calling lib$signal...
%NONAME-W-NOMSG, Message number 00000000
%TRACE-W-TRACEBACK, symbolic stack dump follows
image module routine line rel PC abs PC
CRASH_TEST 0 0000000000010170 0000000000010170
CRASH_TEST 0 0000000000010080 0000000000010080
0 0000000000000000 FFFFFFFF80B38AB0
0 0000000000000000 000000007AD4FE90
%SYSTEM-F-ACCVIO, access violation, reason mask=00, virtual address=0000000000000000, PC=0000000000010170, PS=0000001B
%TRACE-F-TRACEBACK, symbolic stack dump follows
image module routine line rel PC abs PC
CRASH_TEST 0 0000000000010170 0000000000010170
CRASH_TEST 0 0000000000010080 0000000000010080
0 0000000000000000 FFFFFFFF80B38AB0
0 0000000000000000 000000007AD4FE90
Ian Miller.
Honored Contributor

Re: ovms8.1 Linker lib$signal Traceback

exception handling has been rewritten in iVMS due to the different calling standard etc. You will find later versions are better at this.
____________________
Purely Personal Opinion
John Gillings
Honored Contributor

Re: ovms8.1 Linker lib$signal Traceback

Charles,

On Itanium systems even something as fundamental as the concept of a "PC" has changed. Compilers, DEBUG, exception handling and all that stuff has to change accordingly. There's also been an issue that the Intel object language doesn't have provision for source line correlation as we know it (which is what TRACE uses to generate detailed traceback information).

This is being (very) actively worked. You will see full traceback information eventually, but I don't think anyone's in a position to make any promises at the moment.
A crucible of informative mistakes

Re: ovms8.1 Linker lib$signal Traceback

Thanks to Craig, Ian, John.
I look forward to the vms8.2 release.
So far, my rx2600 seems to be doing pretty
well with a range of physics simulation programs written in standard Fortran...
Also, for a little shop in academia, it's heartening to see such a healthy VMS forum.
Cheers...
Charles Driscoll