Hello,

Today, I observed smtpd that was in endless loop and then broken.



ar% ps
...
none          20392    0:01  28:27      264K Running  smtpd
...



ar% ACID 20392
/proc/20392/text:386 plan 9 executable
/sys/lib/acid/port
/sys/lib/acid/386
acid: lstk()
receiver(path=0x41f58)+0x1c5 /sys/src/cmd/upas/smtp/smtpd.c:625
        sender=0x379bf
        rcpt=0x41ad8
zzparse()+0x2c9 /sys/src/cmd/upas/smtp/smtpd.y:773
        save1=0x0
        save2=0x0
        save3=0x0
        save4=0x0
        zzstate=0xf
        zzchar=0xffffffff
        zzs=0x3f36b
        zzp=0xdfffe41c
        zzn=0xfffffc18
main(argv=0xdfffefa4,argc=0x0)+0x261 /sys/src/cmd/upas/smtp/smtpd.c:194
        netdir=0xdfffefbc
        _argc=0x6e
        _args=0x376c2
        buf=0x0
_main+0x31 /sys/src/libc/386/main9.s:16
acid: src(receiver+0x1c5)
/sys/src/cmd/upas/smtp/smtpd.c:625
 620    
 621            logged = 0;
 622    
 623            /* forwarding() can modify 'path' on loopback request */
624 if(filterstate == ACCEPT && fflag && !authenticated && forwarding(path)) {
>625                 syslog(0, "smtpd", "Bad Forward %s (%s/%s) (%s)",
 626                            s_to_c(senders.last->p), him, nci->rsys, 
s_to_c(path));
 627                    rejectcount++;
 628                    reply("550 5.7.1 we don't relay.  send to [EMAIL PROTECTED] 
for "
 629                            "loopback.\r\n");
 630                    return;


I don't observe "Bad Forward" of this mail in /sys/log/smtpd.

After some amount of time,

ar% ps
...
none          20392    0:02  44:57      264K Broken   smtpd
...

acid: lstk()
errstr()+0x7 /sys/src/libc/9syscall/errstr.s:5
syslog(logname=0x3760a,cons=0x0,fmt=0x37610)+0x20 /sys/src/libc/9sys/ syslog.c:46
        err=0x616d2f27
        d=0x0
        ctim=0x0
        buf=0x0
        p=0x0
        arg=0x0
        n=0x0
catchalarm(msg=0xdfffe1ac)+0x5d /sys/src/cmd/upas/smtp/smtpd.c:68
        rv=0x1
notifier+0x30 /sys/src/libc/port/atnotify.c:15
acid: src(syslog+0x29)
/sys/src/libc/9sys/syslog.c:46
 41             Dir *d;
 42             char err[ERRMAX];
 43     
 44             err[0] = '\0';
 45             errstr(err, sizeof err);
>46          lock(&sl);
 47     
 48             /*
 49              *  paranoia makes us stat to make sure a fork+close
 50              *  hasn't broken our fd's
 51              */
acid:


I hope the above information is helpful to fix the problem.

Kenji Arisawa


On 2008/11/06, at 21:59, erik quanstrom wrote:

Is this phenomenon specific to me?

No, it isn't:

term% ps|grep Broken
none            917    2:08  42:50      264K Broken   smtpd

impressive!

i don't see this problem, but i have implemented
some fairly agressive spam control.  perhaps this
shows up after i tend to hang up.

(it is possible to use nupas smtpd with regular old
upas.)

would anyone mind sending me a full backtrace?

- erik



Reply via email to