[Info-vax] hung program location

Hein RMS van den Heuvel heinvandenheuvel at gmail.com
Wed Feb 20 09:46:58 EST 2013


On Tuesday, February 19, 2013 9:48:44 AM UTC-5, Tom Adams wrote:
> On Feb 19, 8:54 am, Stephen Hoffman <seaoh... at hoffmanlabs.invalid>
> 
> wrote:
> 
> > On 2013-02-19 13:26:44 +0000, Tom Adams said:
> 
> >
> 
> > > The PC is 80141918 (as shown on show proc/cont)
> > > The process is in HIB when it's at that address.

So we established that this is normal, as it is in SYS$HIBER

> There are no direct $hiber or $wait calls, but I use lib$wait to cause brief  pauses.

$ help rtl lib$ lib$wait
:
           LIB$WAIT  seconds [,flags] [,float-type]

         The Wait a Specified Period of Time routine places the current
         process into hibernation for the number of seconds specified in
         its argument.

This confirms what others have notes (Brian), that LIB$WAIT uses HIBER/WAKE
But wait (sic) there is more...

arguments...

        flags
           Bit    Value          Description

           0      LIB$K_NOWAKE   LIB$WAIT will not wake in the case of an
                                 interrupt.

           This is an optional argument. If omitted, the default is 0, and
           LIB$WAIT will wake in the case of an interrupt.

This flag is there to acknowledge there can be issues with the hiber/wake method and I have other notes suggesting that it threaded/AST applications may have trouble. Those should set this flag to 1 to request simple event flag waits, resulting in the process waiting in LEF state, not HIB.

In you position I would prepare a little utility to implement a $WAKE request for pid(s) provided on the command line (let us know if you need help with that)

Even though you have a hard time reproducing, I would just set that NO_WAKE flag on the LIB$WAIT call and hope for the best.

Good luck!
Hein.



More information about the Info-vax mailing list