From owner-freebsd-stable@FreeBSD.ORG Mon Feb 7 23:05:44 2005 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5AB7016A4F7 for ; Mon, 7 Feb 2005 23:05:44 +0000 (GMT) Received: from smtp814.mail.sc5.yahoo.com (smtp814.mail.sc5.yahoo.com [66.163.170.84]) by mx1.FreeBSD.org (Postfix) with SMTP id 1988E43D46 for ; Mon, 7 Feb 2005 23:05:44 +0000 (GMT) (envelope-from noackjr@alumni.rice.edu) Received: from unknown (HELO optimator.noacks.org) (noacks@swbell.net@70.240.249.100 with login) by smtp814.mail.sc5.yahoo.com with SMTP; 7 Feb 2005 23:05:43 -0000 Received: from localhost (localhost [127.0.0.1]) by optimator.noacks.org (Postfix) with ESMTP id F399063F3; Mon, 7 Feb 2005 17:05:42 -0600 (CST) Received: from optimator.noacks.org ([127.0.0.1]) by localhost (optimator.noacks.org [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 49566-10; Mon, 7 Feb 2005 17:05:40 -0600 (CST) Received: from [127.0.0.1] (optimator [192.168.1.11]) by optimator.noacks.org (Postfix) with ESMTP id 1C3226161; Mon, 7 Feb 2005 17:05:40 -0600 (CST) Message-ID: <4207F443.8020400@alumni.rice.edu> Date: Mon, 07 Feb 2005 17:05:39 -0600 From: Jon Noack User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: freebsd4@fadesa.es References: <42073FD8.5CCA7EC5@fadesa.es> <20050207102140.GA56842@xor.obsecurity.org> <42074353.9E3EECBE@fadesa.es> <4207C5C7.80707@alumni.rice.edu> <4207DEEA.E7278E38@fadesa.es> In-Reply-To: <4207DEEA.E7278E38@fadesa.es> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 8bit X-Virus-Scanned: amavisd-new at noacks.org cc: freebsd-stable@freebsd.org Subject: Re: 50% of packets lost only on local interfaces X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: noackjr@alumni.rice.edu List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Feb 2005 23:05:44 -0000 José M. Fandiño wrote: > Jon Noack wrote: > >>>> Finally, I found the culprit: >>>>> >>>>> CFLAGS="" \ 100% of the transmited traffic is received >>>>> COPTFLAGS="" / >>>>> >>>>> CFLAGS= -pipe \ 50% of the transmited traffic is received >>>>> COPTFLAGS= -pipe / >>>> > >>> That would be exceedingly strange, because the above two options >>>> are supposed to produce *no differences at all* with the code >>>> generation. >>>> > >>> I'd believe that -O and no -O could behave differently, although >>>> I don't know why you'd want to compile without -O. >>> > >> because by the time I was compiling the system I was no interested >>> in compiler optimizations. Now I prefer a lightly optimized >>> kernel than a system with 50% of packet lost in local interfaces >>> ;-) >> > > -O is the default for -STABLE; anything else might very well cause >> problems. In fact, check out the CFLAGS section of >> /usr/share/examples/etc/make.conf: > > "Note that optimization settings other than -O and -O2 are not >> recommended or supported for compiling the world or the kernel - >> please revert any nonstandard optimization settings to "-O" before >> submitting bug reports without patches to the developers." > > I think this comment was referring to higher optimizations levels > than -O2, anyway removing "-O" shouldn't be so harmful. The explanation I've heard (I have no actual knowledge here, I'm just good at repeating others) is that gcc doesn't compile any ASM with -O0 (which is what you get with CFLAGS="-pipe"). This Breaks Things(tm): http://docs.freebsd.org/cgi/mid.cgi?20020623214947.J84322 kern/52764 is another example: http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/52764 More generically it makes sense that gcc treat code differently with -O0 than with -O. With the vast majority of users using -O and different code paths being taken with -O0, it doesn't surprise me at all that there are issues. It should be assumed that nonstandard means exactly what it says: something other than -O (or more recently -O2). If it breaks, try -O. If it's still broken with -O, report away. Regards, Jon P.S. Historically, the reason to use -O0 was for easier debugging. It appears that steps have been taken to ease debugging with -O to the point that it is no longer necessary to use -O0 (with the FreeBSD kernel and world, at least); I don't recall a FreeBSD developer ever asking someone to recompile with -O0 to help solve a problem...