route(8) core dump, possible gcc(1) related
Bjoern A. Zeeb
bz at FreeBSD.org
Mon Dec 17 00:33:15 PST 2007
On Sun, 16 Dec 2007, Sean Chittenden wrote:
Hi all,
>>> 1033 q = strchr(s,'/');
>>> 1034 if (q && which == RTA_DST) {
>>> 1035 *q = '\0';
>>> 1036 if ((val = inet_network(s)) != INADDR_NONE) {
>>> 1037 inet_makenetandmask(
>>> 1038 val, &su->sin, strtoul(q+1,
>>> 0, 0)); 1039 return (0);
>>> 1040 }
>>> 1041 *q = '/';
>>> 1042 }
>>>
>>> Any comments?
>>>
>> Preliminary results show that inet_network from libc is somehow
>> thrashing $ebx even if it is not supposed to. -O0 disables value
>> caching in register and always allocates stack slot for the 'q'
>> pointer, so the problem is not visible.
>
>
> Does setting q to volatile suffice as a workaround for the problem? I was
> talking to someone last week that said they have taken to using volatile as a
> work around for GCC aligning instructions inside of conditionals improperly.
I have a patch sitting in multiple queues to address the route issue.
It's just time, review and all that in the before christmas in the
middle of two releases, ... season that slows certain things down.
Can we, for now, assume that there is a fix and it'll get in as soon
as possible and stop wasting more people's time on this? Thanks.
--
Bjoern A. Zeeb bzeeb at Zabbadoz dot NeT
Software is harder than hardware so better get it right the first time.
More information about the freebsd-current
mailing list