Hello,

Working on a rsyslog install on an AIX platform. 

The install of rsyslog worked with no errors and after editing the
rsyslog.conf file I get a Segmentation fault error:

Starting Rsyslogd... ./Srsyslog[66]: 9633992 Segmentation fault(coredump)
done.


Here are the statements added to the rsyslog.conf file (ip address was
masked with 9's for this email):

######## TCP Forwarding #########
$WorkDirectory /var/log/rsyslog # default location for work (spool) files
$ActionQueueType LinkedList # use asynchronous processing
$ActionQueueFileName srvrfwd # set file name, also enables disk mode
$ActionResumeRetryCount -1 # infinite retries on insert failure
$ActionQueueSaveOnShutdown on # save in-memory data if rsyslog shuts down

# Temporary log server IP address
*.* @@999.999.999.999:5140

Here is the output from the dbx debug tool of the core file:

Type 'help' for help.
[using memory image in /etc/rc.d/rc2.d/core]
reading symbolic information ...
Segmentation fault in glink.strlen at 0xd55da6d0 ($t1)
0xd55da6d0 (strlen+0x30) 800c0000         lwz   r0,0x0(r12)
(dbx)  thread  state-k     wchan    state-u    k-tid   mode held scope
function
>$t1     run                  running  30277685     k   no   sys  strlen
(dbx) glink.strlen() at 0xd55da6d0
netClassInit(pModInfo = 0x30012e68), line 1636 in "net.c"
should_use_so_bsdcompat(0x5, 0x30012e70, 0x30012e88, 0x30005ab8,
0x30012e68), line 1665 in "net.c"
doModInit(modInit = 0xf0ef4494, name = "lmnet", pModHdlr = 0x00000003),
line 425 in "modules.c"
Load(pModName = "lmnet"), line 851 in "modules.c"
UseObj(srcFile = "conf.c", pObjName = "net", pObjFile = "lmnet", pIf =
0x300013e0), line 1157 in "obj.c"
confClassInit(pModInfo = (nil)), line 1294 in "conf.c"
rsrtInit(ppErrObj = 0x2ff226f4, pObjIF = 0x300039d0), line 186 in
"rsyslog.c"
InitGlobalClasses(), line 2247 in "syslogd.c"
legacyOptsParseTCP(ch = '^P', arg = warning: Unable to access address
0x1 from core
(invalid char ptr (0x00000001))), line 2610 in "syslogd.c"
main(argc = 5, argv = 0x2ff2293c), line 2907 in "syslogd.c"

Here is the rsyslog script that executes:

#!/usr/bin/ksh
#
# rsyslog:     Startup script for rsyslogd.
#
# Description: Rsyslogd is an enhanced multi-threaded syslogd supporting,
#              among others, MySQL, syslog/tcp, RFC 3195, permitted
#              sender lists, filtering on any message part, and fine
#              grain output format control.
#
# Mar 09, 2011, Michael Perzl ([email protected])
#

NAME=rsyslog
PROG=${NAME}d

RSYSLOGD_BIN=/opt/freeware/sbin/${PROG}

PIDFILE=/var/run/${PROG}.pid


# define some generic commands
AWK=/usr/bin/awk
CAT=/usr/bin/cat
ECHO=/usr/bin/echo
GREP=/usr/bin/grep
KILL=/usr/bin/kill
MKDIR=/usr/bin/mkdir
PRINTF=/usr/bin/printf
PS=/usr/bin/ps
RM=/usr/bin/rm


# check for missing binaries (stale symlinks should not happen)
test -x ${RSYSLOGD_BIN} ||
    {
      $ECHO "${RSYSLOGD_BIN} not installed"
      if [ "$1" = "stop" ] ; then
          exit 0
      else
          exit 5
      fi
    }


# source config
if [ -f /etc/sysconfig/${NAME} ] ; then
    . /etc/sysconfig/${NAME}
fi


case "$1" in
    start)
        if [ -r ${PIDFILE} ]; then
            pid=`$CAT ${PIDFILE}`
            if [ "`$PS -ef | $GREP -v grep | $GREP ${PROG} | $GREP
${pid} | $AWK '{ print $2 }'`" = "${pid}" ] ; then
                $ECHO "Rsyslogd is already running with PID ${pid}."
                exit 1
            else
                $RM -f ${PIDFILE}
            fi
        fi
        $PRINTF "Starting Rsyslogd... "

        ## start daemon and write PID to file ${PIDFILE}
        $MKDIR -p /var/run
        ${RSYSLOGD_BIN} -i "${PIDFILE}" ${SYSLOGD_OPTIONS}
        $ECHO "done."
        ;;
    stop)
        $PRINTF "Stopping Rsyslogd... "
        ## stop daemon
        if [ -r ${PIDFILE} ]; then
            $KILL -TERM `$CAT ${PIDFILE}`
            $RM -f ${PIDFILE}
        fi
        $ECHO "done."
        ;;
    status)
        if [ -r ${PIDFILE} ]; then
            pid=`$CAT ${PIDFILE}`
            if [ `$PS -ef | $GREP -v grep | $GREP ${PROG} | $GREP ${pid}
| $AWK '{ print $2 }'` = ${pid} ] ; then
                $ECHO "Rsyslogd is running with PID ${pid}."
            fi
        else
            $ECHO "Rsyslogd is not running."
        fi
        ;;
    condrestart)
        if [ -r ${PIDFILE} ]; then
            pid=`$CAT ${PIDFILE}`
            if [ `$PS -ef | $GREP -v grep | $GREP ${PROG} | $GREP ${pid}
| $AWK '{ print $2 }'` = ${pid} ] ; then
                $0 stop
                $0 start
            fi
        fi
        ;;
    restart)
        ## Stop the service and regardless of whether it was
        ## running or not, start it again.
        $0 stop
        $0 start
        ;;
    *)
        $ECHO "Usage: $0 {start|stop|status|condrestart|»restart}"
        exit 1
        ;;
esac


The debug log seems to be complaining about a string length.  Any help
assisting in correcting this problem would be greatly appreciated.

Tom

_______________________________________________
rsyslog mailing list
http://lists.adiscon.net/mailman/listinfo/rsyslog
http://www.rsyslog.com/professional-services/

Reply via email to