http://bugs.winehq.org/show_bug.cgi?id=30115
--- Comment #1 from Alexey Loukianov mooroon2@mail.ru 2012-03-09 08:59:29 CST --- Well, I had tracked this bug up to the differences in blit operation implementation for compressed textures introduced by commits 156d24c6 and a8427507. Problematic icons are stored (and blited) as surfaces in WINED3DFMT_DXT1 format. Prior to commit 156d24c6 blits for such surfaces had been handled in surface_cpu_bltfast(). After commit 156d24c6 wine had switched into using surface_cpu_blt() function instead which hadn't been able to do blits with defined destination rect in software for compressed surfaces at that moment of time. Instead, surface_cpu_blt() had been trying to do the usual width/height rect math and apply it to compressed texture which had been causing access violations try to access memory regions outside the locked surface part with the subsequent game crash as the consequence.
After commit 156d24c6 surface_cpu_blt() had been extended to support non-transforming block-based surfaces blits for compressed textures, and this support seems to look very similar to one that had been working correctly inside surface_cpu_bltfast(). Unfortunately something differs between those two implementations and I can't tell what is the difference exactly ATM, but I'm pretty sure that this difference is a bug trigger here. Going to investigate a bit deeper and report back any findings I would come with.