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>