A few weeks a go I made a blog post about my success in running Age of Empires II with Wine. Unfortunately the upgrade from wine-0.9.31 to 0.9.32 broke it again. The game doesn’t even start anymore and just displays the following message:
Could not initialize graphics system. Make sure your video card and driver are compatible with directdraw.
See the AppDB Comments for further discussions.
So I decided to try to isolate the commit which is responsible for the breakage. The first step was to get all the required build dependencies installed. Next I did a checkout of the wine source and started regression testing as explained on the wine-wiki. By telling git bisect the last good state and a known broken one it can perform a binary search for the buggy commit.
git bisect start git bisect good wine-0.9.31 git bisect bad wine-0.9.32
Then you can compile Wine and test whether the bug is still there.
CFLAGS=-fno-stack-protector ./configure && make clean && make depend && make
Depending on the result you run
git bisect good or
git bisect bad
respectively. If you want to see which commits could cause the error run
git bisect visualize. Recompile and repeat the above steps until you
can isolate the problematic commit.
In my case it was the following:
27113156d96d20296409fcb92839609c8dd7e34a is first bad commit commit 27113156d96d20296409fcb92839609c8dd7e34a Author: Stefan Dosinger <email@example.com> Date: Mon Feb 19 15:24:00 2007 +0100 wined3d: Remove IWineD3DDevice::EnumDisplayModes.
So now that I have isolated the commit, I filled a bug report.