From owner-freebsd-stable@FreeBSD.ORG Wed Feb 24 12:20:55 2010 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D84421065674 for ; Wed, 24 Feb 2010 12:20:55 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.zoral.com.ua (mx0.zoral.com.ua [91.193.166.200]) by mx1.freebsd.org (Postfix) with ESMTP id 508F98FC1A for ; Wed, 24 Feb 2010 12:20:54 +0000 (UTC) Received: from deviant.kiev.zoral.com.ua (root@deviant.kiev.zoral.com.ua [10.1.1.148]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id o1OCKjeg086801 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 24 Feb 2010 14:20:45 +0200 (EET) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.3/8.14.3) with ESMTP id o1OCKjrg090109; Wed, 24 Feb 2010 14:20:45 +0200 (EET) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.3/8.14.3/Submit) id o1OCKj3W090108; Wed, 24 Feb 2010 14:20:45 +0200 (EET) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Wed, 24 Feb 2010 14:20:45 +0200 From: Kostik Belousov To: Jeremy Chadwick , Peter Jeremy Message-ID: <20100224122045.GU50403@deviant.kiev.zoral.com.ua> References: <20100223013522.GE2303@rwpc12.mby.riverwillow.net.au> <20100224075359.GA61876@server.vk2pj.dyndns.org> <20100224112139.GT50403@deviant.kiev.zoral.com.ua> <20100224114441.GA57760@icarus.home.lan> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="VRppCkiwz5ce4F2G" Content-Disposition: inline In-Reply-To: <20100224114441.GA57760@icarus.home.lan> User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: clamav-milter 0.95.2 at skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-4.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua Cc: freebsd-stable@freebsd.org Subject: Re: sleep(3) sometimes too sleepy on FreeBSD 8.0? X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 24 Feb 2010 12:20:56 -0000 --VRppCkiwz5ce4F2G Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Feb 24, 2010 at 03:44:41AM -0800, Jeremy Chadwick wrote: > On Wed, Feb 24, 2010 at 01:21:39PM +0200, Kostik Belousov wrote: > > On Wed, Feb 24, 2010 at 06:53:59PM +1100, Peter Jeremy wrote: > > > Updates following some off-line discussions and debugging with John on > > > IRC. I've cc'd gshapiro@ because the problem appears to be sendmail, > > > rather than the FreeBSD kernel. > > >=20 > > > On 2010-Feb-23 12:35:22 +1100, John Marshall wrote: > > > >Environment: sendmail 8.14.4 on FreeBSD 8.0-RELEASE-p2 > > >=20 > > > Note that this is stock ISC sendmail, not the sendmail in either the > > > base system or the port. > > >=20 > > > >I posted about this in comp.mail.sendmail and was told... > > > > > > > >> sleep() should be one of these calls: > > > >>=20 > > > >> if (njobs =3D=3D 0 && WorkGrp[wgrp].wg_lowqintvl < MIN_SLE= EP_TIME) > > > >> sleep(MIN_SLEEP_TIME); > > > >> else if (WorkGrp[wgrp].wg_lowqintvl <=3D 0) > > > >> sleep(QueueIntvl > 0 ? QueueIntvl : MIN_SLEEP_TIME= ); > > > >> else > > > >> sleep(WorkGrp[wgrp].wg_lowqintvl); > > >=20 > > > Whilst it's true that the code calls sleep(), it's not calling > > > sleep(3) in the FreeBSD libc. Instead it's calling a sleep() defined > > > in libsm/clock.c - which is a horrible maze of #ifdefs. > > >=20 > > > John has pre-processed that code and the result it at: > > > http://www.riverwillow.net.au/~john/sm/clock.preprocessed > > >=20 > > > At a quick look, the code is broken: sm_seteventm() generates a > > > one-off timer using setitimer(2), which will send SIGALRM when it > > > expires. sm_releasesignal() then unblocks SIGALRM. In theory, the > > > SIGALRM could be delivered anywhere after the (!SmSleepDone) test and > > > before pause() is called - in which case, the signal is lost and > > > pause() will sleep forever. > > >=20 > > > On 2010-Feb-24 08:13:06 +1100, John Marshall wrote: > > > >My ktrace file was created with 'ktrace -g 48501'. I have the resul= t of > > > >'kdump -R -p 48504' available at: > > > > > > > > > > I get 'kdump: data too short' on RELENG_8/i386. >=20 > Is the OP's machine amd64? No, apparently, the this is indeed output of kdump, as advertised. It was me who misinterpreted it as ktrace. Regarding sigsuspend() returning EINTR without delivering any signal, could it be that the sendmail process was debugged ? --VRppCkiwz5ce4F2G Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (FreeBSD) iEYEARECAAYFAkuFGZ0ACgkQC3+MBN1Mb4jZLQCeJ6MaJTuHG8gXN0EFcw9TqIYZ T/8AoJJKUHb/2ob+LQijeFn02MbrV5bY =mCpo -----END PGP SIGNATURE----- --VRppCkiwz5ce4F2G--