Re: route(8) core dump, possible gcc(1) related

From: Bjoern A. Zeeb <bz_at_FreeBSD.org>
Date: Mon, 17 Dec 2007 08:11:35 +0000 (UTC)
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.
Received on Mon Dec 17 2007 - 07:33:15 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:24 UTC