frigo@cernvax.UUCP (frigo) (06/02/86)
Re: Propagation of exceptions from tasks
Can anyone help me with this problem? It must e[Dbe a programming
error, but I can't find it...
The main procedure instantiates a package TASK_PAK, generic on
the number of tasks to be created. TASK_PAK declares an array
of records containing each a task component. The task body is
S[Dseparate(TASK_PAK).
Each task has an exception handler of the form
when OTHERS =>
raise TASK_CH[DRASHED;
After starting all the tasks (they have an entry START) the main
procdu[D[Dedure goes in a loop in which it performs a selective entry
call to another task[D[D[D[D[D[D[D[D[D[D[D[D[D[CANOTHER task. The main procedure loop looks like this:
begin
loop
select
KEYBOARD.WAIT_FOR_SHUTDW[DOWN;
...
exit;
else
delay 1 * SECS;
end loop;
[Dexception
when TASK_CRASHED =>
...
end;
Usin[D[D[D[DUsing the VAX/Ada de[D[D[D[D[D[D[D[D[D[Ddebugger under VAX/VMS, I can see the exception raisd[Ded
in one of the task being intercepted by the task excepion handler
and raised again as TASK_CRASHED. However, the main program
stays de[D[DDELAYed on the selective entry call, and its exception
handler is not executed. Why???
--
G. Vittorio FRIGO,
C.E.R.N., CH - 1211 Geneva 23, Switzerland