Date: Tue, 6 Nov 2018 10:50:06 +0100 From: Sylvain GALLIANO <sg@efficientip.com> To: freebsd-current@freebsd.org Subject: Panic on kern_event.c Message-ID: <CAHdyrkvqGp8PGFaCSGgeDFC7wBhjnHK4eL99WM5fMO_yZ_u5KA@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Hi, I got random panic on Current & 11.2-STABLE on kern_event.c Panic occur in syslog-ng (logging at high rate) with the folloging lines: Panic String: Bad tailq NEXT(0xfffff80039ae7a38->tqh_last) != NULL Panic String: Bad tailq head 0xfffff80039f1a238 first->prev != head It's look like knote_enqueue try to add and existings knote on TAILQ (confirmed by following patch). logs after apply patch: XXX knote 0xfffff8012e3d33c0 already in tailq status:1 kq_count:1 [0 0xfffff800327d3538] 2671 XXX knote 0xfffff80032861780 already in tailq status:1 kq_count:1 [0 0xfffff80032457938] 2671 =================================================================== --- sys/kern/kern_event.c (revision 340175) +++ sys/kern/kern_event.c (working copy) @@ -2661,10 +2661,18 @@ knote_enqueue(struct knote *kn) { struct kqueue *kq = kn->kn_kq; + struct knote *ttkn; KQ_OWNED(kn->kn_kq); KASSERT((kn->kn_status & KN_QUEUED) == 0, ("knote already queued")); + TAILQ_FOREACH(ttkn, &kq->kq_head, kn_tqe) { + if (ttkn == kn) { + printf("XXX knote %p already in tailq status:%x kq_count:%d [%p %p] %u\n",kn,kn->kn_status,kq->kq_count,kn->kn_tqe.tqe_next,kn->kn_tqe.tqe_prev,__LINE__); + return; + } + } + TAILQ_INSERT_TAIL(&kq->kq_head, kn, kn_tqe); kn->kn_status |= KN_QUEUED; kq->kq_count++; Regards Sylvain
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAHdyrkvqGp8PGFaCSGgeDFC7wBhjnHK4eL99WM5fMO_yZ_u5KA>