One of the most critical parts of any piece of software is the error handling code. Most code does not properly check for errors, and when they do the error messages are rarely meaningful. I have been working with computers for several decades and have seen little real improvement in error messages. In fact they seem to me to be getting worse, but I think that is because software is getting so much more complicated.
On this page I am collecting various error messages that are particularly bad.
This one came from ClearCase, it's left as an exercise for the reader to guess where this file is being created:
view_server.exe(4104): Error: Unable to create file "TEMP<vobxfer>": Permission denied.
This one just popped up on my Windows machine. Which server? Which server application?
The server is unreachable. Verify that the network is available and that the server application is running.
And another. Which registry key? Which application?
DisMsgrBundle?.xml: The configuration registry key is invalid. This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.
Another ClearCase error, no indication as to who the owner is and should be:
2007-10-16T07:46:15-06 vob_server(4531): Error: unable to set ownership of file c/cdft/19/11: Not owner
This one wins a prize for being informative... one day I got a popup (with no title) which said:
An unknown error has occurred.It had a single button: "OK", which seemed to be a cruel taunt.
This one has to win the "quantity instead of quality" award. Had the error simply said "file blah not found" I would have known the problem:
historyLogger:84 INFO - EXCEPTION CAUGHT: org.polarion.svnimporter.ccprovider.
CCException: error during execution command cleartool lshistory -recurse -fmt %Nd@@@%En@@@%Vn@@@%o@@@!%l@@@!%a@@@%m@@@%u@@@%Nc@@@\n, exception caught
at org.polarion.svnimporter.ccprovider.CCProvider.executeCommand(CCProvider.java:244)
at org.polarion.svnimporter.ccprovider.CCProvider.buildCCModel(CCProvider.java:171)
at org.polarion.svnimporter.ccprovider.CCProvider.listFiles(CCProvider.java:116)
at org.polarion.svnimporter.main.Main.listFiles(Main.java:158)
at org.polarion.svnimporter.main.Main.run(Main.java:80)
at org.polarion.svnimporter.main.Main.main(Main.java:49)
Caused by: java.io.IOException: CreateProcess?: cleartool lshistory -recurse -fmt %Nd@@@%En@@@%Vn@@@%o@@@!%l@@@!%a@@@%m@@@%u@@@%Nc@@@\n error=267
at java.lang.Win32Process.create(Native Method)
at java.lang.Win32Process.<init>(Unknown Source)
at java.lang.Runtime.execInternal(Native Method)
at java.lang.Runtime.exec(Unknown Source)
at org.polarion.svnimporter.common.Exec.exec(Exec.java:181)
at org.polarion.svnimporter.ccprovider.CCProvider.executeCommand(CCProvider.java:240)
at org.polarion.svnimporter.ccprovider.CCProvider.buildCCModel(CCProvider.java:171)
at org.polarion.svnimporter.ccprovider.CCProvider.listFiles(CCProvider.java:116)
at org.polarion.svnimporter.main.Main.listFiles(Main.java:158)
at org.polarion.svnimporter.main.Main.run(Main.java:80)
at org.polarion.svnimporter.main.Main.main(Main.java:49)
I got this in an email from cruise control:
The Build broke. The exact reason is labeled "Error Message".
Or this when trying to detach my USB drive from Windows:
The device 'generic volume' cannot be stopped right now. Try stopping the device later.
Of course Unix is even more terse with the infamous "device busy" error. Either way the OS knows precisely which processes are accessing the device, but if it cannot be included in the error message, there should be a simple and reliable way to find out.
Here's one from the Solaris C compiler:
"/vobs/siebel/src/core/include/sstypes.h", line 87: Error: Could not open include file.
This appears to mean that sstypes.h couldn't be read, but actually the problem is that a file it includes (on line 87) cannot be found. I have no idea why they failed to include the filename in the error message.
Here's a useful one from Thunderbird:
There was an error copying the message to the Sent folder. Retry?
Here's a lovely one from Firefox:
Error during XSLT transformation: An unknown XPath extension function was called.
ClearCase never fails to produce never-before-seen error messages. I guess the required argument is a secret?
cleartool: Error: Required command argument is missing.
In this one MultiSite provides a useful error message, but then wanders off into the dark:
multitool: Error: Permission denied: not VOB owner or privileged user. multitool: Error: Can not import into vob:/vobs/cm, permission denied. multitool: Error: INTERNAL ERROR detected and logged in "/var/adm/rational/clearcase/log/error_log".
Though even that first error could be improved by saying who the vob owner is and your current identity. These commands may be run from cron jobs or via ssh where your current identity may not be clear. Another case where a minute or two of effort for the engineer would save hours of head-scratching for the customer.