Hello,

i just ran into sth weird.
I manually applied the glibc update and
replaced:

glibc-2.2.93-5.i686.rpm
glibc-common-2.2.93-5.i386.rpm
glibc-devel-2.2.93-5.i386.rpm

with the updates:

glibc-2.3.2-4.80.i686.rpm
glibc-common-2.3.2-4.80.i386.rpm
glibc-devel-2.3.2-4.80.i386.rpm

Simply everything still works well - except
the amavisd-new startscript in /etc/init.d
(as I recognized during reboot - as it suddenly
locked the box at the attempt to start amavisd-new).
There was ofcourse no way to ctrl-c this and so I had
to boot into rescue mode to deactivate amavisd during
the init process.

As I then figured out is amavisd-new still working
great when I start it manually but using it's initscript
it magically hangs in a stage where the line:

<snip>
Starting amavisd: + shift
+ initlog -q -c '/usr/local/sbin/amavisd -c /usr/local/etc/amavis/amavisd.conf'
</snip>

gets called (as I saw with `sh -vx amavisd start`).
Practically all other scripts call `initlog` too - but only this
one fails. :/

I've attached 2 straces to this mail:

amavisd-new.with.2.3.2-4.80GLIBCi686_WORKS_NOT - showing that it somehow
deadloops.... I ctrl-c'ed there to break the strace recording

amavisd-new.with.2.2.93-5GLIBCi686_WORKS_PERFECT - shows how perfectly
it normally works.

The amavisd initscript is attached too - for those who might have some
clue why it won't work after the glibc update.

PS: I can ofcourse reproduce the above straces when I upgrade to
glibc-2.3.2 again .... and it then magically works again when I downgrade
to glibc-2.2.3

initlog is originally from:

[EMAIL PROTECTED] init.d]# rpm -qf /sbin/initlog
initscripts-6.95-1


Thanks in advance to anyone who can shed
some light on this :)

Best regards,

Frank Reppin

-- 

*no sig*
execve("/sbin/initlog", ["initlog", "-q", "-c", "/usr/local/sbin/amavisd -c 
/usr/local/etc/amavis/amavisd.conf start"], [/* 22 vars */]) = 0
uname({sys="Linux", node="cisco", ...}) = 0
brk(0)                                  = 0x8050aac
open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=30346, ...}) = 0
old_mmap(NULL, 30346, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40014000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300Y\1"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1292588, ...}) = 0
old_mmap(NULL, 1298244, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4001c000
old_mmap(0x40152000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x136000) 
= 0x40152000
old_mmap(0x40157000, 8004, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 
-1, 0) = 0x40157000
close(3)                                = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x40159000
munmap(0x40014000, 30346)               = 0
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=30313968, ...}) = 0
mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4015a000
mmap2(NULL, 204800, PROT_READ, MAP_PRIVATE, 3, 0x8e1) = 0x4035a000
brk(0)                                  = 0x8050aac
brk(0x8051aac)                          = 0x8051aac
brk(0)                                  = 0x8051aac
brk(0x8052000)                          = 0x8052000
mmap2(NULL, 4096, PROT_READ, MAP_PRIVATE, 3, 0x922) = 0x40014000
close(3)                                = 0
open("/etc/initlog.conf", O_RDONLY)     = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=658, ...}) = 0
read(3, "# /etc/initlog.conf\n#\n# initlog "..., 658) = 658
close(3)                                = 0
brk(0)                                  = 0x8052000
brk(0x8053000)                          = 0x8053000
brk(0)                                  = 0x8053000
brk(0x8054000)                          = 0x8054000
pipe([3, 4])                            = 0
pipe([5, 6])                            = 0
pipe([7, 8])                            = 0
open("/dev/null", O_WRONLY)             = 9
getpid()                                = 6211
fork()                                  = 31882
close(4)                                = 0
close(6)                                = 0
close(9)                                = 0
brk(0)                                  = 0x8054000
brk(0x8056000)                          = 0x8056000
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(31882, 0xbffff82c, WNOHANG, NULL) = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = -1 
EINTR (Interrupted system call)
--- SIGINT (Interrupt) ---
+++ killed by SIGINT +++
execve("/sbin/initlog", ["initlog", "-q", "-c", "/usr/local/sbin/amavisd -c 
/usr/local/etc/amavis/amavisd.conf start"], [/* 22 vars */]) = 0
uname({sys="Linux", node="cisco", ...}) = 0
brk(0)                                  = 0x8050aac
open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=31355, ...}) = 0
old_mmap(NULL, 31355, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40013000
close(3)                                = 0
open("/lib/i686/libc.so.6", O_RDONLY)   = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220Y\1"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=1395734, ...}) = 0
old_mmap(0x42000000, 1239844, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x42000000
mprotect(0x42126000, 35620, PROT_NONE)  = 0
old_mmap(0x42126000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x126000) 
= 0x42126000
old_mmap(0x4212b000, 15140, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 
-1, 0) = 0x4212b000
close(3)                                = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x4001b000
munmap(0x40013000, 31355)               = 0
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=30314256, ...}) = 0
mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4001c000
mmap2(NULL, 204800, PROT_READ, MAP_PRIVATE, 3, 0x8e1) = 0x4021c000
brk(0)                                  = 0x8050aac
brk(0x8051aac)                          = 0x8051aac
brk(0x8052000)                          = 0x8052000
mmap2(NULL, 4096, PROT_READ, MAP_PRIVATE, 3, 0x922) = 0x40013000
close(3)                                = 0
open("/etc/initlog.conf", O_RDONLY)     = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=658, ...}) = 0
read(3, "# /etc/initlog.conf\n#\n# initlog "..., 658) = 658
close(3)                                = 0
brk(0x8053000)                          = 0x8053000
brk(0x8054000)                          = 0x8054000
pipe([3, 4])                            = 0
pipe([5, 6])                            = 0
pipe([7, 8])                            = 0
open("/dev/null", O_WRONLY)             = 9
getpid()                                = 519
fork()                                  = 2340
close(4)                                = 0
close(6)                                = 0
close(9)                                = 0
brk(0x8056000)                          = 0x8056000
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(2340, 0xbffff82c, WNOHANG, NULL)  = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI}, {fd=5, events=POLLIN|POLLPRI}], 2, 500) = 0
wait4(2340, 0xbffff82c, WNOHANG, NULL)  = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI, revents=POLLHUP}, {fd=5, events=POLLIN|POLLPRI}], 
2, 500) = 1
wait4(2340, 0xbffff82c, WNOHANG, NULL)  = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI, revents=POLLHUP}, {fd=5, events=POLLIN|POLLPRI}], 
2, 500) = 1
wait4(2340, 0xbffff82c, WNOHANG, NULL)  = 0
nanosleep({0, 500000}, NULL)            = 0
poll([{fd=3, events=POLLIN|POLLPRI, revents=POLLHUP}, {fd=5, events=POLLIN|POLLPRI}], 
2, 500) = 1
wait4(2340, 0xbffff82c, WNOHANG, NULL)  = 0
nanosleep({0, 500000}, NULL)            = 0
--- SIGCHLD (Child exited) ---
poll([{fd=3, events=POLLIN|POLLPRI, revents=POLLHUP}, {fd=5, events=POLLIN|POLLPRI, 
revents=POLLHUP}], 2, 500) = 2
wait4(2340, [WIFEXITED(s) && WEXITSTATUS(s) == 0], WNOHANG, NULL) = 2340
_exit(0)                                = ?
#!/bin/sh
#
# amavisd       This script controls the amavisd-new daemon.
#               (to be used with version amavisd-new-20020630 or later)
#

# chkconfig: 2345 79 28
# description: amavisd is an interface between MTA and content checkers
# processname: amavisd
# pidfile: /var/amavis/amavisd.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

#prog="/opt/amavisd-new/sbin/amavisd"
prog="/usr/local/sbin/amavisd"
prog_base="$(basename ${prog})"

prog_config_file="/usr/local/etc/amavis/amavisd.conf"

# Source configuration.
[ -e /etc/sysconfig/${prog_base} ] && . /etc/sysconfig/${prog_base}

## Check that networking is up.
#[ ${NETWORKING} = "no" ] && exit 0

RETVAL=0

# See how we were called.
case "$1" in
  start)
        action $"Starting ${prog_base}:" ${prog} -c ${prog_config_file}
        RETVAL=$?
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/${prog_base}
        echo
        ;;
  stop)
        action $"Shutting down ${prog_base}:" ${prog} -c ${prog_config_file} stop
        RETVAL=$?
        if [ $RETVAL -eq 0 ] ; then
                echo "${prog_base} stopped"
                rm -f /var/lock/subsys/${prog_base}
        else
                echo
        fi
        ;;
  status)
        status ${prog_base}
        RETVAL=$?
        ;;
  restart)
        $0 stop
        $0 start
        RETVAL=$?
        ;;
  reload)
        action $"Reloading ${prog_base}:" ${prog} -c ${prog_config_file} reload
        RETVAL=$?
        ;;
  *)
        echo "Usage: $0 {start|stop|status|restart|reload}"
        exit 1
esac

exit $RETVAL

Reply via email to