From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2357 invoked by alias); 12 Jun 2007 22:12:36 -0000 Received: (qmail 2347 invoked by uid 22791); 12 Jun 2007 22:12:35 -0000 X-Spam-Check-By: sourceware.org Received: from quina.moeckel.org (HELO quina.moeckel.org) (217.160.223.98) by sourceware.org (qpsmtpd/0.31) with ESMTP; Tue, 12 Jun 2007 22:12:33 +0000 Received: from bluebird.headcrashers.bnfh (bluebird.headcrashers.org [IPv6:2001:8d8:81:a11:204:acff:fe97:190]) (authenticated bits=0) by quina.moeckel.org (8.13.8/8.13.8/Debian-3) with ESMTP id l5CMCPD5006138 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT) for ; Wed, 13 Jun 2007 00:12:27 +0200 Received: from executor.headcrashers.bnfh (IDENT:root@executor.headcrashers.bnfh [IPv6:2001:8d8:81:a11:209:6bff:fee0:8244]) by bluebird.headcrashers.bnfh (8.13.8/8.13.8) with ESMTP id l5CMCIbl026250 for ; Wed, 13 Jun 2007 00:12:23 +0200 Received: from executor.headcrashers.bnfh (IDENT:woodstoc@localhost [127.0.0.1]) by executor.headcrashers.bnfh (8.13.8/8.13.8) with ESMTP id l5CMCRtP008675 for ; Wed, 13 Jun 2007 00:12:27 +0200 (CEST) Received: (from woodstoc@localhost) by executor.headcrashers.bnfh (8.13.8/8.13.8/Submit) id l5CMCQUW009135 for ecos-discuss@ecos.sourceware.org; Wed, 13 Jun 2007 00:12:26 +0200 (CEST) Date: Tue, 12 Jun 2007 23:30:00 -0000 From: Hans Rosenfeld To: ecos-discuss@ecos.sourceware.org Message-ID: <20070612221226.GA5082@grumpf.hope-2000.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.2i X-IsSubscribed: yes Mailing-List: contact ecos-discuss-help@ecos.sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: ecos-discuss-owner@ecos.sourceware.org Subject: [ECOS] POSIX pause() never returns X-SW-Source: 2007-06/txt/msg00135.txt.bz2 While running some of the POSIX package testcases I noticed that pause() never returns. I traced this problem to this patch: http://sourceware.org/ml/ecos-patches/2006-07/msg00014.html What happens here is that cyg_deliver_signals() is called through posix_asr() -> cyg_posix_signal_asr() -> cyg_deliver_signals() while the thread is waiting in pause(). After this the thread continues in the while loop, calling cyg_deliver_signals() again. This call will return false since there are no more signals pending, and the thread waits again. I don't understand the purpose of the above patch, but reverting it makes pause() work as expected for me. -- %SYSTEM-F-ANARCHISM, The operating system has been overthrown -- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss