-------- Original-Nachricht --------
> Datum: Mon, 05 Nov 2007 22:12:03 +0100
> Von: Jimmy Jazz <[EMAIL PROTECTED]>
> An: [email protected]
> Betreff: [dspam-users] dspam segfaults randomly: free(): invalid pointer
> Hello,
>
Hello
> i don't know if it is the right place to report bugs...
>
> Distribution: Gentoo
> Version: mail-filter/dspam-3.8.0-r7
> Patches applied: dspam-eol.patch, dspam-tempfail.diff, patch-src__dspam.c
> (Also patches seems to be harmless and help (at least one) dspam to play
> well with qmail)
>
Can you explain the logic behind the stuff in patch-src__dspam.c?
Your code would match the username "[EMAIL PROTECTED]" in a group with the
following members: "[EMAIL PROTECTED],[EMAIL PROTECTED]"
>From my viewpoint this is wrong (the original code would as well make that
>match).
Your code has the benefit to not match if the memberlist contains "*@" or
"[EMAIL PROTECTED]" or "[EMAIL PROTECTED]" while the original code would match
that.
Would it not be better to use this instead your code:
if (!strcmp (user, username) || !strcmp(user, "*") ||
(!strncmp(user, "*@", 2) && !strcmp(user+1, strchr(username,'@'))))
> Environment: qmail, vpopmail
> [code]
> cat .qmail-default
> | strace -o /var/tmp/strace.$$.log /usr/bin/dspam --deliver=innocent
> --user [EMAIL PROTECTED] --process --debug --stdout |
> /var/vpopmail/bin/vdelivermail '' bounce-no-mailbox
> [/code]
>
> Problem:
> Randomly, dspam segfaults at
>
> dspam[12393]: segfault at 00000014 eip b7b5cb17 esp bf8720dc error 4
> dspam[12432]: segfault at 6c697a67 eip b7f44c10 esp bf92c650 error 4
> dspam[12450]: segfault at 00000014 eip b7b87b17 esp bfa12a5c error 4
> dspam[12817]: segfault at 0000000c eip b7b84b17 esp bfba009c error 4
>
> i used strace, to figure out where the problem could be. Here is the
> output before dspam will crash,
>
> writev(2, [{"*** glibc detected *** ", 23}, {"/usr/bin/dspam", 14}, {":
> ", 2}, {"free(): invalid pointer", 23}, {": 0x", 4}, {"080ed350", 8}, {"
> ***\n", 5}], 7) = 79
> open("/etc/ld.so.cache", O_RDONLY) = 3
> fstat64(3, {st_mode=S_IFREG|0644, st_size=147944, ...}) = 0
> mmap2(NULL, 147944, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb78ed000
> close(3) = 0
> open("/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/libgcc_s.so.1", 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\260\30\0\0004\0\0\0"...,
> 512) = 512
> mmap2(NULL, 2097152, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE,
> -1, 0) = 0xb769e000
> munmap(0xb769e000, 401408) = 0
> munmap(0xb7800000, 647168) = 0
> mprotect(0xb7700000, 135168, PROT_READ|PROT_WRITE) = 0
> fstat64(3, {st_mode=S_IFREG|0644, st_size=42348, ...}) = 0
> mmap2(NULL, 45508, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0)
> = 0xb7f4d000
> mmap2(0xb7f57000, 8192, PROT_READ|PROT_WRITE,
> MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9) = 0xb7f57000
> close(3) = 0
> munmap(0xb78ed000, 147944) = 0
> futex(0xb7cad9fc, FUTEX_WAKE, 2147483647) = 0
> futex(0xb7f580a4, FUTEX_WAKE, 2147483647) = 0
> rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0
> tgkill(13069, 13069, SIGABRT) = 0
> --- SIGABRT (Aborted) @ 0 (0) ---
> +++ killed by SIGABRT +++
>
> and the email get lost :(
>
> I "hope" it is reproducible for you. That would certainly ease the
> tracing.
>
> Also, i'm using sys-libs/glibc-2.6.1 libraries, gcc 4.1.2 and kernel
> 2.6.23
>
> Jj
>
--
"Feel free" - 5 GB Mailbox, 50 FreeSMS/Monat ...
Jetzt GMX ProMail testen: http://www.gmx.net/de/go/promail