Operating System - OpenVMS
1753761 Members
4927 Online
108799 Solutions
New Discussion

Re: RX2800 - Clean shutdown of OpenVMS when power button tapped.

 
Volker Halle
Honored Contributor

Re: RX2800 - Clean shutdown of OpenVMS when power button tapped.

Brian,

 

just add a couple of SHOW SYMB P1 up to SHOW SYMB P7 into the beginning of SYS$SYSTEM:SHUTDOWN.COM and press the Power button again...

 

Or $ DEFINE/SYSTEM SHUTDOWN$VERIFY TRUE

 

The actual shutdown command and parameters strings are nearly impossible to find in SYS$SMHANDLER.EXE

 

Volker. 

John Gillings
Honored Contributor

Re: RX2800 - Clean shutdown of OpenVMS when power button tapped.

Brian,

 

   You've discovered the weakest part of OpenVMS - shutdown and startup. For most folk the time between startups and shutdowns is measured in years, so startups almost never get debugged properly. Looks like you've found a rather basic typo in this new feature (that no one else has ever heard of?)

 

  First step, report the bug to HP, including a reference to this thread. Chances are they will refuse to fix it, claiming that "some people may be dependent on the bug" - these days most of the "engineering" done is in manufacturing excuses to not fix things that are clearly and unarguably bugs.

 

   Since the buggy line is inside an image, the best way to get around it is to make your own SHUTDOWN.COM. Make a copy of the original, calling it REAL_SHUTDOWN.COM and write your own SYS$COMMON:[SYSEXE]SHUTDOWN.COM

 

Two approaches, first is to unconditionally shutdown your application and pass the parameters to the real routine. For example

 

 

SYS$COMMON:[SYSEXE]SHUTDOWN.COM

$ real=F$PARSE("REAL_SHUTDOWN",";",F$ENVIRONMENT("PROCEDURE"))
$ @dev:[dir]MY_APPLICATION_CLEAN_SHUTDOWN
$ @'real' "''p1'" "''p2'" "''p3'" "''p4'" "''p5'" "''p6'" "''p7'" "''p8'"


 

Another is to recognise the buggy parameter list and correct it in line. Any other set of parameters is passed through directly. For example:  (assuming you agree with Volker's parameters):

 

SYS$COMMON:[SYSEXE]SHUTDOWN.COM

$ real=F$PARSE("REAL_SHUTDOWN",";",F$ENVIRONMENT("PROCEDURE"))
$ IF p1.EQS.2.AND.p2.EQS."YES".AND.p3.EQS."NO".AND.p4.EQS."LATER".AND.p5.EQS."NO".AND.p6.EQS."POWER_OFF" 
$ THEN 
$   @'real' 2 YES NO YES LATER NO POWER_OFF
$ ELSE
$   @'real' "''p1'" "''p2'" "''p3'" "''p4'" "''p5'" "''p6'" "''p7'" "''p8'"
$ ENDIF 


 

Add your application shutdown to SYSHUTDWN.COM

 

You'll need to remember to save and restore your customised version of SHUTDOWN.COM when the system is upgraded or patched.

 

The first approach means you can be sure your application will be shutdown REGARDLESS of parameters. This may make sense in your case. The second means that if HP pulls their finger out and fixes the bug, all you need do is restore the default SHUTDOWN.COM.

 

Good Luck!

A crucible of informative mistakes
Hoff
Honored Contributor

Re: RX2800 - Clean shutdown of OpenVMS when power button tapped.

>Since the buggy line is inside an image, the best way to get around it is to make your own SHUTDOWN.COM. Make a copy of the original, calling it REAL_SHUTDOWN.COM and write your own SYS$COMMON:[SYSEXE]SHUTDOWN.COM

 

Another option: patch the image to invoke something called DOWNSHUT.COM or such, fix the parameter settings in your DOWNSHUT.COM, and invoke the real SHUTDOWN.COM from there.  Keeping the same number of characters in the name makes the patch (far) easier.

 

If you're so included, use xxd, find and wack the string, xxd back, check the file attributes, and Bob's Your Uncle.

 

Or PATCH /ABSOLUTE works.

 

There's very little (no?) documentation on this button-based power shutdown feature anywhere obvious in the VMS manuals, so whether this is even considered supported could be open to discussion.

Brian Reiter
Valued Contributor

Re: RX2800 - Clean shutdown of OpenVMS when power button tapped.

Hmmm, I'm not sure there is a bug, or at least not in the IA64 version of OpenVMS. The parameters geting passed through to SHUTDOWN.COM are:

 

1  0

2  %SMHANDLER-I-SHUTDOWN, HP Integrated Lights Out, shutdown activated

3  YES

4   NO
5  LATER

6  NO

7  POWER_OFF

8

 

Which looks to be valid. So tweaking SHUTDOWN.COM to trigger a specific site shutdown if the P2 parameter contains the text  "HP Integrated Lights Out " would be a quick solution. A bit of a hack though. 

 

So, are there any clues on how the SMHANDLER communicates with the ILO? Pity there isn't an interface akin to $SET_SYSTEM_EVENT.

 

I have suggested to the Office of OpenVMS Programs that it may be useful to allow the users to hook into this method of doing a system shutdown.

Volker Halle
Honored Contributor

Re: RX2800 - Clean shutdown of OpenVMS when power button tapped.

Brian,

 

thanks for providing this information. This indicates, that the parameters of the shutdown invocation (inside SYS$SMHANDLER.EXE) have been fixed in one of the recent versions of OpenVMS (my example was from V7.3-1).

 

P4 is still NO, which means SYSHUTDWN.COM will not be executed.

 

As mentioned by Hoff, your (V8.4) SHUTDOWN.COM should be calling SYSHUTDWN_0010.COM, that would be a supported way to attempt to modify the shutdown behaviour.

 

SYS$SMHANDLER will assign a channel to SMA0: and queue an IO$_ACPCONTROL read with an AST. The AST will fire, after SMDRIVER receives an 'environmental interrupt'.

 

Volker.