NetBSD Problem Report #59964
From wiz@netbsd.org Fri Feb 6 16:00:42 2026
Return-Path: <wiz@netbsd.org>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (2048 bits)
client-signature RSA-PSS (2048 bits))
(Client CN "mail.netbsd.org", Issuer "R13" (verified OK))
by mollari.NetBSD.org (Postfix) with ESMTPS id 96F7D1A923E
for <gnats-bugs@gnats.NetBSD.org>; Fri, 6 Feb 2026 16:00:42 +0000 (UTC)
Message-Id: <20260206160042.5216984D57@mail.netbsd.org>
Date: Fri, 6 Feb 2026 16:00:42 +0000 (UTC)
From: wiz@NetBSD.org
Reply-To: wiz@NetBSD.org
To: gnats-bugs@NetBSD.org
Subject: kernel diagnostic assertion "it->it_time.it_value.tv_sec >= 0" failed
X-Send-Pr-Version: 3.95
X-From4GNATS: "wiz@NetBSD.org via gnats" <gnats-admin@NetBSD.org>
>Number: 59964
>Category: kern
>Synopsis: kernel diagnostic assertion "it->it_time.it_value.tv_sec >= 0" failed
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: riastradh
>State: needs-pullups
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Fri Feb 06 16:05:00 +0000 2026
>Closed-Date:
>Last-Modified: Wed Mar 04 19:15:00 +0000 2026
>Originator: Thomas Klausner
>Release: NetBSD 11.99.5
>Organization:
>Environment:
Architecture: x86_64
Machine: amd64
>Description:
When running the self tests for sysutils/coreutils 9.10, there is a repeatable
kernel panic after the lines:
...
PASS: tests/test/test-N.sh
PASS: tests/test/test-diag.pl
test-file.sh:
SKIP: tests/test/test-file.sh
PASS: tests/misc/time-style.sh
PASS: tests/timeout/timeout.sh
PASS: tests/timeout/timeout-blocked.pl
timeout-group.sh:
SKIP: tests/timeout/timeout-group.sh
The kernel backtrace is:
(gdb) bt
#0 0xffffffff80239eca in cpu_reboot (howto=howto@entry=260, bootstr=bootstr@entry=0x0) at /usr/src/sys/arch/amd64/amd64/machdep.c:709
#1 0xffffffff80e2ad3f in kern_reboot (howto=howto@entry=260, bootstr=bootstr@entry=0x0) at /usr/src/sys/kern/kern_reboot.c:91
#2 0xffffffff80e75f15 in vpanic (fmt=0xffffffff81630328 "kernel %sassertion \"%s\" failed: file \"%s\", line %d ", ap=ap@entry=0xffffdda5551f6e38) at /usr/src/sys/kern/subr_prf.c:288
#3 0xffffffff8105093e in kern_assert (fmt=fmt@entry=0xffffffff81630328 "kernel %sassertion \"%s\" failed: file \"%s\", line %d ") at /usr/src/sys/lib/libkern/kern_assert.c:51
#4 0xffffffff80e4949d in itimer_settime (it=it@entry=0xffffa5b2e0287040) at /usr/src/sys/kern/kern_time.c:908
#5 0xffffffff80e4a2b4 in dotimer_settime (timerid=4, value=value@entry=0xffffdda5551f6f30, ovalue=ovalue@entry=0x0, flags=0, p=<optimized out>) at /usr/src/sys/kern/kern_time.c:1446
#6 0xffffffff80e4a4b2 in sys___timer_settime50 (l=0xffffa5bd536dd800, uap=0xffffdda5551f7000, retval=<optimized out>) at /usr/src/sys/kern/kern_time.c:1374
#7 0xffffffff805cea31 in sy_call (sy=0xffffffff81a8a5d0 <sysent+10704>, l=0xffffa5bd536dd800, uap=0xffffdda5551f7000, rval=0xffffdda5551f6fb0) at /usr/src/sys/sys/syscallvar.h:65
#8 sy_invoke (sy=0xffffffff81a8a5d0 <sysent+10704>, l=0xffffa5bd536dd800, uap=0xffffdda5551f7000, rval=0xffffdda5551f6fb0, code=446) at /use/src/sys/sys/syscallvar.h:94
#9 syscall (frame=0xffffdda5551f7000) at /disk/storage-202410/archive/foreign/src/sys/arch/x86/x86/syscall.c:137
#10 0xffffffff8021025d in handle_syscall ()
Core dump available on request.
On NetBSD 10 I could not reproduce the panic.
>How-To-Repeat:
cd /usr/pkgsrc/sysutils/coreutils
make test
>Fix:
Please.
>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: kern-bug-people->riastradh
Responsible-Changed-By: riastradh@NetBSD.org
Responsible-Changed-When: Fri, 06 Feb 2026 23:37:53 +0000
Responsible-Changed-Why:
mine
State-Changed-From-To: open->analyzed
State-Changed-By: riastradh@NetBSD.org
State-Changed-When: Fri, 06 Feb 2026 23:37:53 +0000
State-Changed-Why:
Almost certainly arithmetic overlfow here:
1423 if ((flags & TIMER_ABSTIME) == 0) {
1424 if (it->it_clockid == CLOCK_REALTIME) {
1425 getnanotime(&now);
1426 } else { /* CLOCK_MONOTONIC */
1427 getnanouptime(&now);
1428 }
1429 timespecadd(&it->it_time.it_value, &now,
1430 &it->it_time.it_value);
1431 }
https://nxr.netbsd.org/xref/src/sys/kern/kern_time.c?r=1.230#1429
Reproducer:
#include <err.h>
#include <limits.h>
#include <signal.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
int
main(void)
{
timer_t t;
struct sigevent ev = {
.sigev_notify = SIGEV_SIGNAL,
.sigev_signo = SIGALRM,
};
const struct itimerspec it = {
.it_value = {INT64_MAX - 1000, 0},
.it_interval = {0,0},
};
sigset_t mask, omask;
int signo;
if (sigemptyset(&mask) == -1)
err(1, "sigemptyset");
if (sigaddset(&mask, SIGALRM) == -1)
err(1, "sigaddset");
if (sigprocmask(SIG_BLOCK, &mask, &omask) == -1)
err(1, "sigprocmask(SIG_BLOCK)");
if (timer_create(CLOCK_REALTIME, &ev, &t) == -1)
err(1, "timer_create");
if (timer_settime(t, TIMER_RELTIME, &it, NULL) == -1)
err(1, "timer_settime");
if (sigwait(&mask, &signo) == -1)
err(1, "sigwait");
printf("signal %d (%s)\n", signo, strsignal(signo));
fflush(stdout);
return ferror(stdout);
}
State-Changed-From-To: analyzed->needs-pullups
State-Changed-By: riastradh@NetBSD.org
State-Changed-When: Sat, 07 Feb 2026 01:49:10 +0000
State-Changed-Why:
fixed in HEAD, needs pullup-11/10/9
From: "Taylor R Campbell" <riastradh@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/59964 CVS commit: src
Date: Sat, 7 Feb 2026 01:47:23 +0000
Module Name: src
Committed By: riastradh
Date: Sat Feb 7 01:47:23 UTC 2026
Modified Files:
src/sys/kern: kern_time.c
src/tests/lib/libc/sys: t_getitimer.c t_timer_create.c
Log Message:
setitimer(2), timer_settime(2): Avoid arithmetic overflow.
PR kern/59964: kernel diagnostic assertion
"it->it_time.it_value.tv_sec >= 0" failed
To generate a diff of this commit:
cvs rdiff -u -r1.230 -r1.231 src/sys/kern/kern_time.c
cvs rdiff -u -r1.5 -r1.6 src/tests/lib/libc/sys/t_getitimer.c
cvs rdiff -u -r1.10 -r1.11 src/tests/lib/libc/sys/t_timer_create.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
From: Thomas Klausner <wiz@netbsd.org>
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: kern/59964 (kernel diagnostic assertion
"it->it_time.it_value.tv_sec >= 0" failed)
Date: Sat, 7 Feb 2026 11:17:15 +0100
Just to confirm, the coreutils tests now proceed without a panic in my
environment.
Thanks,
Thomas
From: "Martin Husemann" <martin@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/59964 CVS commit: [netbsd-11] src
Date: Wed, 4 Mar 2026 19:10:32 +0000
Module Name: src
Committed By: martin
Date: Wed Mar 4 19:10:31 UTC 2026
Modified Files:
src/sys/kern [netbsd-11]: kern_time.c
src/tests/lib/libc/sys [netbsd-11]: t_getitimer.c t_timer_create.c
Log Message:
Pull up following revision(s) (requested by riastradh in ticket #188):
sys/kern/kern_time.c: revision 1.230
sys/kern/kern_time.c: revision 1.231
tests/lib/libc/sys/t_getitimer.c: revision 1.6
tests/lib/libc/sys/t_timer_create.c: revision 1.11
kern_time.c: Sprinkle SET_ERROR dtrace probes.
PR kern/58378: Kernel error code origination lacks dtrace probes
setitimer(2), timer_settime(2): Avoid arithmetic overflow.
PR kern/59964: kernel diagnostic assertion
"it->it_time.it_value.tv_sec >= 0" failed
To generate a diff of this commit:
cvs rdiff -u -r1.228.2.1 -r1.228.2.2 src/sys/kern/kern_time.c
cvs rdiff -u -r1.5 -r1.5.2.1 src/tests/lib/libc/sys/t_getitimer.c
cvs rdiff -u -r1.10 -r1.10.2.1 src/tests/lib/libc/sys/t_timer_create.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
>Unformatted:
(Contact us)
$NetBSD: query-full-pr,v 1.49 2026/05/14 01:52:41 riastradh Exp $
$NetBSD: gnats_config.sh,v 1.10 2026/05/13 22:00:09 riastradh Exp $
Copyright © 1994-2026
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.