Package: clamav-freshclam Version: 0.98.4+dfsg-0+deb7u2 Severity: normal Use of --name $DAEMON in start-stop-daemon calls to stop/restart/reload the daemon results in failure to stop/restart/reload when process names are not available due to limited /proc. This occurs in a number of virtualized environments, in my specific case for debian/kfreebsd-amd64 in a freebsd jail even with linprocfs mounted.
Dropping --name $DAEMON and relying solely on PIDFILE solves the issue. -- Package-specific info: --- configuration --- Checking configuration files in /etc/clamav Config file: clamd.conf ----------------------- LogFile = "/var/log/clamav/clamav.log" StatsHostID = "auto" StatsEnabled disabled StatsPEDisabled = "yes" StatsTimeout = "10" LogFileUnlock disabled LogFileMaxSize = "4294967295" LogTime = "yes" LogClean disabled LogSyslog disabled LogFacility = "LOG_LOCAL6" LogVerbose disabled LogRotate = "yes" ExtendedDetectionInfo = "yes" PidFile = "/var/run/clamav/clamd.pid" TemporaryDirectory disabled DatabaseDirectory = "/var/lib/clamav" OfficialDatabaseOnly disabled LocalSocket = "/var/run/clamav/clamd.ctl" LocalSocketGroup = "clamav" LocalSocketMode = "666" FixStaleSocket = "yes" TCPSocket disabled TCPAddr disabled MaxConnectionQueueLength = "15" StreamMaxLength = "26214400" StreamMinPort = "1024" StreamMaxPort = "2048" MaxThreads = "12" ReadTimeout = "180" CommandReadTimeout = "5" SendBufTimeout = "200" MaxQueue = "100" IdleTimeout = "30" ExcludePath disabled MaxDirectoryRecursion = "15" FollowDirectorySymlinks disabled FollowFileSymlinks disabled CrossFilesystems = "yes" SelfCheck = "3600" DisableCache disabled VirusEvent disabled ExitOnOOM disabled AllowAllMatchScan = "yes" Foreground disabled Debug disabled LeaveTemporaryFiles disabled User = "clamav" AllowSupplementaryGroups disabled Bytecode = "yes" BytecodeSecurity = "TrustSigned" BytecodeTimeout = "60000" BytecodeUnsigned disabled BytecodeMode = "Auto" DetectPUA disabled ExcludePUA disabled IncludePUA disabled AlgorithmicDetection = "yes" ScanPE = "yes" ScanELF = "yes" DetectBrokenExecutables disabled ScanMail = "yes" ScanPartialMessages disabled PhishingSignatures = "yes" PhishingScanURLs = "yes" PhishingAlwaysBlockCloak disabled PhishingAlwaysBlockSSLMismatch disabled PartitionIntersection disabled HeuristicScanPrecedence disabled StructuredDataDetection disabled StructuredMinCreditCardCount = "3" StructuredMinSSNCount = "3" StructuredSSNFormatNormal = "yes" StructuredSSNFormatStripped disabled ScanHTML = "yes" ScanOLE2 = "yes" OLE2BlockMacros disabled ScanPDF = "yes" ScanSWF = "yes" ScanArchive = "yes" ArchiveBlockEncrypted disabled ForceToDisk disabled MaxScanSize = "104857600" MaxFileSize = "26214400" MaxRecursion = "10" MaxFiles = "10000" MaxEmbeddedPE = "10485760" MaxHTMLNormalize = "10485760" MaxHTMLNoTags = "2097152" MaxScriptNormalize = "5242880" MaxZipTypeRcg = "1048576" MaxPartitions = "50" MaxIconsPE = "100" ScanOnAccess disabled OnAccessIncludePath disabled OnAccessExcludePath disabled OnAccessExcludeUID disabled OnAccessMaxFileSize = "5242880" DevACOnly disabled DevACDepth disabled DevPerformance disabled DevLiblog disabled DisableCertCheck disabled Config file: freshclam.conf --------------------------- StatsHostID disabled StatsEnabled disabled StatsTimeout disabled LogFileMaxSize = "4294967295" LogTime = "yes" LogSyslog disabled LogFacility = "LOG_LOCAL6" LogVerbose disabled LogRotate = "yes" PidFile = "/var/run/clamav/freshclam.pid" DatabaseDirectory = "/var/lib/clamav" Foreground disabled Debug disabled AllowSupplementaryGroups disabled UpdateLogFile = "/var/log/clamav/freshclam.log" DatabaseOwner = "clamav" Checks = "24" DNSDatabaseInfo = "current.cvd.clamav.net" DatabaseMirror = "db.local.clamav.net", "database.clamav.net" PrivateMirror disabled MaxAttempts = "5" ScriptedUpdates = "yes" TestDatabases = "yes" CompressLocalDatabase disabled ExtraDatabase disabled DatabaseCustomURL disabled HTTPProxyServer disabled HTTPProxyPort disabled HTTPProxyUsername disabled HTTPProxyPassword disabled HTTPUserAgent disabled NotifyClamd = "/etc/clamav/clamd.conf" OnUpdateExecute disabled OnErrorExecute disabled OnOutdatedExecute disabled LocalIPAddress disabled ConnectTimeout = "30" ReceiveTimeout = "30" SubmitDetectionStats disabled DetectionStatsCountry disabled DetectionStatsHostID disabled SafeBrowsing disabled Bytecode = "yes" Config file: clamav-milter.conf ------------------------------- LogFile = "/var/log/clamav/clamav-milter.log" LogFileUnlock disabled LogFileMaxSize = "1048576" LogTime = "yes" LogSyslog disabled LogFacility = "LOG_LOCAL6" LogVerbose disabled LogRotate = "yes" PidFile = "/var/run/clamav/clamav-milter.pid" TemporaryDirectory = "/tmp" FixStaleSocket = "yes" MaxThreads = "10" ReadTimeout = "120" Foreground disabled User = "clamav" AllowSupplementaryGroups = "yes" MaxFileSize = "26214400" ClamdSocket = "unix:/var/run/clamav/clamd.ctl" MilterSocket = "/var/run/clamav/clamav-milter.ctl" MilterSocketGroup = "clamav" MilterSocketMode = "666" LocalNet disabled OnClean = "Accept" OnInfected = "Quarantine" OnFail = "Defer" RejectMsg disabled AddHeader = "Replace" ReportHostname disabled VirusAction disabled Chroot disabled Whitelist disabled SkipAuthenticated disabled LogInfected = "Off" LogClean = "Off" SupportMultipleRecipients disabled Software settings ----------------- Version: 0.98.4 Optional features supported: MEMPOOL IPv6 FRESHCLAM_DNS_FIX AUTOIT_EA06 BZIP2 JIT Database information -------------------- Database directory: /var/lib/clamav daily.cvd: version 19318, sigs: 1094665, built on Mon Sep 1 10:00:50 2014 main.cvd: version 55, sigs: 2424225, built on Tue Sep 17 10:57:28 2013 bytecode.cvd: version 242, sigs: 46, built on Tue Jun 24 18:21:59 2014 Total number of signatures: 3518936 Platform information -------------------- uname: GNU/kFreeBSD 9.2-RELEASE-p9 FreeBSD 9.2-RELEASE-p9 #0 r262572+cc525fe: Thu Jul 3 14:22:45 P x86_64 OS: kfreebsd-gnu, ARCH: x86_64, CPU: x86_64 zlib version: 1.2.7 (1.2.7), compile flags: a9 Triple: x86_64-pc-kfreebsd-gnu CPU: generic, Little-endian platform id: 0x09214d4d0804070201040702 Build information ----------------- GNU C: 4.7.2 (4.7.2) GNU C++: 4.7.2 (4.7.2) CPPFLAGS: -D_FORTIFY_SOURCE=2 CFLAGS: -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE CXXFLAGS: LDFLAGS: -Wl,-z,relro Configure: '--build=x86_64-kfreebsd-gnu' '--prefix=/usr' '--includedir=/usr/include' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--libexecdir=/usr/lib/clamav' '--disable-maintainer-mode' '--disable-dependency-tracking' 'CFLAGS=-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall' 'CPPFLAGS=-D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall' 'LDFLAGS=-Wl,-z,relro' '--with-dbdir=/var/lib/clamav' '--sysconfdir=/etc/clamav' '--disable-clamav' '--disable-unrar' '--enable-milter' '--enable-dns-fix' '--with-gnu-ld' '--with-system-tommath' '--without-included-ltdl' '-with-system-llvm=/usr/bin/llvm-config' 'build_alias=x86_64-kfreebsd-gnu' sizeof(void*) = 8 Engine flevel: 77, dconf: 77 --- data dir --- total 90386 -rw-r--r-- 1 clamav clamav 74230 Aug 31 21:39 bytecode.cvd -rw-r--r-- 1 clamav clamav 27601161 Aug 31 21:39 daily.cvd -rw-r--r-- 1 clamav clamav 64720632 Aug 31 21:39 main.cvd -rw------- 1 clamav clamav 52 Aug 31 21:59 mirrors.dat -- System Information: Debian Release: 7.6 APT prefers stable-updates APT policy: (500, 'stable-updates'), (500, 'stable') Architecture: kfreebsd-amd64 (x86_64) Kernel: kFreeBSD 9.2-RELEASE-p9 Locale: LANG=en_CA.utf8, LC_CTYPE=en_CA.utf8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages clamav-freshclam depends on: ii clamav-base 0.98.4+dfsg-0+deb7u2 ii debconf [debconf-2.0] 1.5.49 ii dpkg 1.16.15 ii libc0.1 2.13-38+deb7u4 ii libclamav6 0.98.4+dfsg-0+deb7u2 ii libssl1.0.0 1.0.1e-2+deb7u12 ii logrotate 3.8.1-4 ii lsb-base 4.1+Debian8+deb7u1 ii procps 1:3.3.3-3 ii ucf 3.0025+nmu3 ii zlib1g 1:1.2.7.dfsg-13 clamav-freshclam recommends no packages. Versions of packages clamav-freshclam suggests: pn apparmor <none> ii clamav-docs 0.98.4+dfsg-0+deb7u2 -- Configuration Files: /etc/init.d/clamav-freshclam changed: DAEMON=/usr/bin/freshclam NAME=freshclam DESC="ClamAV virus database updater" [ -x $DAEMON ] || exit 0 CLAMAV_CONF_FILE=/etc/clamav/clamd.conf FRESHCLAM_CONF_FILE=/etc/clamav/freshclam.conf to_lower() { word="$1" lcword=$(echo "$word" | tr A-Z a-z) echo "$lcword" } is_true() { var="$1" lcvar=$(to_lower "$var") [ 'true' = "$lcvar" ] || [ 'yes' = "$lcvar" ] || [ 1 = "$lcvar" ] return $? } is_false() { var="$1" lcvar=$(to_lower "$var") [ 'false' = "$lcvar" ] || [ 'no' = "$lcvar" ] || [ 0 = "$lcvar" ] return $? } ucf_cleanup() { # This only does something if I've fucked up before # Not entirely impossible :( configfile=$1 if [ `grep "$configfile" /var/lib/ucf/hashfile | wc -l` -gt 1 ]; then grep -v "$configfile" /var/lib/ucf/hashfile > /var/lib/ucf/hashfile.tmp grep "$configfile" /var/lib/ucf/hashfile | tail -n 1 >> /var/lib/ucf/hashfile.tmp mv /var/lib/ucf/hashfile.tmp /var/lib/ucf/hashfile fi } add_to_ucf() { configfile=$1 ucffile=$2 if ! grep -q "$configfile" /var/lib/ucf/hashfile; then md5sum $configfile >> /var/lib/ucf/hashfile cp $configfile $ucffile fi } ucf_upgrade_check() { configfile=$1 sourcefile=$2 ucffile=$3 if [ -f "$configfile" ]; then add_to_ucf $configfile $ucffile ucf --three-way --debconf-ok "$sourcefile" "$configfile" else [ -d /var/lib/ucf/cache ] || mkdir -p /var/lib/ucf/cache cp $sourcefile $configfile add_to_ucf $configfile $ucffile fi } slurp_config() { CLAMAVCONF="$1" if [ -e "$CLAMAVCONF" ]; then for variable in `egrep -v '^[[:space:]]*(#|$)' "$CLAMAVCONF" | awk '{print $1}'`; do case "$variable" in DatabaseMirror) if [ -z "$DatabaseMirror" ]; then for i in `grep ^$variable $CLAMAVCONF | awk '{print $2}'`; do value="$value $i" done else continue fi ;; DatabaseCustomURL) if [ -z "$DatabaseCustomURL" ]; then for i in `grep ^$variable $CLAMAVCONF | awk '{print $2}'`; do value="$value $i" done else continue fi ;; IncludePUA) if [ -z "$IncludePUA" ]; then for i in `grep ^$variable $CLAMAVCONF | awk '{print $2}'`; do value="$i $value" done else continue fi ;; ExcludePUA) if [ -z "$ExcludePUA" ]; then for i in `grep ^$variable $CLAMAVCONF | awk '{print $2}'`; do value="$i $value" done else continue fi ;; ExtraDatabase) if [ -z "$ExtraDatabase" ]; then for i in `grep ^$variable $CLAMAVCONF | awk '{print $2}'`; do value="$value $i" done else continue fi ;; VirusEvent|OnUpdateExecute|OnErrorExecute|RejectMsg) value=`grep ^$variable $CLAMAVCONF | head -n1 | sed -e s/$variable\ //` ;; *) value=`grep "^$variable[[:space:]]" $CLAMAVCONF | head -n1 | awk '{print $2}'` ;; esac if [ -z "$value" ]; then export "$variable"="true" elif [ "$value" != "$variable" ]; then export "$variable"="$value" else export "$variable"="true" fi unset value done fi } pathfind() { OLDIFS=”$IFS” IFS=: for p in $PATH; do if [ -x ”$p/$*” ]; then IFS=”$OLDIFS” return 0 fi done IFS=”$OLDIFS” return 1 } set_debconf_value() { prog=$1 name=$2 eval variable="\$${name}" if [ -n "$variable" ]; then db_set clamav-$prog/$name "$variable" || true fi } make_dir() { DIR=$1 if [ -d "$DIR" ]; then return 0; fi [ -n "$User" ] || User=clamav mkdir -p -m 0755 "$DIR" chown "$User" "$DIR" pathfind restorecon && restorecon "$DIR" } isdigit () { case $1 in [[:digit:]]*) ISDIGIT=1 ;; *) ISDIGIT=0 ;; esac } inputdigit () { ISDIGIT=0 while [ "$ISDIGIT" = '0' ]; do db_input "$1" "$2" || true if ! db_go; then return 30 fi db_get $2 || true isdigit $RET if [ "$ISDIGIT" = '0' ]; then db_input critical clamav-base/numinfo || true db_go fi done return 0 } StateGeneric() { PRIO=$1 QUESTION=$2 NEXT=$3 LAST=$4 db_input $PRIO $QUESTION || true if db_go; then STATE=$NEXT else STATE=$LAST fi } StateGenericDigit() { PRIO=$1 QUESTION=$2 NEXT=$3 LAST=$4 inputdigit $PRIO $QUESTION || true if db_go; then STATE=$NEXT else STATE=$LAST fi } .. /lib/lsb/init-functions slurp_config "$FRESHCLAM_CONF_FILE" if [ -z "$PidFile" ] then log_failure_msg "$NAME: Can not continue with PidFile not set" if [ "$1" = "status" ]; then # program or service status is unknown exit 4; else # program is not configured correctly exit 6; fi fi [ -n "$DataBaseDirectory" ] || DataBaseDirectory=/var/run/clamav make_dir "$DataBaseDirectory" make_dir $(dirname "$PidFile") [ -z "$UpdateLogFile" ] && UpdateLogFile=/var/log/clamav/freshclam.log [ -z "$DatabaseDirectory" ] && DatabaseDirectory=/var/lib/clamav/ [ -n "$DatabaseOwner" ] || DatabaseOwner=clamav case "$1" in no-daemon) su "$DatabaseOwner" -p -s /bin/sh -c "freshclam -l $UpdateLogFile --datadir $DatabaseDirectory" ;; start) log_daemon_msg "Starting $DESC" "$NAME" if [ ! -f "$PidFile" ]; then # If clamd is run under a different UID than freshclam then we need # to make sure the PidFile can be written or else we won't be able to # kill it. touch $PidFile chown $DatabaseOwner $PidFile fi # If user wants it run from cron, we only accept no-daemon and stop if [ -f /etc/cron.d/clamav-freshclam ]; then log_warning_msg "Not starting $NAME - cron option selected" log_warning_msg "Run the init script with the 'no-daemon' option" log_end_msg 255 # this is similar to the daemon already running exit 0 fi start-stop-daemon --start --oknodo -c "$DatabaseOwner" --exec $DAEMON --pidfile $PidFile -- -d --quiet --config-file=$FRESHCLAM_CONF_FILE log_end_msg $? ;; stop) log_daemon_msg "Stopping $DESC" "$NAME" start-stop-daemon --stop --oknodo --pidfile $PidFile --retry TERM/30/KILL/5 log_end_msg $? ;; restart|force-reload) $0 stop $0 start ;; reload-log) log_daemon_msg "Reloading $DESC" "$NAME" # If user wants it run from cron, we only accept no-daemon and stop if [ -f /etc/cron.d/clamav-freshclam ]; then log_warning_msg "Not reloading log for $NAME - cron option selected" log_end_msg 255 # log-reloading is not needed, because freshclam is not run as daemon exit 0 fi pkill -HUP -F $PidFile $NAME log_end_msg $? ;; skip) ;; status) start-stop-daemon --status --pidfile $PidFile ret="$?" if [ "$ret" = 0 ]; then log_success_msg "$NAME is running" exit 0 else log_failure_msg "$NAME is not running" exit "$ret" fi ;; *) log_action_msg "Usage: $0 {no-daemon|start|stop|restart|force-reload|reload-log|skip|status}" >&2 # invalid arguments exit 2 ;; esac exit 0 -- debconf information: clamav-freshclam/http_proxy: clamav-freshclam/autoupdate_freshclam: daemon clamav-freshclam/LogRotate: true clamav-freshclam/Bytecode: true clamav-freshclam/proxy_user: clamav-freshclam/update_interval: 24 clamav-freshclam/SafeBrowsing: false clamav-freshclam/NotifyClamd: true clamav-freshclam/PrivateMirror: clamav-freshclam/local_mirror: db.local.clamav.net clamav-freshclam/internet_interface: -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org