From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NrFYD-0007Tc-Ou for qemu-devel@nongnu.org; Mon, 15 Mar 2010 15:02:05 -0400 Received: from [199.232.76.173] (port=38846 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NrFYD-0007TI-DI for qemu-devel@nongnu.org; Mon, 15 Mar 2010 15:02:05 -0400 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NrFYA-00040Z-Q1 for qemu-devel@nongnu.org; Mon, 15 Mar 2010 15:02:05 -0400 Received: from mail-pw0-f45.google.com ([209.85.160.45]:44213) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NrFYA-00040V-Gh for qemu-devel@nongnu.org; Mon, 15 Mar 2010 15:02:02 -0400 Received: by pwi9 with SMTP id 9so2080700pwi.4 for ; Mon, 15 Mar 2010 12:02:01 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <4B9E7D6F.4000702@redhat.com> References: <4B9E7A29.1020902@redhat.com> <4B9E7D6F.4000702@redhat.com> Date: Mon, 15 Mar 2010 21:02:01 +0200 Message-ID: From: Blue Swirl Content-Type: text/plain; charset=UTF-8 Subject: [Qemu-devel] Re: [PATCH, RFC] Replace assert(0) with abort() or cpu_abort() List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: Markus Armbruster , qemu-devel On 3/15/10, Paolo Bonzini wrote: > > > > > I'd consider not changing assert(0)->abort() > > > if there is code after the assert that looks like an attempt at > recovering. > > > Example: > > > > > > if (!p) { > > > printf ("the impossible has happened!"); > > > assert (0); > > > } > > > > > > return p->q; > > > > > > should be changed to abort, while > > > > > > if (!p) { > > > printf ("the impossible has happened!"); > > > assert (0); > > > return 0; > > > } > > > > > > return p->q; > > > > > > should not. > > > > > > > Why not? According to manual page, assert(x) is equal to if (!x) abort(). > > As I mentioned earlier, system emulators don't handle SIGABRT > > > > ... which won't be generated if !NDEBUG. Only if the recovery code makes > sense, of course. However, my point was that those cases where there is > recovery code are not no-brainers. Except that compiling with -DNDEBUG was broken and fixed only recently with a6c6f76ceb95a0986fd1a36cc30f8241734d20c3. Thus I suspect nobody uses -DNDEBUG for production builds and the code paths after assert(0) are untested.