[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