Your message dated Fri, 26 Sep 2014 12:46:17 +0200
with message-id <[email protected]>
and subject line close "use of --name in … failure to stop in certain 
virtualized environments" and its dupes
has caused the Debian Bug report #760220,
regarding clamav-freshclam: Use of --name in start-stop-daemon for stop and 
restart causes failure to stop in certain virtualized environments
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
760220: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=760220
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
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:

--- End Message ---
--- Begin Message ---
Hi,

hereby I close this bug (and its dupes). Almost three weeks passed with
a little feedback from the bug reported. The discussion is documented in
#760219.
The problem, as I understand it, is that certain kFreeBSD jails do not
expose the name of process matching a certain PID. The reporter claims that
he did the setup wrong (he didn't use linprocfs) and once this was fixed
he said "Given that linprocfs exists and things work properly when using
it …".
I doubt that using --name is something that can considered as a bug in
clamav's initscripts (with the history of #580188). This "problem" also
exists in other packages like unbound. If this is a real problem it
should be addressed in dpkg if at all (giving the fact that the reported
did not use linprocfs in the first place).

Sebastian

--- End Message ---
_______________________________________________
Pkg-clamav-devel mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-clamav-devel

Reply via email to