problems with a C script, exiting with signal 10

Patrick Mahan mahan at mahan.org
Thu Aug 7 16:45:10 UTC 2008



Jordi Moles Blanco presented these words - circa 8/7/08 3:13 AM->
> Hi,
> 
> I've got this home-made script, written in C, on a  Freebsd 7.0 server 
> with different versions of postfix: 2.3,2,4 and 2.5
> 
> The problem is that, while most of the time it works like a charm, 
> sometimes it crashes and bounces the message. It's not really a big 
> deal, cause the sender gets notified that their mail wasn't delivered 
> and hopefully, they will resend it. However, the problem is that I've 
> tried to debug my script but found nothing wrong at all, cause it only 
> fails from time to time, let's say... once for each 2000 messages that 
> postfix receives, and it appears to do so in a random way.
> 
> As i said... postfix can fail to deliver a message to one particular 
> mailbox, but if then you resend the very same message to the very same 
> mailbox, it will be delivered.
> 
> The error is reported in both "maillog" and "messages", like this:
> 
> 
> ******/var/log/maillog********
> Aug  7 01:55:19 mail01 postfix/pipe[27534]: 3E1A0143709: 
> to=<EMAIL_ACCOUNT>, relay=quota_postfix, delay=0.23, 
> delays=0.11/0/0/0.11, dsn=5.3.0, status=bounced (Command died with 
> signal 10: "/usr/local/etc/postfix/quota_postfix")
> 
> 
> *****/var/log/messages*******
> Aug  7 01:55:19 mail01 kernel: pid 29535 (quota_postfix), uid 125: 
> exited on signal 10
> 

Well signal 10 is SIGBUS which is indicative of (generally) a bad address,
non-aligned memory address (on platforms it matters) or a hardware error.
I would look for places you are dereferencing a pointer without perhaps
first validating it.

Given that it rarely occurs, I might suspect that you are allocating some
memory, but failing to completely initialize (malloc() doesn't zero out
memory) it or assuming it is already initialize.

Good luck,

Patrick
> 
> Here you have some extra information about the script itself and the 
> master.cf
> 
> 
> *****/usr/local/etc/postfix/quota_postfix***
> 
> # ls -la /usr/local/etc/postfix/quota_postfix
> -rwsr-xr-x  1 postfix  postfix  20048 Aug  4 10:18 
> /usr/local/etc/postfix/quota_postfix
> 
> It's got de suid flag cause it performs a "du" command and other file 
> operations which need permissions, although i've tried with other groups 
> of permissions and it eventually crashes anyway with "signal 10"
> 
> ******master.cf*********
> 
> .........
> 
> # spamfilter
> spamfilter      unix    -       n       n       -       20      pipe
> flags=R user=filter argv=/home/antispam.pl "localhost:10027" "antispam" 
> "${sender}" "${recipient}" "/usr/local/bin/spamc"
> 
> # from spamfilter to smtpd:10026
> localhost:10027 inet    n       -       n       -       100       smtpd 
> -o content_filter=quota_postfix
> 
> 
> # quota_postfix
> quota_postfix      unix    -       n       n       -       20      pipe
> flags=R user=filter argv=/usr/local/etc/postfix/quota_postfix 
> "localhost" "10028" "${sender}" "${recipient}" "${domain}"
> 
> # from quota_postfix to smtpd:10028
> localhost:10028 inet    n       -       n       -       100       smtpd 
> -o content_filter=
> 
> ................
> 
> So far, any program which crashed would leave a ".core" file in 
> /usr/crash, but this one is not doing the same, so... i can't actually 
> debug from the core file either.
> Sysctl in my FreeBSD server is ok, but i guess that postfix, somehow is 
> preventing this filter from generating a core file. Is that possible? Or 
> am i completely wrong?
> 
> How could I, at least, generate the .core file?
> 
> Thanks.
> 
> 
> _______________________________________________
> freebsd-questions at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-questions
> To unsubscribe, send any mail to 
> "freebsd-questions-unsubscribe at freebsd.org"
> 
> 


More information about the freebsd-questions mailing list