Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Feb 2010 14:20:45 +0200
From:      Kostik Belousov <kostikbel@gmail.com>
To:        Jeremy Chadwick <freebsd@jdc.parodius.com>, Peter Jeremy <peterjeremy@acm.org>
Cc:        freebsd-stable@freebsd.org
Subject:   Re: sleep(3) sometimes too sleepy on FreeBSD 8.0?
Message-ID:  <20100224122045.GU50403@deviant.kiev.zoral.com.ua>
In-Reply-To: <20100224114441.GA57760@icarus.home.lan>
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>

next in thread | previous in thread | raw e-mail | index | archive | help

--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 <john.marshall@riverwill=
ow.com.au> 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 <john.marshall@riverwill=
ow.com.au> wrote:
> > > >My ktrace file was created with 'ktrace -g 48501'.  I have the resul=
t of
> > > >'kdump -R -p 48504' available at:
> > > >
> > > > <http://www.riverwillow.net.au/~john/8_0/rwsrv04_201002240725.kdump=
.gz>
> > 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--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100224122045.GU50403>