[PATCH 2/5] ddraw: Get rid of the surface implementation switching code.

Alexandre Julliard julliard at winehq.org
Wed Aug 31 12:26:12 CDT 2011


Henri Verbeet <hverbeet at codeweavers.com> writes:

> Despite what the comment says, switching the implementation of an already
> created surface isn't so straightforward.
> ---
>  dlls/ddraw/ddraw.c       |  179 +--------------------------------------------
>  dlls/ddraw/surface.c     |   25 -------
>  dlls/wined3d/swapchain.c |    4 +-
>  include/wine/wined3d.h   |    1 -
>  4 files changed, 6 insertions(+), 203 deletions(-)

This one is causing crashes on 64-bit:

../../../../wine/tools/runtest -q -P wine -M d3d8.dll -T ../../.. -p d3d8_test.exe.so ../../../../wine/dlls/d3d8/tests/buffer.c && touch buffer.ok
wine: Unhandled page fault on read access to 0x00000000 at address 0x2b631b0deede (thread 0021), starting debugger...
Unhandled exception: page fault on read access to 0x00000000 in 64-bit code (0x00002b631b0deede).
Register dump:
 rip:00002b631b0deede rsp:000000000023f3a0 rbp:000000000023f45a eflags:00010246 (  R- --  I  Z- -P- )
 rax:0000000000000001 rbx:0000000000000000 rcx:0000000000000018 rdx:000000000023f459
 rsi:000000000023f45a rdi:0000000000000000  r8:000000000023f45c  r9:000000000023f45b r10:000000000023f45c
 r11:000000000023f330 r12:000000000023f459 r13:0000000000000000 r14:000000000003b5e0 r15:00002b631b0f00e0
Stack dump:
0x000000000023f3a0:  0000000000000000 0000000000000094
0x000000000023f3b0:  0000000000032ed0 0000000000000094
0x000000000023f3c0:  0000000000032ed0 000000000003e9f0
0x000000000023f3d0:  0000000000000000 00002b631b0307df
0x000000000023f3e0:  ffffffffffffffff ffffff00ffffffff
0x000000000023f3f0:  0000000000202020 0000000020000000
0x000000000023f400:  0000000000000000 00000000ffffff00
0x000000000023f410:  0000000000000254 0000000000000000
0x000000000023f420:  0000000000000000 0000000000000000
0x000000000023f430:  0000000000000000 0000000000000000
0x000000000023f440:  0000000000000000 0000000000000000
0x000000000023f450:  5b5b5b5b5b5b5b5b 0808080018000020
Backtrace:
=>0 0x00002b631b0deede getDepthStencilBits+0x2e(format=(nil), depthSize="", stencilSize="") [/home/julliard/wine/build/obj-elf64/dlls/wined3d/../../../wine/dlls/wined3d/utils.c:2598] in wined3d (0x000000000023f45a)
  1 0x00002b631b0307df context_choose_pixel_format+0xfe(device=0x3e9f0, hdc=0x254, color_format=0x3b5e0, ds_format=(nil), auxBuffers=0, findCompatible=0) [/home/julliard/wine/build/obj-elf64/dlls/wined3d/../../../wine/dlls/wined3d/context.c:1139] in wined3d (0x0000000000032ed0)
  2 0x00002b631b034b79 context_create+0xc8(swapchain=0x58b80, target=0x358f0, ds_format=(nil)) [/home/julliard/wine/build/obj-elf64/dlls/wined3d/../../../wine/dlls/wined3d/context.c:1350] in wined3d (0x0000000000032ed0)
  3 0x00002b631b0d297b swapchain_get_context+0x7a(swapchain=0x58b80) [/home/julliard/wine/build/obj-elf64/dlls/wined3d/../../../wine/dlls/wined3d/swapchain.c:1179] in wined3d (0x00000000000358f0)
  4 0x00002b631b03a155 context_acquire+0x314(device=0x3e9f0, target=0x358f0) [/home/julliard/wine/build/obj-elf64/dlls/wined3d/../../../wine/dlls/wined3d/context.c:2455] in wined3d (0x00000000000358f0)
  5 0x00002b631b047858 wined3d_device_init_3d+0x497(device=0x3e9f0, present_parameters=0x23f810) [/home/julliard/wine/build/obj-elf64/dlls/wined3d/../../../wine/dlls/wined3d/device.c:1335] in wined3d (0x0000000000032ed0)
  6 0x00002b631add142a device_init+0x1b9(device=0x36710, parent=0x2f380, wined3d=0x32eb0, adapter=<is not available>, device_type=<is not available>, focus_window=(nil), flags=0x40, parameters=0x23fae0) [/home/julliard/wine/build/obj-elf64/dlls/d3d8/../../../wine/dlls/d3d8/device.c:3112] in d3d8 (0x000000000023fae0)
  7 0x00002b631add194b IDirect3D8Impl_CreateDevice+0x10a(iface=0x2f380, adapter=0, device_type=D3DDEVTYPE_HAL, focus_window=(nil), flags=0x40, parameters=0x23fae0, device=0x23fb38) [/home/julliard/wine/build/obj-elf64/dlls/d3d8/../../../wine/dlls/d3d8/directx.c:371] in d3d8 (0x0000000000036710)
  8 0x00002b6316db08d7 func_buffer+0x196() [/home/julliard/wine/build/obj-elf64/dlls/d3d8/tests/../../../../wine/dlls/d3d8/tests/buffer.c:61] in d3d8_test (0x000000000023fb38)
  9 0x00002b6316dd06c7 run_test+0x126(name="../../../../wine/dlls/d3d8/tests/buffer.c") [/home/julliard/wine/build/obj-elf64/dlls/d3d8/tests/../../../../wine/include/wine/test.h:556] in d3d8_test (0x00002b6316dd95d7)
  10 0x00002b6316dd11f6 main+0x115(argc=<is not available>, argv=0x106f0) [/home/julliard/wine/build/obj-elf64/dlls/d3d8/tests/../../../../wine/include/wine/test.h:624] in d3d8_test (0x00000000000106f0)
  11 0x00002b6316dd13fe __wine_spec_exe_entry+0xcd(peb=<is not available>) [/home/julliard/wine/build/obj-elf64/dlls/winecrt0/../../../wine/dlls/winecrt0/exe_entry.c:36] in d3d8_test (0x00002b630ed8a908)
  12 0x000000007b87217f start_process+0xbe(peb=0x7fffffbef000) [/home/julliard/wine/build/obj-elf64/dlls/kernel32/../../../wine/dlls/kernel32/process.c:1056] in kernel32 (0x00002b6316dd1330)
  13 0x00002b630f5e5f7b call_thread_func+0x6a(entry=0x7b8720c0, arg=0x7fffffbef000, frame=0x23f459) [/home/julliard/wine/build/obj-elf64/dlls/ntdll/../../../wine/dlls/ntdll/signal_x86_64.c:3189] in ntdll (0x00007fffafa61d40)
  14 0x00002b630f5df856 call_thread_entry_point+0x29() in ntdll (0x00007fffafa61d40)
  15 0x00002b630f5b0b66 start_process+0x15(kernel_start=0x23fec8) [/home/julliard/wine/build/obj-elf64/dlls/ntdll/../../../wine/dlls/ntdll/loader.c:2612] in ntdll (0x00007fffafa61d40)
  16 0x00002b630ea64213 wine_call_on_stack+0x12() in libwine.so.1 (0x00007fffafa61d40)
  17 0x00002b630ea64269 wine_switch_to_stack+0x8(func=<is not available>, arg=<is not available>, stack=<is not available>) [/home/julliard/wine/build/obj-elf64/libs/wine/../../../wine/libs/wine/port.c:59] in libwine.so.1 (0x00007fffffbef000)
  18 0x00002b630f5b673e LdrInitializeThunk+0x3dd(kernel_start=0x7b8720c0, unknown2=<is not available>, unknown3=<is not available>, unknown4=<is not available>) [/home/julliard/wine/build/obj-elf64/dlls/ntdll/../../../wine/dlls/ntdll/loader.c:2668] in ntdll (0x00007fffffbef000)
  19 0x000000007b8788d2 __wine_kernel_init+0x921() [/home/julliard/wine/build/obj-elf64/dlls/kernel32/../../../wine/dlls/kernel32/process.c:1257] in kernel32 (0x00007fffafa62fd0)
  20 0x00002b630f5b7174 __wine_process_init+0x253() [/home/julliard/wine/build/obj-elf64/dlls/ntdll/../../../wine/dlls/ntdll/loader.c:2877] in ntdll (0x00007fffafa6321c)
  21 0x00002b630ea621ef wine_init+0x29e(argc=<is not available>, argv=0x7fffafa637a8, error="", error_size=0x400) [/home/julliard/wine/build/obj-elf64/libs/wine/../../../wine/libs/wine/loader.c:831] in libwine.so.1 (0x00007fffafa632b0)
  22 0x000000007bf00de1 main+0x70(argc=0x3, argv=0x7fffafa637a8) [/home/julliard/wine/build/obj-elf64/loader/../../wine/loader/main.c:228] in <wine-loader> (0x0000000000000003)
  23 0x00002b630efedead __libc_start_main+0xfc(main=<is not available>, argc=<is not available>, ubp_av=<is not available>, init=<is not available>, fini=<is not available>, rtld_fini=<is not available>, stack_end=0x7fffafa63798) [/home/aurel32/eglibc/eglibc-2.13/csu/libc-start.c:228] in libc.so.6 (0x0000000000000000)
  24 0x000000007bf00ca9 _start+0x28() in <wine-loader> (0x0000000000000000)
0x00002b631b0deede getDepthStencilBits+0x2e [/home/julliard/wine/build/obj-elf64/dlls/wined3d/../../../wine/dlls/wined3d/utils.c:2598] in wined3d: movl	(%rbx),%edi
2598	    switch (format->id)

-- 
Alexandre Julliard
julliard at winehq.org



More information about the wine-devel mailing list