This is the mail archive of the
mailing list for the Cygwin project.
Re: Problem suspending Cygwin-based GDB from Eclipse/CDT (and some findings)
- From: Stefan Bylund <steby at enea dot se>
- To: cygwin at cygwin dot com
- Date: Mon, 03 Dec 2007 18:03:18 +0100
- Subject: Re: Problem suspending Cygwin-based GDB from Eclipse/CDT (and some findings)
- References: <47541AFA.firstname.lastname@example.org>
I got a response on my cross-post to the CDT mailing list from Doug
Schaefer, the CDT lead, where he said that the SIGINT handling in Cygwin
changed sometime last year and that there are newer builds of CDT 3.2.1
that has adapted to the new of handling SIGINTs in Cygwin. I tried it
and it works :)
So, I guess we can close this issue.
Stefan Bylund wrote:
We have a source code debug solution based on Eclipse / CDT / GDB /
GCC / Cygwin DLL. We are using Eclipse 3.2.2 / CDT 3.1.2 / GDB 6.3 /
GCC 3.4.4 / Cygwin DLL 1.5.19-4 (cygwin1.dll).
Until now, we have only supported Windows XP but recently we were
forced to upgrade to a newer version of the cygwin1.dll (1.5.24-2)
since we had to support Windows Vista, and Cygwin-based GCCs didn't
work correctly with cygwin1.dll 1.5.19-4 on Windows Vista due to heap
errors in cygwin1.dll. However, GDB works fine with cygwin1.dll
1.5.19-4 on Windows Vista.
Unfortunately, I just discovered that suspending GDB from Eclipse/CDT
no longer works. So I tried all versions of the cygwin1.dll from
1.5.19-4 to the forthcoming 1.5.25-3 and found that starting from
version 1.5.20-1, the signal handling in cygwin1.dll seems to have
changed in such a way that suspending GDB from Eclipse/CDT no longer
works. Note that versions before 1.5.19-4 of the cygwin1.dll also
works correct with respect to suspending GDB from Eclipse/CDT.
By searching the cygwin mailing list, it seems that it is a general
problem when trying to programatically send a SIGINT from one process
to another process.
I looked at the cygwin change list from 1.5.19-4 to 1.5.20-1
noticed the following signal-related changes:
* cgf: When sending signals, assume that any code which is not directly
associated with a DLL or an executable is user code.
* cgf: Pass cygwin signals to gdb. Fix the dreaded SIGSEGV found in some
* corinna: Implement sigignore and sigset.
* cgf: Make SA_RESTART sigaction flag work more like linux.
It seems that one or more of the changes listed above (or some other
change(s) described in
http://cygwin.com/ml/cygwin-announce/2006-07/msg00000.html) is the
cause of this problem. It is a bit ironic that one of the changes
mentions passing cygwin signals to gdb since it is exactly this
functionality that is now broken but, from our experience, worked in
I'm cross posting this mail to the CDT mailing list as well, since
there may be other Eclipse/CDT users interested in this issue.
Is there anything I can do to help in finding out why versions
starting from 1.5.20-1 of the cygwin1.dll no longer supports
programatically sending a SIGINT from one process to another? If
nothing else, I can at least help out with testing.
Senior Software Engineer
Box 1033, SE-164 21 Kista, Sweden
Direct: +46 8 50 71 43 25
Mobile: +46 709 71 43 25
Enea - Embedded for Leaders
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html