comp.lang.ada
 help / color / mirror / Atom feed
From: Lutz Donnerhacke <lutz@iks-jena.de>
Subject: Re: Signal handler blocks proteced type
Date: Fri, 26 Mar 2004 10:00:13 +0000 (UTC)
Date: 2004-03-26T10:00:13+00:00	[thread overview]
Message-ID: <slrnc67vpd.m2.lutz@taranis.iks-jena.de> (raw)
In-Reply-To: slrnc664b5.nt.lutz@taranis.iks-jena.de

* Lutz Donnerhacke wrote:
> A protected type with a signal handler is instantiated in order to catch a
> signal. If the signal is not catched, everything works fine. If the signal
> was delivered, the inner scope will not be terminated, because the protected
> type can not be finalized.
>
> Why?

Ada.Interrupts.Detach_Handler is broken. It does not return if the signal
was delivered.

Changing the example to 'pragma Interrupt_Handler' and an explicit
Attach_Handler works fine (termination of the enviroment task succeeds).

Any call to Detach_Handler after a signal delivery results in a blocking
runtime call.

 select
    delay 2.0;
 else abort
    Detach_Handler(SIGHUP);
 end select;

does not work. Even an Abort_Task call from an other task has no effect.

The runtime (Linux-Threads) seems to miss an SIGCHILD and waits forever for
the wrong clone.



  reply	other threads:[~2004-03-26 10:00 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-03-25 17:05 Signal handler blocks proteced type Lutz Donnerhacke
2004-03-26 10:00 ` Lutz Donnerhacke [this message]
2004-03-26 17:12   ` Florian Weimer
2004-03-27 17:45     ` Simon Wright
2004-03-27 23:38       ` Florian Weimer
2004-03-28 10:27         ` Simon Wright
  -- strict thread matches above, loose matches on Subject: below --
2004-03-25 17:03 Lutz Donnerhacke
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox