TurtleSoft uses a framework called Qt to build the new accounting software. It’s pretty good, though it does have plenty of quirks. We’ve worked around most of them, but at least two are unsolved despite our efforts.
The first is just ugly: if you use the tab key to enter text into multiple fields, the flashing vertical edit bars won’t go away. There can be 6 or 8 of them blinking. So far we’ve tried a dozen different ways to remove them, but no luck. Last week we decided to file a Qt bug report on it, but one already was in the system. The ticket was from us, almost a year ago. A Qt person rated it as “somewhat important”. Otherwise there has been no action.
The other bug is more serious, related to error handling.
Goldenseal stays reliable and keeps improving because we “sanity check” anything that might crash. If the test fails, it shows a message with source code file and line number. Getting that info saves 90% of the work to fix bugs.
After the error message, Goldenseal throws a C++ exception. It’s a “get me out of here” that evades the code that will crash. Instead, the exception moves outward until it hits a catch. If no catch, the app terminates.
We catch almost all exceptions in the event loop. The app goes back to waiting for the next action from keyboard or mouse, just like normal. 99% of the time, it means you can keep working just fine. That one thing with the bug still won’t work, but everything else is OK.
TurtleSoft has built our estimating/accounting app atop five other frameworks. All of them had some way to catch exceptions in the event loop. Qt does it for Windows and for Intel Macs, but the catch does not work on newer ARM Macs with a M1/M2/M3 chip. Instead, the app exits abruptly. Any unsaved changes are lost. It’s nasty for users, and also for bug fixers.
We posted the problem on the Qt forum, but the main Qt spokesman there said if exceptions work on Intel it’s just an accident. They are not supposed to work at all. We put in a bug report, but it was closed as “invalid” the next day. Apparently Qt decided long ago to not handle exceptions in most of their code. Period.
Sadly, the new app will be less reliable than we would like. The response of the Qt team is also very discouraging. Bugs do happen, but it’s worse when the problem will never be fixed.
Alas.
Dennis Kolva
Programming Director
TurtleSoft.com