« Autodesk: 1985 IPO "Road Show" slides on-line | Main | Perl: 2038 "Black Tuesday" Bug in Perl 5.8 gmtime and localtime Functions »

Wednesday, July 25, 2007

Linux: Wine Turns to Vinegar

Back in February, I wrote how I had installed “Wine”, the Windows API implementation for x86 Unix-like systems, and had successfully used it to run the bill paying client program from my bank, which is available only for Windows. I concluded by observing that wine is one of the few things which improves with age. Well, perhaps I should have noted that's so only if you don't open it—afterward things go sour pretty rapidly.

That's certainly been my experience with this particular cuvée informatique. At the outset, on version 0.9.30, it worked fine, apart from the few quibbles about changing keyboard focus with the Tab key which I noted in the original posting. Then, starting about a month ago (I didn't note the date nor the version in which this started happening), entering payment orders worked fine, but when I went to send them to the bank, the entire program would crash with a message of:

X Error of failed request:  BadPixmap (invalid Pixmap parameter)
  Major opcode of failed request:  54 (X_FreePixmap)
However, whether this happened appeared to be statistical in nature, so if I restarted the program (which fortunately had already saved the orders I'd entered) and continued to try to submit them, I would eventually be able to get through the transmission process without a crash. In some cases as many as ten attempts were required to actually send the orders, which was, to say the least, intensely irritating, especially since this had worked routinely for months.

Next, along came the 0.9.39 update, which I hoped might fix the random crashes. It didn't, and instead raised the ante to full-blown system crashes (the first application-induced operating system freeze-up I have ever experienced in more than seven years of using Linux). After struggling through the now-routine application crashes and restarts and finally managing to transmit the orders, when you click on the final “Close” button to exit the program, the mouse and keyboard immediately freeze up and the system becomes completely nonresponsive. You can't get into the machine over the network, tapping the power switch to send a shutdown interrupt doesn't work, and the only option is a full power cycle, with the attendant risk to the file system. After enduring this on numerous occasions (being sure to save all work in progress and perform a file system sync before undertaking the risky business of paying bills), I discovered that if, instead of quitting the application in the usual way you simply kill the Wine program by typing Control-C in the terminal window in which it's running, the system lock-up can be avoided—nice.

So today along comes version 0.9.41, which I installed in the eternal hope that, like a raw Bordeaux primeur, it would have mellowed with age; no such luck. At Messed up text in Wine 0.9.41 the right you see the field of the payment slip which is supposed to show my name and address. Now I'll be the first to admit that I'm pretty geeky when it comes to mathematics, radical in defence of liberty, and somewhat of a square, but I do not live in a village whose name includes three square root signs! Worse, while there's no problem selecting the payee and entering the reference number, when you click the field for the amount to be paid, you get an enormous blinking vertical cursor (several times the height of the field) and all keyboard input is ignored, so it's impossible to enter a valid order.

Enough. I downloaded the wine-0.9.39-1.fc6.i386.rpm master installer from the Fedora 6 Wine page, removed the 0.9.41 installation, and installed 0.9.39 with:

    yum remove wine wine-capi wine-cms wine-core \
        wine-esd wine-jack wine-ldap wine-nas wine-tools wine-twain
    yum install wine-0.9.39-1.fc6.i386.rpm
after which, with the usual application crashes and freeze-evading Control-C I was, to some extent, back in business. I can live with this, and it's the oldest version available on the Fedora server. I may go looking for older Fedora RPMs from other sources to revert back to the happy situation of yore, but I don't think I'll be installing any of these “new and improved” updates to Wine for a while.

Update: Since one of the problems discussed above is a system crash, I should mention the precise kernel and configuration. This is a Fedora Core 6 distribution with the most recent kernel update, for which “uname -sr” reports “Linux 2.6.20-1.2962.fc6” (2007-07-25 16:29 UTC).

Update: Dan Kegel suggests that I note that any system crash is, self-evidently, a result of a problem in the kernel or a driver or other module which runs with kernel privilege. Hence, while Wine is provoking the problem, it is not responsible for the crash. He further points out that crashes may be due to an interaction with the ATI “fglrx” driver which I use on this machine, and that there's a workaround for it (which I have not yet tried). There is now an open bug report on the font problem which links back to this posting. The UBSShell program mentioned in that bug report is simply a little wrapper—you don't need to launch the bill paying program through it and, in fact, when you install it on Windows, a start menu link is created to launch the bill paying program directly. (2007-07-26 13:21 UTC).

Posted at July 25, 2007 14:59