Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 24 Jul 2015 15:10:11 -0400
From:      Allan Jude <allanjude@freebsd.org>
To:        Antoine Brodin <antoine@FreeBSD.org>
Cc:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   Re: svn commit: r285803 - head/bin/ls
Message-ID:  <55B28D93.5090003@freebsd.org>
In-Reply-To: <CAALwa8=yxd6%2BTmNgrFNwJP_ZAjHWLhdEqumfsPgf%2BPfWCn5pFw@mail.gmail.com>
References:  <201507221958.t6MJwLEk015409@repo.freebsd.org> <CAALwa8=yxd6%2BTmNgrFNwJP_ZAjHWLhdEqumfsPgf%2BPfWCn5pFw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2015-07-24 13:58, Antoine Brodin wrote:
> On Wed, Jul 22, 2015 at 9:58 PM, Allan Jude <allanjude@freebsd.org> wrote:
>> Author: allanjude (doc committer)
>> Date: Wed Jul 22 19:58:21 2015
>> New Revision: 285803
>> URL: https://svnweb.freebsd.org/changeset/base/285803
>>
>> Log:
>>    Remove an excess space accidently introduced in the output in ls(1) by r285734
>>
>>    Spotted by:   dim
>>    Approved by:  eadler (mentor)
>>    Sponsored by: ScaleEngine Inc.
>>    Differential Revision:        https://reviews.freebsd.org/D3152
>>
>> Modified:
>>    head/bin/ls/print.c
>
> Hi,
>
> Some recent (less than 5 days old) changes on ls(1) broke it on i386,
> and more than 8000 ports are affected by this.
>
> See for instance
> http://beefy3.nyi.freebsd.org/data/head-i386-default/p392703_s285807/logs/errors/autoconf-2.69.log
>
>  From the log:
> %%%
> gmake[3]: Entering directory
> '/wrkdirs/usr/ports/devel/autoconf/work/autoconf-2.69/doc'
> Segmentation fault (core dumped)
> ../build-aux/mdate-sh: failed parsing 'ls -L -l -d -n /' output
> Updating ./version.texi
> %%%
> It used to build fine with r285732 and doesn't work anymore at r285807.
>
> Cheers,
>
> Antoine
>
>
>>
>> Modified: head/bin/ls/print.c
>> ==============================================================================
>> --- head/bin/ls/print.c Wed Jul 22 19:55:32 2015        (r285802)
>> +++ head/bin/ls/print.c Wed Jul 22 19:58:21 2015        (r285803)
>> @@ -456,7 +456,7 @@ printtime(const char *field, time_t ftim
>>          snprintf(fmt, sizeof(fmt), "{d:%s/%%hs} ", field);
>>          xo_attr("value", "%ld", (long) ftime);
>>          xo_emit(fmt, longstring);
>> -       snprintf(fmt, sizeof(fmt), "{en:%s/%%ld} ", field);
>> +       snprintf(fmt, sizeof(fmt), "{en:%s/%%ld}", field);
>>          xo_emit(fmt, (long) ftime);
>>   }
>>
>>

The r285734 change didn't explicitly cast some references to uid_t, 
resulting in a segfault on i386. Clang generated a warning about this 
immediately while I was debugging when I duplicated the xo_emit command 
as a printf.

Can we teach our clang that xo_emit is printf, and so the same 
formatting type matching should be checked? That would be very helpful.

I have posted a review for the fix: https://reviews.freebsd.org/D3191

-- 
Allan Jude



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?55B28D93.5090003>