[ECOS] sigwait not returning
N.Suresh
nsuresh@cdotb.ernet.in
Thu Jan 30 17:46:00 GMT 2003
Hi,
We tried delivering the signal to a sigwait () call:
*) Using alarm () function --- Working.
*) pthread_kill () function --- Working.
It looks like only in the case of timer_create () case, the sigwait
is not returning.
We traced the call and found that in the following piece of code,
signal_sigwait condition variable's queue is empty.
So it is not calling the broadcast method which will wake the
sigwait thread.
It is releasing the thread, and in next POSIX_ASR call, the
cyg_deliver_signals function is calling _exit because there
is no signal handler registered for this thread.
All these functions are getting called only if i unmask the signal
in the thread before calling the sigwait.
Otherwise the check in the alarm_action function whether thread is
accepting this signal will fail.
Are we on the right path of debugging?
regards
<cut signal.cxx>
sigaddset( &sig_pending, signo );
// Wake up any threads in sigsuspend() and sigwait().
if (!signal_sigwait.get_queue()->empty())
{
signal_sigwait.broadcast();
}
else
{
cyg_posix_pthread_release_thread( &sig_pending );
}
</cut signal.cxx>
N.Suresh wrote:
>>
>>
>> Try this instead:
>>
>> pthread_sigmask (SIG_BLOCK, &set, (sigset_t*)NULL);
>>
>>
>>
> I had tried this before. It didn't work.
> So i tried to unblock all the signals in the thread itself.
>
> If i don't do this, in alarm_action () function, the check whether any
> thread is waiting for the signal is failing and
> it is simply returning.
>
> regards
>
--
!============================================================================!
= Suresh N., Research Engineer, C-DoT, Bangalore. =
= Call me at : OFF: 2383951(Dir) / 2263399 (268) RES: 3334248 =
= Alternate email : nsur_mys@rediffmail.com =
= QOT: Modern man is the missing link between apes and human beings.
!============================================================================!
--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss
More information about the Ecos-discuss
mailing list