[Bug 36528] Behringer x32 Edit needs IDWriteFontFamily::GetFontCount implementation

wine-bugs at winehq.org wine-bugs at winehq.org
Mon May 26 14:12:46 CDT 2014


http://bugs.winehq.org/show_bug.cgi?id=36528

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
            Version|unspecified                 |1.6.2
            Summary|Behringer x32 Edit runs not |Behringer x32 Edit needs
                   |under Ubuntu 14.04 in       |IDWriteFontFamily::GetFontC
                   |combination with Wine       |ount implementation
     Ever confirmed|0                           |1

--- Comment #4 from Anastasius Focht <focht at gmx.net> ---
Hello Bernd,

I've looked into this, technically it's not a regression. Wine evolved :)

First, the app seems to be Wine aware = bad

--- snip ---
0023:Call KERNEL32.GetModuleHandleA(007d500c "ntdll") ret=0055062e
0023:Ret  KERNEL32.GetModuleHandleA() retval=7bc10000 ret=0055062e
0023:Call KERNEL32.GetProcAddress(7bc10000,007d5014 "wine_get_version")
ret=00550642
0023:Ret  KERNEL32.GetProcAddress() retval=7bc2680c ret=00550642 
--- snip ---

I've seen apps that break just because they try to work around some (older)
Wine insufficiencies.
Wine is a moving target hence a workaround might become superfluous or harmful
at any time.

Tidbit: The app wants to make use of Direct2D - which might prove useful later
for testing when Wine gets more mature in that area.

--- snip ---
0023:Call KERNEL32.LoadLibraryW(00ccca6c L"d2d1.dll") ret=0054e5cb
...
0023:Ret  KERNEL32.LoadLibraryW() retval=7d880000 ret=0054e5cb
...
0023:Call KERNEL32.GetProcAddress(7d880000,00ccca40 "D2D1CreateFactory")
ret=0054e630
0023:Ret  KERNEL32.GetProcAddress() retval=7d883b28 ret=0054e630
...
0023:Call d2d1.D2D1CreateFactory(00000000,007d6594,0033f9a4,00827cec)
ret=0054e689
...
0023:fixme:d2d:d2d_factory_init Ignoring factory type and options.
0023:Ret  d2d1.D2D1CreateFactory() retval=00000000 ret=0054e689 
...
--- snip ---

The actual problem is the incomplete DirectWrite API.

--- snip ---
$ WINEDEBUG=+tid,+seh,+relay,+dwrite wine ./X32-Edit.exe >>log.txt 2>&1
...
0023:Call KERNEL32.LoadLibraryW(00ccca6c L"DWrite.dll") ret=0054e6cd
...
0023:Ret  KERNEL32.LoadLibraryW() retval=7d850000 ret=0054e6cd 
...
0023:Call dwrite.DWriteCreateFactory(00000000,007d65a4,00827cf0) ret=0054e784
0023:trace:dwrite:DWriteCreateFactory (0,
{b859ee5a-d838-4b5b-a2e8-1adc7d93db48}, 0x827cf0)
0023:Ret  dwrite.DWriteCreateFactory() retval=00000000 ret=0054e784
0023:trace:dwrite:dwritefactory_GetSystemFontCollection (0x827cf4 0)
...
0023:trace:dwrite:get_system_fontcollection building system font collection:
...
0023:Call
gdi32.EnumFontFamiliesExW(000c0033,0033f8a8,7d860013,001432b8,00000000)
ret=7d86020a 
...
0023:Ret  gdi32.EnumFontFamiliesExW() retval=00000001 ret=7d86020a
...
0023:trace:dwrite:dwritefontcollection_FindFamilyName (0x1432b8)->(L"Bitstream
Vera Sans" 0x33f978 0x33f970)
0023:trace:dwrite:dwritefontcollection_GetFontFamily (0x1432b8)->(0 0x33f97c)
...
0023:fixme:dwrite:dwritefontfamily_GetFontCount (0x1437e8): stub
0023:trace:seh:raise_exception code=c0000005 flags=0 addr=0x54eac8 ip=0054eac8
tid=0023
0023:trace:seh:raise_exception  info[0]=00000000
0023:trace:seh:raise_exception  info[1]=00000000
0023:trace:seh:raise_exception  eax=00000000 ebx=00ccca48 ecx=00000000
edx=7bcecbc8 esi=00ccca38 edi=00000000
0023:trace:seh:raise_exception  ebp=0033f9b8 esp=0033f960 cs=0023 ds=002b
es=002b fs=0063 gs=006b flags=00210246
0023:trace:seh:call_stack_handlers calling handler at 0x5e75db code=c0000005
flags=0 
...
0023:trace:seh:start_debugger Starting debugger "winedbg --auto 34 176"
0023:Ret  KERNEL32.UnhandledExceptionFilter() retval=00000000 ret=7bc9eca9
0023:trace:seh:call_stack_handlers handler at 0x7bc9ec6f returned 1
Unhandled exception: page fault on read access to 0x00000000 in 32-bit code
(0x0054eac8).
Register dump:
 CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b
 EIP:0054eac8 ESP:0033f960 EBP:0033f9b8 EFLAGS:00210246(  R- --  I  Z- -P- )
 EAX:00000000 EBX:00ccca48 ECX:00000000 EDX:7bcecbc8
 ESI:00ccca38 EDI:00000000
Stack dump:
...
Backtrace:
=>0 0x0054eac8 in x32-edit (+0x14eac8) (0x0033f9b8)
  1 0x0055183d in x32-edit (+0x15183c) (0x0033f9d8)
  2 0x00550b94 in x32-edit (+0x150b93) (0x0033fa04)
  3 0x0058b3c9 in x32-edit (+0x18b3c8) (0x0033fa30)
  4 0x0058af1d in x32-edit (+0x18af1c) (0x0033fa4c) 
...
0x0054eac8: movl    0x0(%edi),%eax
Modules:
Module    Address            Debug info    Name (86 modules)
PE      400000-  b81000    Export          x32-edit
ELF    7b800000-7ba60000    Dwarf           kernel32<elf>
  \-PE    7b810000-7ba60000    \               kernel32
ELF    7bc00000-7bcee000    Dwarf           ntdll<elf>
  \-PE    7bc10000-7bcee000    \               ntdll
ELF    7bf00000-7bf04000    Dwarf           <wine-loader>
ELF    7d84b000-7d872000    Deferred        dwrite<elf>
  \-PE    7d850000-7d872000    \               dwrite
ELF    7d872000-7d891000    Deferred        d2d1<elf>
  \-PE    7d880000-7d891000    \               d2d1 
...
process  tid      prio (all id:s are in hex)
...
00000022 (D) Z:\home\focht\Downloads\X32-Edit.exe
    00000025    0
    00000024    0
    00000023    0 <== 
--- snip ---

You can work around by disabling builtin 'dwrite' component in settings or
start using:

--- snip ---
$ WINEDLLOVERRIDES=dwrite=d wine ./X32-Edit.exe
--- snip ---

$ sha1sum X32-Edit_2.00_PC.zip 
97869d09478314f6edd43265da97b7283faa7d51  X32-Edit_2.00_PC.zip

$ du -sh X32-Edit_2.00_PC.zip 
4.3M    X32-Edit_2.00_PC.zip

$ wine --version
wine-1.7.19-70-gd6a59f7

Regards

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list