[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference clt::cma

Title:DECthreads Conference
Moderator:PTHRED::MARYSTEON
Created:Mon May 14 1990
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:1553
Total number of notes:9541

1446.0. "lib$signal( ) in a thread on OpenVMS Alpha?" by TAEC::BEROUD (Telecom Engineering - MCC maintenance- VBE - Dtn: 828-5244) Wed Dec 04 1996 16:49

T.RTitleUserPersonal
Name
DateLines
1446.1Known problem; fixed with OS support.WTFN::SCALESDespair is appropriate and inevitable.Wed Dec 04 1996 18:2632
1446.2TAEC::BEROUDTelecom Engineering - MCC maintenance- VBE - Dtn: 828-5244Thu Dec 05 1996 09:47164
1446.3It works for me...WTFN::SCALESDespair is appropriate and inevitable.Thu Dec 05 1996 21:1829
1446.4ZIMBRA::BERNARDODave Bernardo, VMS EngineeringThu Dec 05 1996 22:395
1446.5RE: -2 You are right, My IMAGE_MANAGEMENT execlet is older than yours...TAEC::BEROUDTelecom Engineering - MCC maintenance- VBE - Dtn: 828-5244Fri Dec 06 1996 08:0732
1446.6VERY VERY WORRIED ! It works OK even with default condition handling on any thread under OpenVMS ALPHA G7.1TAEC::BEROUDTelecom Engineering - MCC maintenance- VBE - Dtn: 828-5244Fri Dec 06 1996 14:16129
1446.7The example without establishing my own condition handling under T7.1TAEC::BEROUDTelecom Engineering - MCC maintenance- VBE - Dtn: 828-5244Fri Dec 06 1996 14:51107
1446.8It still works for me on V7.0WTFN::SCALESDespair is appropriate and inevitable.Fri Dec 06 1996 16:0255
1446.9ZIMBRA::BERNARDODave Bernardo, VMS EngineeringFri Dec 06 1996 20:329
1446.10Entered this problem as IPMT case CFS.47297 Severity 1 to VMSTAEC::BEROUDTelecom Engineering - MCC maintenance- VBE - Dtn: 828-5244Mon Dec 09 1996 16:0520
1446.11Status updateWTFN::SCALESDespair is appropriate and inevitable.Mon Jan 06 1997 18:2014
1446.12could other lib$signals cause a similar problemNABSCO::RUBENSTEINTue Apr 22 1997 17:4445
I have a situation where a piece of code uses lib$signal with two additional arguments intended for fao. 
The code works as expected (the error message is sent out with all the arguments) on vax vms 6.x and v.7.1. it
also works properly on vax and alpha running vms7.1.
  
Its behavior changes when the same code is run on alpha vms 7.0.  Here the message is sent out without the fao 
arguments, and there is an additional message from cma stating some information was lost. 

The image is linked on a alpha running vms 6.1 there are no code changes or conditional compiles related to the
different vms versions. 

The lib$signal call is implemented as a calls; the fao arguments live in a separate psect for data.

Any Ideas about what is so different in vms7.0 running on an alpha versus 6.2 or 7.1 ?


        .PSECT  RWD,WRT,NOEXE,LONG
	.
	.
filename_d:             .long   0               ; Empty descriptor to use for
                        .long   0               ;  lookup
format_present_flag:    .long   0               ; Flag to indicate presenct
                                                ; of /FORMAT qualifier.
arglist:
        .long 0                 ; number of args
        .long 0                 ; signal
        .long 0                 ; number of fao args
        .address filename_d     ; descriptor
        .long 0                 ; safety


        .PSECT  ROI,NOWRT,EXE,LONG
;
A_REST::
        .if     defined,alpha
        .jsb_entry preserve=<r3,r4,r5,r6,r7>
        .endc
  
	.
	.
	.

        pushal  filename_d
        pushl   #1
        pushl   #SLS$_NOHISTREC
        calls   #3,g^lib$signal
1446.13It's fixed in V7.1, at last.WTFN::SCALESDespair is appropriate and inevitable.Tue Apr 22 1997 21:5728
.12> Any Ideas about what is so different in vms7.0 running on an alpha versus
.12> 6.2 or 7.1 ?

Sure.  What you're seeing on V7.0 in the initial thread is the behavior that has
always been exhibited by created threads prior to V7.1 -- that is, in Alpha V7.0
(and in VAX V7.1), we finally "fixed" the initial thread (via support from the
image activator) so that it's basically just like all of the other threads --
you see the context of the exception at the last point it was re-raised, and the
information gets lost/stripped at the re-raise.

From the perspective of this particular issue, that may not necessarily have
been a step forward.  Nevertheless, in a number of other, overriding ways, it
was a definite improvement.

The unfortunate thing is, there is a TRY/CATCH block in the frame which calls
each thread's start routine (or main() for the initial thread), and prior to
V7.1 this guaranteed that the entire stack was unwound during exception
propagation.  In V7.1, we "fixed" the TRY/CATCH block so that it's only
activated if the exception being raised is a DECthreads internal one.  Thus, the
final context is the point at which the exception was raised, or the last place
it was reraised in application (or some other library) code.

So, if the thread has no TRY/CATCH blocks (other than the now special one in
base frame of the thread stack), a condition signalled with lib$signal or
lib$stop should come through intact, in any thread, as of V7.1.


				Webb