2

When the word processor abiword is called on a headless machine, one of the issued warnings reads (emphasis mine):

** (abiword:2020): WARNING **: clutter failed 0, get a life.

What does this warning mean? Is this an easter egg? Why does abiword make this snarky remark? No GUI session, no life – is that the implication?

Abiword’s SVN repo can be found on abisource.com.

  • 1
    I may be mistaken, but I don't think that debugging message is from abiword proper, but from the gtk libs. And of course, it's not intended to the user. Dumping worthless non-fatal / non user-actionnable debugging crap to stderr in "production" releases is unfortunately considered acceptable by many "programmers". – mosvy May 23 at 12:08
  • To close-voters: Please elaborate on what’s unclear here. I’m getting a cryptic warning message and ask for its explanation. – dessert May 23 at 12:40
  • Presumably a programmer wrote the text in a program somewhere. I think the best we can do here is to explain where that message is coming from and potentially why that branch of the program was executed, but not the mentality of the person who wrote that text in that program. – Jeff Schaller May 23 at 13:31
  • 1
    @JeffSchaller Yeah, I get that, though sometimes miracles happen – I was at least hoping for a pun commit message or something like that, but that doesn’t seem to exist. – dessert May 23 at 13:36
  • The first error message is probably something like: ** (abiword:1262): WARNING **: Could not open X display, Failed to connect to Mir: Failed to connect to server socket: No such file or directory, Unable to init server: Could not connect: Connection refused. That describes the actual problem. The message you're wondering about comes after that, apparently because the code that handles Abiword's exit after recognizing that there is no usable display would need some developer attention. I guess a perfectly clean handling of a "no display" error is low priority for the Abiword devs. – telcoM May 24 at 6:33
6

AbiWord uses programming libraries named Clutter, GTK+, and Clutter-GTK. The latter library glues the former twain together. One of its the necessary parts is a call to a function named gtk_clutter_init(). This returns an error code if initialization fails, as it indeed does if there's no display.

Programs that ignore the result from calling this function, and carry on regardless of potential error, emit compiler warnings when compiled. Programmers have addressed this in different ways. Colin Watson made GNOME Shell emit a fairly bland fatal error message. Hubert Figuière made AbiWord emit the message that you see before you. Neither message is really helpful to the end user, who really needs to be told that there is a problem of some kind initializing the GUI, and probably won't know what "Clutter" is referring to.

Interestingly, the result code is zero according to your error message. According to the doco an error result is supposed to be a non-zero negative integer. In fact, there's an undocumented "unknown" error condition, which is neither success (which has the value 1) nor a negative number failure code; which arises as a result of the gtk_init_check() library function being unable to initialize the GUI.

  • 2
    OK but it doesn't explain get a life error string. As you said, it comes from src/wp/ap/gtk/ap_UnixApp.cpp file from Abiword and according to gitlab.gnome.org/World/AbiWord.git it was added in 2013 or before as git repository was created from the previous SVN repository. – Arkadiusz Drabczyk May 23 at 12:11
  • @ArkadiuszDrabczyk I added a link to the SVN repo to the question. – dessert May 23 at 12:44
  • 1
    Found it! Introduced in revision 32638 Thu Feb 7 2013, see diff with previous revision – do you want to include that in your answer? Unfortunately not even the commit message explains why it says “get a life”, but it surely looks like a joke… – dessert May 23 at 12:54
  • @dessert: ok so I was wrong as date of the commit in SVN is the same as in Git repository – Arkadiusz Drabczyk May 23 at 12:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.