git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [RFC PATCH 0/5] Localise error headers

From
Jeff King <peff@peff.net>
Date
Jan 21, 2017, 14:19 UTC
Message-ID
<20170121141942.lc4pw3ck3nzxbozv@sigill.intra.peff.net>
In-Reply-To
<CACsJy8BRdd4f7f7+7XyN8jd69GS6tnkEGhw05F=7c96eViRVQg@mail.gmail.com>
On Fri, Jan 20, 2017 at 08:08:43PM +0700, Duy Nguyen wrote:
Show 8 quoted lines
> > In addition, "BUG: " is relatively recent introduction to our
> > codebase.  Perhaps having a separate BUG(<string>) function help the
> > distinction further?
> 
> I was going to write the same thing. On top of that I wonder if have
> enough "if (something) die("BUG:")" to justify stealing BUG_ON() from
> kernel (better than assert since the condition will always be
> evaluated).

I don't mind BUG_ON() as an improvement over assert(). However, one of the things I really like about our current die("BUG") is that you actually write a human-readable message. Quite often that serves as a comment to the reader of the code as to what is going on, or you can give additional context in the error message (e.g., which sha1 triggered the bug).

Still, there are many cases where there's not much to say in the message. Doing:

  if (!foo)
	BUG("foo is NULL in this function");
is just wasting everybody's time. Something like:
  #define BUG_ON(code) do {
	if (code)
		BUG("%s", #code);
  while(0)

is probably fine. One complication is that BUG() would ideally show the file/line number. That has to happen in a macro, but we don't assume variadic macros work everywhere, which we need for the printf-like behavior. So either we have to loosen that restriction[1], or we end up with two "tiers": a BUG(fmt, ...) for human-readable messages, and a more boring version for BUG_ON() which just prints "file:line: BUG: <code>".

-Peff
[1] I think avoiding variadic macros was reasonable in 2005; C99 was
    only 6 years old then. Now it's turning 18. Maybe it's time?
Previous: Duy NguyenNext: Jeff King
Message 18 of 24 in “Localise error headers”
  1. 0/5 Localise error headersMichael J Gruber, Jan 2, 2017
  2. 1/5 error/warning framework: prepare for l10nMichael J Gruber, Jan 2, 2017
  3. 2/5 error/warn framework: provide localized variantsMichael J Gruber, Jan 2, 2017
  4. 3/5 error/warning framework framework: coccinelli rulesMichael J Gruber, Jan 2, 2017
  5. Duy NguyenJan 3, 2017
  6. Stefan BellerJan 3, 2017
  7. Duy NguyenJan 4, 2017
  8. Duy NguyenJan 7, 2017
  9. Jeff KingJan 4, 2017
  10. Michael J GruberJan 9, 2017
  11. Jeff KingJan 10, 2017
  12. Stefan BellerJan 10, 2017
  13. Jeff KingJan 11, 2017
  14. Stefan BellerJan 11, 2017
  15. Jeff KingJan 21, 2017
  16. Junio C HamanoJan 11, 2017
  17. Duy NguyenJan 20, 2017
  18. Jeff KingJan 21, 2017
  19. Jeff KingJan 21, 2017
  20. Michael J GruberMar 30, 2017
  21. Jeff KingApr 1, 2017
  22. Junio C HamanoApr 1, 2017
  23. Duy NguyenJan 20, 2017
  24. Duy NguyenJan 20, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.