HP OpenVMS Systems

ask the wizard
Content starts here

Asychronous code (ASTs) and mailboxes?

» close window

The Question is:

Question about QIO where AST aborts and next QIO has "invalid channel"
In some high load situations when the ast executes, it aborts with
 SYSTEM-F-ABORT. The next call to QIO returns with SYSTEM-F-IVCHAN (the channel
 number is not changed).
Since the mailbox affected is the in-mailbox to the routing process in our
 application, the application will stop working. An attempted workaround is to
 assign a new channel to the mailbox and perform the QIO again. The system
 seems to be working OK, exce
pt that the AST reports that the IOSB is not set for some signals. (May this
 imply that the AST starts execution without a message in the mailbox?)
The code is about 15 years, have not seen this before.
Any hints about the cause of the abort/invalid channel?
Why is there problems with the workaroun?

The Answer is :

  Latent problems have been found that are older than 15 years, and
  this code has clearly seen at least some changes in the last 15 years
  if just as part of a move over to the OpenVMS Alpha platform.  Faster
  processors, timing differences between uniprocessor and SMP systems,
  and increased loads are classic triggers for lurking coding problems
  and asynchronous- and timing-related bugs.
  Please see topic 1661 for a list of the usual sorts of problems that
  can lurk within asynchronous source code.
  Obvious areas to check would be around the $qio call, as well as
  around all of the related arguments and variables, the variable(s)
  associated with the channel numbers, as well as the storage allocation
  involved with the asynchronous activies.
  Also of interest would be the usual protocol(s) and traffic patterns
  for the mailboxes -- for instance, a single bi-directional mailbox is
  often rather harder to correctly code (particularly the turn-around)
  than are pairs of uni-directional mailboxes.  The OpenVMS Wizard
  prefers to use a unique mailbox to contain messages incoming into
  each process within the application, thus only one process is reading
  from the mailbox.  One or more processes can be writing into the
  mailbox(es), of course.
  Please contact the Compaq Customer Support Center, as access to the
  source code will likely be required.

answer written or last revised on ( 11-OCT-2000 )

» close window