Hello,

Just found that rev r308040 had introduced regression bug for watchdogd:

if watchdogd start by default (without parameters), it use 100% CPU:

  PID USERNAME      THR PRI NICE   SIZE    RES STATE   C   TIME    WCPU COMMAND
14954 root            1 -52   r0  7524K  3496K CPU2    2   0:44 100.36% 
watchdogd

# truss -afd -p 14954
...
14954: 1.640554819 ioctl(4,WDIOCPATPAT,0xffffea60) = 0 (0x0)
14954: 1.640608166 stat("/etc",{ mode=drwxr-xr-x 
,inode=21,size=109,blksize=7168 }) = 0 (0x0)
14954: 1.642456843 ioctl(4,WDIOCPATPAT,0xffffea60) = 0 (0x0)
14954: 1.642511284 stat("/etc",{ mode=drwxr-xr-x 
,inode=21,size=109,blksize=7168 }) = 0 (0x0)
14954: 1.643971019 ioctl(4,WDIOCPATPAT,0xffffea60) = 0 (0x0)
14954: 1.644008391 stat("/etc",{ mode=drwxr-xr-x 
,inode=21,size=109,blksize=7168 }) = 0 (0x0)
14954: 1.645305166 ioctl(4,WDIOCPATPAT,0xffffea60) = 0 (0x0)
14954: 1.645329823 stat("/etc",{ mode=drwxr-xr-x 
,inode=21,size=109,blksize=7168 }) = 0 (0x0)
14954: 1.646621223 ioctl(4,WDIOCPATPAT,0xffffea60) = 0 (0x0)
14954: 1.646645072 stat("/etc",{ mode=drwxr-xr-x 
,inode=21,size=109,blksize=7168 }) = 0 (0x0)
14954: 1.647935561 ioctl(4,WDIOCPATPAT,0xffffea60) = 0 (0x0)


Root cause - uninitialized variable timeout_sec

https://svnweb.freebsd.org/base/head/usr.sbin/watchdogd/watchdogd.c?revision=308040&view=markup#l82

static u_int timeout_sec;

and changes, introduced in r308040:

774                      if (nap > timeout_sec / 2)
775                              nap = timeout_sec / 2;

Workaround: specify the desired timeout period in seconds: 

watchdogd_enable="YES"
watchdogd_flags="-t 128”

Thank you!

--
Alex Deiter
alex.dei...@gmail.com



_______________________________________________
freebsd-current@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to