[Info-vax] TCP/IP V5.6 ECO 4 caveat...

VAXman- at SendSpamHere.ORG VAXman- at SendSpamHere.ORG
Wed Nov 4 17:59:59 EST 2009


In article <0onIm.12656$U5.185654 at newsb.telia.net>, =?ISO-8859-1?Q?Jan-Erik_S=F6derholm?= <jan-erik.soderholm at telia.com> writes:
>VAXman- @SendSpamHere.ORG wrote:
>> I've looked at two Alpha crashes today.  Both were the results of kernel
>> code that accesses telnet devices.  The problem seems to be that a TCPIP
>> ECO (TCPIP V5.6 ECO4) trounces on R4 when calling IOC$SEACTHDEV.  Below
>> is the comment header from the source listings for this routine.  I took
>> the liberty of deleting the listing lines so that this will fit into 80
>> columns.
>> 
>> ;+
>> ;
>> ; IOC$SEARCH - general I/O database search
>> ; IOC$SEARCHDEV - search for specific physical device
>> ; IOC$SEARCHALL - generic search for any device
>> ;
>> ; This routine searches the I/O database for the specified device, using
>> ; the specified search rules. Depending on the search, a lock may or may
>> ; not be taken out on the device when it is found.
>> ;
>> ; INPUTS:
>> ;
>> ;       R1 = address of descriptor of device / logical name string
>> ;       R2 = flags
>> ;       R3 = address to store lock value block
>> ;       I/O database mutex held, IPL 2
>> ;
>> ; OUTPUTS:
>> ;
>> ;       R0 = SS$_NORMAL - device found
>> ;          = SS$_ACCVIO - name string is not readable
>> ;          = SS$_NONLOCAL - nonlocal device
>> ;          = SS$_IVLOGNAM - invalid logical name (e.g., too long)
>> ;          = SS$_TOOMANYLNAM - max. logical name recursion exceeded
>> ;          = SS$_IVDEVNAM - invalid device name string
>> ;          = SS$_NOSUCHDEV - device not found
>> ;          = SS$_NODEVAVL - device exists but not available according to rules
>> ;          = SS$_DEVALLOC - device allocated to other user
>> ;          = SS$_NOPRIV - failed device protection
>> ;          = SS$_TEMPLATEDEV - can't allocate template device
>> ;          = SS$_DEVMOUNT - device already mounted
>> ;          = SS$_DEVOFFLINE - device marked offline
>> ;       R1 = UCB
>> ;       R2 = DDB
>> ;       R3 = system block
>> ;       R4 - R11 preserved
>> ========^^================ Don't you believe it!
>> ;
>> ;       Note: If failure, R1 - R3 point to the last structures looked at.
>> ;
>> ;       R2 and R3 are input only to IOC$SEARCH.
>> ;
>> ;       IOC$SEARCHDEV:  R2 = IOC$M_PHY ! IOC$M_ANY
>> ;                       R3 = 0
>> ;       IOC$SEARCHALL:  R2 = IOC$M_ANY ! IOC$M_LOCAL
>> ;                       R3 = 0
>> ;
>> ;-
>> 
>> The crashes occurred after calling IOC$SEARCHDEV with a telnet device and
>> then accessing the PCB which should have been preserved in R4 across this
>> call according to the documentation.  This particular bit of code has been
>> in production for decades and only with installation of TCPIP V5.6 ECO 4
>> has there been any issue.  I've fixed the code by preserving R4 across the
>> IOC$SEARCHDEV.  This problem only occurs when accessing TCPIP devices and
>> not with any other terminal device.
>> 
>> Just a heads up!
>> 
>
>Is this only happening when using self-written code that calles
>this routines ? Or have you seen this when using the usual DCL
>interfaces to TCPIP/Telnet ? That is "telnet create", "telnet
>delete" and so on ?

It's in a piece of kernel code I maintain.  The point is that the register
gets trounced on after installing this ECO patch.

-- 
VAXman- A Bored Certified VMS Kernel Mode Hacker    VAXman(at)TMESIS(dot)ORG

  http://www.quirkfactory.com/popart/asskey/eqn2.png
  
  "Well my son, life is like a beanstalk, isn't it?"



More information about the Info-vax mailing list