Hi Chris
This may be fixed in the latest snapshot, which I'm generating right now.
I checked out the source from CVS re-built and the fix you have made does
fix my reported problem.
Unfortunately it has uncovered another issue, I wonder if you could give
some advice.
I have made my own (local) changes to some of the cygwin sources in order
to be able to provide the
'context' to 'sigaction' when an exception occurs (file diffs.txt attached).
This appears to work fine except for the case when SIGALRM occurs.
it appears that for SIGALRM neither the _cygtls::call_signal_handler nor
the _cygtls::handle_exceptions
get involved - is this correct ?
when my signal handler for the alarm is called I cannot get the context, it
has clearly come through a
different path. What I need to do is change the cygwin code so that the
context is saved when the SIGALRM
occurs, in the same way it is for my other exceptions
All suggestions welcome
Thx
Lee
Index: cygwin/exceptions.cc
===================================================================
RCS file: /cvs/src/src/winsup/cygwin/exceptions.cc,v
retrieving revision 1.279
diff -r1.279 exceptions.cc
34a35,37
> // IMPERAS
> #include <stdio.h>
>
457a461,462
> // IMPERAS
> si.si_context = (void *) in;
1314c1319,1320
< sigact (thissig, &thissi, NULL);
---
> // IMPERAS
> sigact (thissig, &thissi, (void *)thissi.si_context);
Index: cygwin/include/cygwin/signal.h
===================================================================
RCS file: /cvs/src/src/winsup/cygwin/include/cygwin/signal.h,v
retrieving revision 1.11
diff -r1.11 signal.h
10a11
>
98c99,105
< void *si_addr; /* faulting address */
---
> struct
> {
> void *si_addr; /* faulting address */
> /* IMPERAS Register Window access */
> void *si_context; /* context pointer */
> };
>
99a107
>
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/