X-Recipient: archive-cygwin AT delorie DOT com X-Spam-Check-By: sourceware.org Date: Wed, 23 May 2012 10:52:15 +0200 From: Corinna Vinschen To: cygwin AT cygwin DOT com Subject: Re: 1.7.15-1: pthread_cancel and pthread_kill not working as expected Message-ID: <20120523085215.GG9200@calimero.vinschen.de> Reply-To: cygwin AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com References: <4FAAAE25 DOT 40204 AT sister-shadow DOT de> <4FB62304 DOT 2000100 AT sister-shadow DOT de> <4FBA1846 DOT 6020005 AT sister-shadow DOT de> <20120521104717 DOT GC7763 AT calimero DOT vinschen DOT de> <4FBA38A5 DOT 5030408 AT sister-shadow DOT de> <20120522110238 DOT GC15843 AT calimero DOT vinschen DOT de> <4FBB93D6 DOT 90408 AT sister-shadow DOT de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <4FBB93D6.90408@sister-shadow.de> User-Agent: Mutt/1.5.21 (2010-09-15) Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: 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 On May 22 15:25, Otto Meta wrote: > >> Testcase cancel deferred: > >> Works with 1.7.9 and 20120517 snapshot, fails (hangs) with 1.7.12-1 > >> and 1.7.15-1. > > If that works in the snapshot anyway, I'm not going to look into that > > one. > > It worked in the reduced testcase with sem_wait(). With read() it’s > still half-broken. See below. > > >> Testcase cancel asynchronous: > >> Async cancel seems to have no effect with any tested version. > > I think I found a solution for this problem. See the comment in the > > patch at > > http://sourceware.org/cgi-bin/cvsweb.cgi/src/winsup/cygwin/thread.cc.diff?cvsroot=src&r1=1.258&r2=1.259 > > Please test the today's developer snapshot. > > Asynchronous cancel seems to work as well as deferred cancel now. Thanks. > > Both cancel types work with sem_wait() and pause() now, but for threads > blocked in read() they’re still unreliable. Only one of three blocked > threads is killed in the attached updated testcases. Just to let you know I'm working on it. This will take some time. During debugging I stumbled over a heisenbug. As soon as I remove the "Thread %i woke up just fine" printf from your test application, the read function reurns with a "Bad address" error. So far I have onlya vague hunch what the cause may be. Stay tuned. Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple