On Sun, 2009-06-28 at 19:14 +0100, Adam D. Barratt wrote:
> Package: mailutils
> Version: 1:2.0+dfsg1-2
> Severity: serious
>
> mailutils is failing to build on armel. The relevant section of the log
> appears to be:
>
> /===============================================
> |
> | === frm tests ===
> |
> | Schedule of variations:
> | unix
> |
> | Running target unix
> | Using /usr/share/dejagnu/baseboards/unix.exp as board description file for
> target.
> | Using /usr/share/dejagnu/config/unix.exp as generic interface file for
> target.
> | WARNING: Couldn't find tool config file for unix, using default.
> | Running /build/buildd/mailutils-2.0+dfsg1/frm/testsuite/frm/test.exp ...
> | FAIL: frm -q %nonexistent
> |
> \===============================================
>From my debugging so far, the failure appears to be due to a real bug,
rather than a problem with the testsuite; it looks like a NULL pointer
is being stored in a dictionary(ish) and then being passed to strcmp()
with predictably explosive results.
In this particular case, calling "frm" with the arguments "-q %
nonexistent" tries to add an item to the dictionary associating the key
"user" to the value "nonexistent". Running "frm -q %nonexistent" (or
more precisely, "frm/.libs/lt-frm -q %nonexistent") produces a segfault,
as does using %adam and so on.
The problem seems to be in this section of code from
mailbox/assoc.c:assoc_lookup_or_install; "name" is a const char*
containing "user" and elem a structure whose "name" element is a char*.
if (elem->name == NULL)
{
*install = 1;
if (assoc->flags & MU_ASSOC_COPY_KEY)
elem->name = (char *) name;
else
{
elem->name = strdup (name);
if (!elem->name)
return ENOMEM;
}
*elp = elem;
return 0;
}
Assuming I'm driving gdb correctly, the strdup() line is being executed,
and afterwards elem->name is still NULL, suggesting that the strdup()
failed. However, the ENOMEM return isn't being hit and the "*elp =
elem" assignment is instead.
Regards,
Adam
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]