http://bugs.winehq.org/show_bug.cgi?id=4207
Summary: wine 0.9.4 breaks 8 bit color (256 colors) Product: Wine Version: 0.9.4. Platform: PC URL: http://www.likeasecret.com/programs/vga_demos/Mode19_8bi t/ OS/Version: Linux Status: UNCONFIRMED Severity: critical Priority: P2 Component: wine-x11driver AssignedTo: wine-bugs@winehq.org ReportedBy: flerchjj@ieee.org
VGA rendering crashes after trying to switch change screen BPP from 32 to 8 then drawing. This worked fine in version 0.9.3 and earlier. This problem is likely result of recent optimizations to DirectDraw. Looking at the functions VGA_DoSetMode and VGA_SyncWindow in vga.c may be of help.
The an easy program to look at 8 bit color is irgb.exe at http://www.likeasecret.com/programs/vga_demos/Mode19_8bit/ This program should simply display the gradients of 8 bit colors and exit by pressing <enter>.
Output of console is listed below:
Warning: unprotecting memory to allow real-mode calls. NULL pointer accesses will no longer be caught. fixme:ddraw:Main_DirectDraw_SetCooperativeLevel (0x404045e0)->(0x10022,00000011) fixme:x11drv:X11DRV_desktop_SetCurrentMode Cannot change screen BPP from 32 to 8 fixme:x11drv:X11DRV_desktop_SetCurrentMode Cannot change screen BPP from 32 to 8 fixme:x11drv:X11DRV_DDHAL_CreatePalette stub wine: Unhandled page fault on read access to 0xffffffff at address 0x401cc8f3 (thread 000a), starting debugger... WineDbg starting on pid 0x8 fixme:dbghelp:SymLoadModule Should have successfully loaded debug information for image Y:\Desktop\DOS_Games\VGA_Demos\Mode19_8bit\mode19.exe Unhandled exception: page fault on read access to 0xffffffff in 32-bit code (0x401cc8f3). In 32 bit mode. Register dump: CS:0073 SS:007b DS:007b ES:007b FS:003b GS:0033 EIP:401cc8f3 ESP:417e7c3c EBP:417e7c54 EFLAGS:00210246( - 00 -RIZP1) EAX:00000000 EBX:401de238 ECX:417e7ea8 EDX:00000000 ESI:417e7ea8 EDI:417e7d38 Stack dump: 0x417e7c3c: 0000a000 401c1a4c 417e7ea8 401de238 0x417e7c4c: 00000001 417e7d38 417e7d94 401c1d3f 0x417e7c5c: 417e7d38 417e7ea8 417e7c68 00000000 0x417e7c6c: 00000000 000003ce 00000000 00000000 0x417e7c7c: 00000000 0000a005 00000000 00000000 0x417e7c8c: 00000000 00000000 ffffffff 00000110 Backtrace: =>1 0x401cc8f3 __wine_call_from_32_regs+0xcf in ntdll (0x401cc8f3) 2 0x401c1d3f __wine_enter_vm86+0x18f(context=0x417e7ea8) [/home/jeremiah/Desktop/Source Packages/wine-0.9.4/dlls/ntdll/signal_i386.c:1457] in ntdll (0x401c1d3f) 3 0x404eb994 K32WOWCallback16Ex(vpfn16=0x0, dwFlags=0x2, cbArgs=0x0, pArgs=0x0, pdwRetCode=0x417e7ea8) [/home/jeremiah/Desktop/Source Packages/wine-0.9.4/dlls/kernel/../../include/wine/exception.h:177] in kernel32 (0x404eb994) 4 0x413d6c10 DOSVM_Enter(context=0x417e7ea8) [/home/jeremiah/Desktop/Source Packages/wine-0.9.4/dlls/winedos/dosvm.c:577] in winedos (0x413d6c10) 5 0x413f1947 MZ_DOSVM(lpExtra=0x0) [/home/jeremiah/Desktop/Source Packages/wine-0.9.4/dlls/winedos/module.c:631] in winedos (0x413f1947) 6 0x404e0abe THREAD_Start(ptr=0x40399b50) [/home/jeremiah/Desktop/Source Packages/wine-0.9.4/dlls/kernel/thread.c:77] in kernel32 (0x404e0abe) 7 0x401c6c7e start_thread+0x17e(info=0x40399b68) [/home/jeremiah/Desktop/Source Packages/wine-0.9.4/dlls/ntdll/thread.c:234] in ntdll (0x401c6c7e) 8 0x4004e7f3 start_thread in libpthread.so.0 (0x4004e7f3) err:ntdll:RtlpWaitForCriticalSection section 0x409e8ca0 "x11drv_main.c: X11DRV_CritSection" wait timed out in thread 0009, blocked by 000c, retrying (60 sec) 9 0x4011262a __clone in libc.so.6 (0x4011262a) 0x401cc8f3 __wine_call_from_32_regs+0xcf in ntdll: pop %es Modules: Module Address Debug info Name (59 modules) ELF 0x40000000-40018000 Deferred ld-linux.so.2 ELF 0x4002f000-40048000 Deferred libwine.so.1 ELF 0x40049000-4005b000 Export libpthread.so.0 ELF 0x4005b000-40171000 Export libc.so.6 ELF 0x40171000-40175000 Deferred libdl.so.2 ELF 0x40176000-401e9000 Stabs ntdll<elf> -PE 0x40190000-401e9000 \ ntdll ELF 0x40200000-402f6000 Deferred libwine_unicode.so.1 ELF 0x402f6000-40319000 Deferred libm.so.6 ELF 0x40460000-40559000 Stabs kernel32<elf> -PE 0x40480000-40559000 \ kernel32 ELF 0x405a2000-405b7000 Deferred winevdm<elf> -PE 0x405b0000-405b7000 \ mode19 ELF 0x406d0000-407e3000 Deferred user32<elf> -PE 0x406f0000-407e3000 \ user32 ELF 0x407e3000-40866000 Deferred gdi32<elf> -PE 0x407f0000-40866000 \ gdi32 ELF 0x40866000-408a1000 Deferred advapi32<elf> -PE 0x40870000-408a1000 \ advapi32 ELF 0x408b8000-40927000 Deferred libfreetype.so.6 ELF 0x40927000-40951000 Deferred libfontconfig.so.1 ELF 0x40951000-40970000 Deferred libexpat.so.0 ELF 0x40970000-409ee000 Deferred winex11<elf> -PE 0x40980000-409ee000 \ winex11 ELF 0x40a05000-40a0d000 Deferred libsm.so.6 ELF 0x40a0d000-40a25000 Deferred libice.so.6 ELF 0x40a25000-40a33000 Deferred libxext.so.6 ELF 0x40a33000-40b2f000 Deferred libx11.so.6 ELF 0x40b2f000-40b97000 Deferred libgl.so.1 ELF 0x40b97000-4126f000 Deferred libglcore.so.1 ELF 0x4126f000-41271000 Deferred libnvidia-tls.so.1 ELF 0x41315000-41317000 Deferred xlcutf8load.so.2 ELF 0x41317000-41335000 Deferred ximcp.so.2 ELF 0x41335000-41351000 Deferred imm32<elf> -PE 0x41340000-41351000 \ imm32 ELF 0x41368000-41371000 Deferred libxcursor.so.1 ELF 0x41371000-41379000 Deferred libxrender.so.1 ELF 0x413bd000-41419000 Stabs winedos<elf> -PE 0x413d0000-41419000 \ winedos ELF 0x41419000-41497000 Deferred winmm<elf> -PE 0x41420000-41497000 \ winmm ELF 0x41497000-414bf000 Deferred winealsa<elf> -PE 0x414a0000-414bf000 \ winealsa ELF 0x414bf000-414d6000 Deferred msacm<elf> -PE 0x414d0000-414d6000 \ msacm ELF 0x414d6000-41582000 Deferred libasound.so.2 ELF 0x41582000-415a3000 Deferred msacm32<elf> -PE 0x41590000-415a3000 \ msacm32 ELF 0x416c0000-416d5000 Deferred midimap<elf> -PE 0x416d0000-416d5000 \ midimap ELF 0x417e9000-4185d000 Deferred ddraw<elf> -PE 0x41810000-4185d000 \ ddraw ELF 0x4185d000-418e0000 Deferred ole32<elf> -PE 0x41870000-418e0000 \ ole32 ELF 0x418e0000-41923000 Deferred rpcrt4<elf> -PE 0x418f0000-41923000 \ rpcrt4 ELF 0x41923000-41940000 Deferred iphlpapi<elf> -PE 0x41930000-41940000 \ iphlpapi ELF 0x7bf00000-7bf03000 Deferred <wine-loader> Threads: process tid prio (all id:s are in hex) 00000008 (D) Y:\Desktop\DOS_Games\VGA_Demos\Mode19_8bit\mode19.exe 0000000d 0 0000000c 0 0000000b 0 0000000a 0 <== 00000009 0