Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 20 Aug 2005 17:31:22 GMT
From:      Andy Hilker <ah@crypta.net>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   threads/85161: rcng scripts for processes running as kernel threads not working cause of [procname]
Message-ID:  <200508201731.j7KHVMCn020082@www.freebsd.org>
Resent-Message-ID: <200508201740.j7KHeCAl012943@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         85161
>Category:       threads
>Synopsis:       rcng scripts for processes running as kernel threads not working cause of [procname]
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-threads
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Aug 20 17:40:12 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Andy Hilker
>Release:        5.4-RELEASE-p3
>Organization:
>Environment:
FreeBSD mypc 5.4-RELEASE-p3 FreeBSD 5.4-RELEASE-p3 #6: Tue Jul  5 16:48:52 CEST 2005     root@arkona:/usr/obj/usr/src/sys/MYPC  i386
>Description:
If you run a process which is using kernel threads (like mysqld from ports) the ps utility shows procnames like [procname]:

mypc:/# ps -auxw | grep sql
root    22885  0.0  0.0  1584   964  p0  S+    7:14PM   0:00.00 grep sql
mysql    7204  0.0  0.0  1776   224  p2- IJ   11Aug05   0:00.02 [sh]
mysql    7240  0.0  0.9 67560 33304  p2- SJ   11Aug05   9:52.96 [mysqld]

The problem is, that you can not use 
procname="[mysqld]"
in your rcng script like /usr/local/etc/rc.d/mysqld-server.sh.

Because of this, rcng script functions like status, stop, restart are not working. Process is not find, pidnumber is not enough.
The behaviour is defined in /etc/rc.subr, line 267.
>How-To-Repeat:
see full description.      
>Fix:
correct handling of procname variable in /etc/rc.subr with escaping?
Below patch works, but maybe a shell scripting guru would make it better...

# $FreeBSD: src/etc/rc.subr,v 1.31.2.1 2005/01/17 11:51:00 keramida Exp $
--- rc.subr     Thu Aug 11 15:18:52 2005
+++ /etc/rc.subr        Thu Aug 11 15:14:06 2005
@@ -267,7 +267,7 @@
                _procnamebn=${_procname##*/}
                _fp_args='_arg0 _argv'
                _fp_match='case "$_arg0" in
-                   $_procname|$_procnamebn|${_procnamebn}:|"(${_procnamebn})")'
+                   "$_procname"|$_procnamebn|${_procnamebn}:|"(${_procnamebn})")'
        fi
 
        _proccheck='

>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200508201731.j7KHVMCn020082>