X-Recipient: archive-cygwin AT delorie DOT com X-Spam-Check-By: sourceware.org Message-ID: <47541AFA.3040701@enea.se> Date: Mon, 03 Dec 2007 16:04:26 +0100 From: Stefan Bylund User-Agent: Mozilla Thunderbird 1.0.7 (Windows/20050923) MIME-Version: 1.0 To: cygwin AT cygwin DOT com Subject: Problem suspending Cygwin-based GDB from Eclipse/CDT (and some findings) Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Hi, 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 (http://cygwin.com/ml/cygwin-announce/2006-07/msg00000.html) and 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 pthread functions. * 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 1.5.19-4. 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. Best Regards, Stefan Bylund -- --------------------------------- Stefan Bylund Senior Software Engineer Enea Skalholtsgatan 9, Box 1033, SE-164 21 Kista, Sweden Direct: +46 8 50 71 43 25 Mobile: +46 709 71 43 25 stefan DOT bylund AT enea DOT com www.enea.com --------------------------------- Enea - Embedded for Leaders --------------------------------- -- 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/