[Search for users]
[Overall Top Noters]
[List of all Conferences]
[Download this site]
Title: | Parallel Processing Run Time Library Discussions |
|
Moderator: | WTFN::SCALES |
|
Created: | Tue Jun 16 1987 |
Last Modified: | Wed May 21 1997 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 208 |
Total number of notes: | 920 |
207.0. "PPL process HIBERNATES - ungrab_marker_ problem" by CSC32::D_SANFORD () Wed Feb 19 1997 14:18
PPL, OpenVMS Alpha any version
Customer has an application which uses PPL$CREATE_WORK_QUEUE along with
PPL$REMOVE_WORK_ITEM and PPL$INSERT_WORK_ITEM. Normally this works as
expected, but once a week (once every 2 billion iterations) one of his
processes will go into hibernation (HIB) and never wake up. From
looking at the PPL sources on the shareware he believes he found a
condition whereby MACRO "ungrab_marker_" may be performing a testbitcci
at a time where another process can write to the same location.
He tried to modify the source himself, but it appears some of the
necessary files are missing.
The customer needs to know if engineering can make this change or if
they can provide the additional files required for PPL.
Is PPL officially retired? I hope the answer is YES.
Regards, Drew Sanford
From file PPLLIB.REQ
macro
!+
! Macro to ungrab a marker for a queue
!-
ungrab_marker_(q) =
begin
while
insq_busy_(insqti(q[mkr_l_flink], ppl$$gl_pplsect[pplsect_q_mkrs]))
do 0;
testbitcci(q[mkr_v_valid]);
end %;
Customer believes that the correct code would be as follows. He believes
you need exclusive access to "testbitcci(q[mkr_v_valid])", doing it after
the while allows others access to q[mkr_v_valid] sometimes giving
incorrect results.
He belives this is the correct way:
macro
!+
! Macro to ungrab a marker for a queue
!-
ungrab_marker_(q) =
begin
testbitcci(q[mkr_v_valid]);
while
insq_busy_(insqti(q[mkr_l_flink], ppl$$gl_pplsect[pplsect_q_mkrs]))
do 0;
end %;
T.R | Title | User | Personal Name | Date | Lines
|
---|