From owner-freebsd-current@freebsd.org Tue Nov 20 10:56:10 2018 Return-Path: Delivered-To: freebsd-current@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 09B7E110DB27 for ; Tue, 20 Nov 2018 10:56:10 +0000 (UTC) (envelope-from sg@efficientip.com) Received: from mail-ed1-x531.google.com (mail-ed1-x531.google.com [IPv6:2a00:1450:4864:20::531]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E1F85863F3 for ; Tue, 20 Nov 2018 10:56:08 +0000 (UTC) (envelope-from sg@efficientip.com) Received: by mail-ed1-x531.google.com with SMTP id j6so1499290edp.9 for ; Tue, 20 Nov 2018 02:56:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=efficientip.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=hqbyoY6FnSTBxVXlOas5oZqgmo69fGQ0JMjZGgnxq4A=; b=bxTEVDNzn3O7CzLQG5mbL9n61WfTULzI74jhNeBVKEcy2nRCcFionwJFha+tUPfBkl zZay4cLwHgK8uDPD/aNDOriBOzDrKUxAc8Q+HkiGx/gKFiRvphID0jxaftyouX1eRBzH aUBUhfVaf4HXEOcrDqo8MrORqz2VJ1AUjZzcM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=hqbyoY6FnSTBxVXlOas5oZqgmo69fGQ0JMjZGgnxq4A=; b=ITTyJ71Ys3wwK/t/Gp5AjEXLwXjb2WSQhBiTQu+e+M6J2bqSqPsMRZXRNf3zziyPyW H121rviZ/XKd7cBa0HoAD48TpR4u3u9LnQm+0IkQUQWc+4wH6GpB1v9dUMKByFhCSjHp LbNElJd2+RUr8v8Q3fWledQSyUG+q8DZiwJCwAGMvkwIAFrK3PsL2gRF8q/odSfBdbC5 N9IJFTEqaXaewiREUAbn8WpJ/pSt6HfZXzKliE2Cn2B1dllwwdiQjGlM0ulPCAEbKqu0 Ssb8lCig5+3tR7Lp37MovGhH6aMH4z6HFx2zscmwNXmoT6OVRKnQGpuYgM7DLeUYNuD2 K4VQ== X-Gm-Message-State: AGRZ1gKnISpZZFJLH8CvZX8azdoCrjNHBkZj1OiKV8O2stfJ6XaNLeV7 DFVUKLuGl5UerY219a7ZxQxeQOh/cfiziywy/FDtbg== X-Google-Smtp-Source: AJdET5cBSH0DTHzJEcVNE38sdCrqU3evOVEJcE2P3LVZedE7NrIJh2IbykkQttScl9l/n8JqF8CHctHdAsSKWfcE3YM= X-Received: by 2002:a17:906:59d6:: with SMTP id m22-v6mr1620089ejs.20.1542711367724; Tue, 20 Nov 2018 02:56:07 -0800 (PST) MIME-Version: 1.0 References: <20181107043503.GB30861@raichu> <20181115221019.GA2514@raichu> <20181116154210.GB17379@raichu> <20181118003554.GC2799@raichu> <20181120064500.GA2371@raichu> In-Reply-To: <20181120064500.GA2371@raichu> From: Sylvain GALLIANO Date: Tue, 20 Nov 2018 11:55:54 +0100 Message-ID: Subject: Re: Panic on kern_event.c To: markj@freebsd.org Cc: freebsd-current@freebsd.org X-Rspamd-Queue-Id: E1F85863F3 X-Spamd-Result: default: False [-5.48 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; R_DKIM_ALLOW(-0.20)[efficientip.com]; FROM_HAS_DN(0.00)[]; NEURAL_HAM_LONG(-1.00)[-0.998,0]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-current@freebsd.org]; TO_DN_NONE(0.00)[]; DMARC_NA(0.00)[efficientip.com]; TO_MATCH_ENVRCPT_SOME(0.00)[]; DKIM_TRACE(0.00)[efficientip.com:+]; RCPT_COUNT_TWO(0.00)[2]; RCVD_IN_DNSWL_NONE(0.00)[1.3.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.4.6.8.4.0.5.4.1.0.0.a.2.list.dnswl.org : 127.0.5.0]; MX_GOOD(-0.01)[alt1.aspmx.l.google.com,aspmx.l.google.com,aspmx5.googlemail.com,aspmx4.googlemail.com,aspmx3.googlemail.com,alt2.aspmx.l.google.com,aspmx2.googlemail.com]; R_SPF_NA(0.00)[]; NEURAL_HAM_SHORT(-0.97)[-0.965,0]; FROM_EQ_ENVFROM(0.00)[]; RCVD_TLS_LAST(0.00)[]; IP_SCORE(-2.21)[ip: (-7.71), ipnet: 2a00:1450::/32(-1.63), asn: 15169(-1.61), country: US(-0.09)]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US]; RCVD_COUNT_TWO(0.00)[2] X-Rspamd-Server: mx1.freebsd.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Nov 2018 10:56:10 -0000 No issue using patched kernel on 2 servers (under stress test since +2 hours), Thanks ! Le mar. 20 nov. 2018 =C3=A0 07:45, Mark Johnston a =C3= =A9crit : > On Mon, Nov 19, 2018 at 10:26:51AM +0100, Sylvain GALLIANO wrote: > > With this latest patch, after stressing syslog-ng few minutes, it do no= t > > log anymore and a simple kill do not work (I have to do kill -9) > > Thanks for your patience. I finally managed to reproduce the problem > and can see the bug now. Please try this patch instead. > > diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c > index d9c670e29d60..0be765a040ed 100644 > --- a/sys/kern/kern_event.c > +++ b/sys/kern/kern_event.c > @@ -1538,6 +1538,10 @@ kqueue_register(struct kqueue *kq, struct kevent > *kev, struct thread *td, int wa > kn_enter_flux(kn); > > error =3D knote_attach(kn, kq); > + if ((kev->flags & EV_ENABLE) !=3D 0) > + kn->kn_status &=3D ~KN_DISABLED; > + else if ((kev->flags & EV_DISABLE) !=3D 0) > + kn->kn_status |=3D KN_DISABLED; > KQ_UNLOCK(kq); > if (error !=3D 0) { > tkn =3D kn; > @@ -1570,6 +1574,11 @@ kqueue_register(struct kqueue *kq, struct kevent > *kev, struct thread *td, int wa > KNOTE_ACTIVATE(kn, 1); > } > > + if ((kev->flags & EV_ENABLE) !=3D 0) > + kn->kn_status &=3D ~KN_DISABLED; > + else if ((kev->flags & EV_DISABLE) !=3D 0) > + kn->kn_status |=3D KN_DISABLED; > + > /* > * The user may change some filter values after the initial EV_AD= D, > * but doing so will not reset any filter which has already been > @@ -1595,11 +1604,9 @@ kqueue_register(struct kqueue *kq, struct kevent > *kev, struct thread *td, int wa > * kn_knlist. > */ > done_ev_add: > - if ((kev->flags & EV_ENABLE) !=3D 0) > - kn->kn_status &=3D ~KN_DISABLED; > - else if ((kev->flags & EV_DISABLE) !=3D 0) > - kn->kn_status |=3D KN_DISABLED; > - > + /* > + * KN_DISABLED will be stable while the knote is in flux. > + */ > if ((kn->kn_status & KN_DISABLED) =3D=3D 0) > event =3D kn->kn_fop->f_event(kn, 0); > else > @@ -1861,6 +1868,8 @@ kqueue_scan(struct kqueue *kq, int maxevents, struc= t > kevent_copyops *k_ops, > } > > TAILQ_REMOVE(&kq->kq_head, kn, kn_tqe); > + KASSERT(kn =3D=3D marker || (kn->kn_status & KN_QUEUED) != =3D 0, > + ("knote %p not queued", kn)); > if ((kn->kn_status & KN_DISABLED) =3D=3D KN_DISABLED) { > kn->kn_status &=3D ~KN_QUEUED; > kq->kq_count--; >