http://bugs.winehq.org/show_bug.cgi?id=15984
--- Comment #22 from Itzamna xamaniqinqu@gmail.com 2011-03-03 00:06:35 CST --- The crash occurs when saving. I remember that Black & White makes these small, DXT compressed thumbnails of a screenshot taken when saving for viewing in the citadel. It, however, makes a screenshot of only part of the screen, for which it uses blitting. It just so happens the DDBltFx struct is not fully implemented in Wine ddraw, which I'm pretty sure causes the segmentation fault. Look here:
=>0 0x7ef8fb2b RtlAllocateHeap+0xab(heap=0x110000, flags=0x000a, size=0x20010) [/home/itzamna/src/wine/dlls/ntdll/../../include/wine/list.h:98] in ntdll (0x0033ecd0) 1 0x7d8fbfdc resource_init+0xdb(iface=0x4669928, resource_type=WINED3DRTYPE_SURFACE, device=0x145740, size=0x20000, usage=0, format=0x142638, pool=WINED3DPOOL_SCRATCH, parent=0x0(nil), parent_ops=0x7d99a4a0) [/home/itzamna/src/wine/dlls/wined3d/resource.c:66] in wined3d (0x0033ed30) 2 0x7d94e849 surface_init+0xe8(surface=0x4669928, surface_type=SURFACE_OPENGL, alignment=0x0008, width=0x0100, height=0x0100, level=0, lockable=0x0001, discard=0x0001, multisample_type=WINED3DMULTISAMPLE_NONE, multisample_quality=0, device=0x145740, usage=0, format_id=WINED3DFMT_B5G5R5X1_UNORM, pool=WINED3DPOOL_SCRATCH, parent=0x0(nil), parent_ops=0x7d99a4a0) [/home/itzamna/src/wine/dlls/wined3d/surface.c:376] in wined3d (0x0033eda0) 3 0x7d8bfbbf IWineD3DDeviceImpl_CreateSurface+0xce(iface=0x145740, Width=0x0100, Height=0x0100, Format=WINED3DFMT_B5G5R5X1_UNORM, Lockable=0x0001, Discard=0x0001, Level=0, Usage=0, Pool=WINED3DPOOL_SCRATCH, MultiSample=WINED3DMULTISAMPLE_NONE, MultisampleQuality=0, Impl=SURFACE_OPENGL, parent=0x0(nil), parent_ops=0x7d99a4a0, surface=0x33ee94) [/home/itzamna/src/wine/dlls/wined3d/device.c:1060] in wined3d (0x0033eeb0) 4 0x7d952aa8 IWineD3DBaseSurfaceImpl_Blt+0x607(iface=0x46696b0, DestRect=<is not available>, src_surface=0x4661328, SrcRect=(nil), flags=0x1000000, DDBltFx=(nil), Filter=WINED3DTEXF_LINEAR) [/home/itzamna/src/wine/dlls/wined3d/surface_base.c:1173] in wined3d (0x0033ef20) 5 0x7e113798 ddraw_surface7_Blt+0x167(iface=0x46695b8, DestRect=(nil), SrcSurface=0x4661230, SrcRect=0xdac6dac6, Flags=0x1000000, DDBltFx=(nil)) [/home/itzamna/src/wine/dlls/ddraw/surface.c:907] in ddraw (0x00000000) 0x7ef8fb2b RtlAllocateHeap+0xab [/home/itzamna/src/wine/dlls/ntdll/../../include/wine/list.h:98] in ntdll: movl %eax,0x4(%edx) 98 elem->next->prev = elem->prev;
When I'm less occupied with college, I'll look further into this bug. Though I hope it's quashed by then.