[Info-vax] TCP/IP V5.6 ECO 4 caveat...
Jan-Erik Söderholm
jan-erik.soderholm at telia.com
Wed Nov 4 17:38:52 EST 2009
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 ?
Jan-Erik.
More information about the Info-vax
mailing list