I am in the process of trying to get MathType for Windows 4.0 running
under wine.  Before the app displays, it seems to get caught in an
infinite loop.  Here are what I believe to be the relevant lines:

...
Call advapi32.227: RegOpenKeyExA(80000001,40f42d90 "Software\\Design
Science\\DSMT4\\Config",00000000,00020019,408568cc) ret=00468b11 fs=008f
Ret  advapi32.227: RegOpenKeyExA() retval=00000000 ret=00468b11 fs=008f
Call advapi32.235: RegQueryValueExA(0000003c,004ac7c4
"AppLang",00000000,408568bc,4085686c,408568b8) ret=00468b3f fs=008f
Ret  advapi32.235: RegQueryValueExA() retval=00000000 ret=00468b3f
fs=008f
Call advapi32.204: RegCloseKey(0000003c) ret=00468b57 fs=008f
Ret  advapi32.204: RegCloseKey() retval=00000000 ret=00468b57 fs=008f
Call kernel32.425: GetUserDefaultLCID() ret=00468f66 fs=008f
Ret  kernel32.425: GetUserDefaultLCID() retval=00000009 ret=00468f66
fs=008f
Call kernel32.342: GetLocaleInfoA(00000409,00000003,4085677c,000000ff)
ret=004281c2 fs=008f
Ret  kernel32.342: GetLocaleInfoA() retval=00000004 ret=004281c2 fs=008f
Call kernel32.534: MultiByteToWideChar(00000000,00000000,4085677c
"ENU",ffffffff,40f42e10,00000004) ret=004026bd fs=008f
Ret  kernel32.534: MultiByteToWideChar() retval=00000004 ret=004026bd
fs=008f
Call kernel32.727: WideCharToMultiByte(00000000,00000000,40856898
L"ENU",ffffffff,40f42ea0,00000007,00000000,00000000) ret=004026dc
fs=008f
Ret  kernel32.727: WideCharToMultiByte() retval=00000004 ret=004026dc
fs=008f
Call kernel32.250: FindFirstFileA(40f42190 "C:\\Program
Files\\MathType\\Language\\MT4ENU.DLL",40856618) ret=0048c8c9 fs=008f
Ret  kernel32.250: FindFirstFileA() retval=ffffffff ret=0048c8c9 fs=008f
Call kernel32.333: GetFullPathNameA(40f42190 "C:\\Program
Files\\MathType\\Language\\MT4ENU.DLL",00000104,40856758,408565dc)
ret=00491049 fs=008f
Ret  kernel32.333: GetFullPathNameA() retval=0000002d ret=00491049
fs=008f
Call kernel32.342: GetLocaleInfoA(00000409,00000003,4085677c,000000ff)
ret=004281c2 fs=008f
Ret  kernel32.342: GetLocaleInfoA() retval=00000004 ret=004281c2 fs=008f
Call kernel32.534: MultiByteToWideChar(00000000,00000000,4085677c
"ENU",ffffffff,40f42200,00000004) ret=004026bd fs=008f
Ret  kernel32.534: MultiByteToWideChar() retval=00000004 ret=004026bd
fs=008f
Call kernel32.727: WideCharToMultiByte(00000000,00000000,40856898
L"ENU",ffffffff,40f42ea0,00000007,00000000,00000000) ret=004026dc
fs=008f
Ret  kernel32.727: WideCharToMultiByte() retval=00000004 ret=004026dc
fs=008f
Call kernel32.250: FindFirstFileA(40f42210 "C:\\Program
Files\\MathType\\Language\\MT4ENU.DLL",40856618) ret=0048c8c9 fs=008f
Ret  kernel32.250: FindFirstFileA() retval=ffffffff ret=0048c8c9 fs=008f
Call kernel32.333: GetFullPathNameA(40f42210 "C:\\Program
Files\\MathType\\Language\\MT4ENU.DLL",00000104,40856758,408565dc)
ret=00491049 fs=008f
Ret  kernel32.333: GetFullPathNameA() retval=0000002d ret=00491049
fs=008f
Call kernel32.342: GetLocaleInfoA(00000809,00000003,4085677c,000000ff)
ret=004281c2 fs=008f
Ret  kernel32.342: GetLocaleInfoA() retval=00000004 ret=004281c2 fs=008f
Call kernel32.534: MultiByteToWideChar(00000000,00000000,4085677c
"ENG",ffffffff,40f42280,00000004) ret=004026bd fs=008f
Ret  kernel32.534: MultiByteToWideChar() retval=00000004 ret=004026bd
fs=008f
Call kernel32.727: WideCharToMultiByte(00000000,00000000,40856898
L"ENG",ffffffff,40f42ea0,00000007,00000000,00000000) ret=004026dc
fs=008f
Ret  kernel32.727: WideCharToMultiByte() retval=00000004 ret=004026dc
fs=008f
Call kernel32.250: FindFirstFileA(40f42290 "C:\\Program
Files\\MathType\\Language\\MT4ENG.DLL",40856618) ret=0048c8c9 fs=008f
Ret  kernel32.250: FindFirstFileA() retval=ffffffff ret=0048c8c9 fs=008f
Call kernel32.333: GetFullPathNameA(40f42290 "C:\\Program
Files\\MathType\\Language\\MT4ENG.DLL",00000104,40856758,408565dc)
ret=00491049 fs=008f
Ret  kernel32.333: GetFullPathNameA() retval=0000002d ret=00491049
fs=008f
Call kernel32.342: GetLocaleInfoA(00000c09,00000003,4085677c,000000ff)
ret=004281c2 fs=008f
Ret  kernel32.342: GetLocaleInfoA() retval=00000004 ret=004281c2 fs=008f
Call kernel32.534: MultiByteToWideChar(00000000,00000000,4085677c
"ENA",ffffffff,40f42300,00000004) ret=004026bd fs=008f
Ret  kernel32.534: MultiByteToWideChar() retval=00000004 ret=004026bd
fs=008f
Call kernel32.727: WideCharToMultiByte(00000000,00000000,40856898
L"ENA",ffffffff,40f42ea0,00000007,00000000,00000000) ret=004026dc
fs=008f
Ret  kernel32.727: WideCharToMultiByte() retval=00000004 ret=004026dc
fs=008f
Call kernel32.250: FindFirstFileA(40f42310 "C:\\Program
Files\\MathType\\Language\\MT4ENA.DLL",40856618) ret=0048c8c9 fs=008f
Ret  kernel32.250: FindFirstFileA() retval=ffffffff ret=0048c8c9 fs=008f
Call kernel32.333: GetFullPathNameA(40f42310 "C:\\Program
Files\\MathType\\Language\\MT4ENA.DLL",00000104,40856758,408565dc)
ret=00491049 fs=008f
Ret  kernel32.333: GetFullPathNameA() retval=0000002d ret=00491049
fs=008f
Call kernel32.342: GetLocaleInfoA(00001009,00000003,4085677c,000000ff)
ret=004281c2 fs=008f
Ret  kernel32.342: GetLocaleInfoA() retval=00000004 ret=004281c2 fs=008f
Call kernel32.534: MultiByteToWideChar(00000000,00000000,4085677c
"ENC",ffffffff,40f42380,00000004) ret=004026bd fs=008f
Ret  kernel32.534: MultiByteToWideChar() retval=00000004 ret=004026bd
fs=008f
Call kernel32.727: WideCharToMultiByte(00000000,00000000,40856898
L"ENC",ffffffff,40f42ea0,00000007,00000000,00000000) ret=004026dc
fs=008f
Ret  kernel32.727: WideCharToMultiByte() retval=00000004 ret=004026dc
fs=008f
Call kernel32.250: FindFirstFileA(40f42390 "C:\\Program
Files\\MathType\\Language\\MT4ENC.DLL",40856618) ret=0048c8c9 fs=008f
Ret  kernel32.250: FindFirstFileA() retval=ffffffff ret=0048c8c9 fs=008f
Call kernel32.333: GetFullPathNameA(40f42390 "C:\\Program
Files\\MathType\\Language\\MT4ENC.DLL",00000104,40856758,408565dc)
ret=00491049 fs=008f
Ret  kernel32.333: GetFullPathNameA() retval=0000002d ret=00491049
fs=008f
Call kernel32.342: GetLocaleInfoA(00001409,00000003,4085677c,000000ff)
ret=004281c2 fs=008f
Ret  kernel32.342: GetLocaleInfoA() retval=00000004 ret=004281c2 fs=008f
Call kernel32.534: MultiByteToWideChar(00000000,00000000,4085677c
"ENZ",ffffffff,40f42450,00000004) ret=004026bd fs=008f
Ret  kernel32.534: MultiByteToWideChar() retval=00000004 ret=004026bd
fs=008f
Call kernel32.727: WideCharToMultiByte(00000000,00000000,40856898
L"ENZ",ffffffff,40f42ea0,00000007,00000000,00000000) ret=004026dc
fs=008f
Ret  kernel32.727: WideCharToMultiByte() retval=00000004 ret=004026dc
fs=008f
Call kernel32.250: FindFirstFileA(40f42460 "C:\\Program
Files\\MathType\\Language\\MT4ENZ.DLL",40856618) ret=0048c8c9 fs=008f
Ret  kernel32.250: FindFirstFileA() retval=ffffffff ret=0048c8c9 fs=008f
Call kernel32.333: GetFullPathNameA(40f42460 "C:\\Program
Files\\MathType\\Language\\MT4ENZ.DLL",00000104,40856758,408565dc)
ret=00491049 fs=008f
Ret  kernel32.333: GetFullPathNameA() retval=0000002d ret=00491049
fs=008f
Call kernel32.342: GetLocaleInfoA(00001809,00000003,4085677c,000000ff)
ret=004281c2 fs=008f
Ret  kernel32.342: GetLocaleInfoA() retval=00000004 ret=004281c2 fs=008f
Call kernel32.534: MultiByteToWideChar(00000000,00000000,4085677c
"ENI",ffffffff,40f424d0,00000004) ret=004026bd fs=008f
Ret  kernel32.534: MultiByteToWideChar() retval=00000004 ret=004026bd
fs=008f
Call kernel32.727: WideCharToMultiByte(00000000,00000000,40856898
L"ENI",ffffffff,40f42ea0,00000007,00000000,00000000) ret=004026dc
fs=008f
Ret  kernel32.727: WideCharToMultiByte() retval=00000004 ret=004026dc
fs=008f
Call kernel32.250: FindFirstFileA(40f424e0 "C:\\Program
Files\\MathType\\Language\\MT4ENI.DLL",40856618) ret=0048c8c9 fs=008f
Ret  kernel32.250: FindFirstFileA() retval=ffffffff ret=0048c8c9 fs=008f
Call kernel32.333: GetFullPathNameA(40f424e0 "C:\\Program
Files\\MathType\\Language\\MT4ENI.DLL",00000104,40856758,408565dc)
ret=00491049 fs=008f
Ret  kernel32.333: GetFullPathNameA() retval=0000002d ret=00491049
fs=008f
Call kernel32.342: GetLocaleInfoA(00001c09,00000003,4085677c,000000ff)
ret=004281c2 fs=008f
Ret  kernel32.342: GetLocaleInfoA() retval=00000004 ret=004281c2 fs=008f
Call kernel32.534: MultiByteToWideChar(00000000,00000000,4085677c
"ENS",ffffffff,40f42550,00000004) ret=004026bd fs=008f
Ret  kernel32.534: MultiByteToWideChar() retval=00000004 ret=004026bd
fs=008f
Call kernel32.727: WideCharToMultiByte(00000000,00000000,40856898
L"ENS",ffffffff,40f42ea0,00000007,00000000,00000000) ret=004026dc
fs=008f
Ret  kernel32.727: WideCharToMultiByte() retval=00000004 ret=004026dc
fs=008f
Call kernel32.250: FindFirstFileA(40f42560 "C:\\Program
Files\\MathType\\Language\\MT4ENS.DLL",40856618) ret=0048c8c9 fs=008f
Ret  kernel32.250: FindFirstFileA() retval=ffffffff ret=0048c8c9 fs=008f
Call kernel32.333: GetFullPathNameA(40f42560 "C:\\Program
Files\\MathType\\Language\\MT4ENS.DLL",00000104,40856758,408565dc)
ret=00491049 fs=008f
Ret  kernel32.333: GetFullPathNameA() retval=0000002d ret=00491049
fs=008f
Call kernel32.342: GetLocaleInfoA(00002009,00000003,4085677c,000000ff)
ret=004281c2 fs=008f
Ret  kernel32.342: GetLocaleInfoA() retval=00000004 ret=004281c2 fs=008f
Call kernel32.534: MultiByteToWideChar(00000000,00000000,4085677c
"ENJ",ffffffff,40f425d0,00000004) ret=004026bd fs=008f
Ret  kernel32.534: MultiByteToWideChar() retval=00000004 ret=004026bd
fs=008f
Call kernel32.727: WideCharToMultiByte(00000000,00000000,40856898
L"ENJ",ffffffff,40f42ea0,00000007,00000000,00000000) ret=004026dc
fs=008f
Ret  kernel32.727: WideCharToMultiByte() retval=00000004 ret=004026dc
fs=008f
Call kernel32.250: FindFirstFileA(40f425e0 "C:\\Program
Files\\MathType\\Language\\MT4ENJ.DLL",40856618) ret=0048c8c9 fs=008f
Ret  kernel32.250: FindFirstFileA() retval=ffffffff ret=0048c8c9 fs=008f
Call kernel32.333: GetFullPathNameA(40f425e0 "C:\\Program
Files\\MathType\\Language\\MT4ENJ.DLL",00000104,40856758,408565dc)
ret=00491049 fs=008f
Ret  kernel32.333: GetFullPathNameA() retval=0000002d ret=00491049
fs=008f
Call kernel32.342: GetLocaleInfoA(00002409,00000003,4085677c,000000ff)
ret=004281c2 fs=008f
Ret  kernel32.342: GetLocaleInfoA() retval=00000004 ret=004281c2 fs=008f
Call kernel32.534: MultiByteToWideChar(00000000,00000000,4085677c
"ENB",ffffffff,40f42650,00000004) ret=004026bd fs=008f
Ret  kernel32.534: MultiByteToWideChar() retval=00000004 ret=004026bd
fs=008f
Call kernel32.727: WideCharToMultiByte(00000000,00000000,40856898
L"ENB",ffffffff,40f42ea0,00000007,00000000,00000000) ret=004026dc
fs=008f
Ret  kernel32.727: WideCharToMultiByte() retval=00000004 ret=004026dc
fs=008f
Call kernel32.250: FindFirstFileA(40f42660 "C:\\Program
Files\\MathType\\Language\\MT4ENB.DLL",40856618) ret=0048c8c9 fs=008f
Ret  kernel32.250: FindFirstFileA() retval=ffffffff ret=0048c8c9 fs=008f
Call kernel32.333: GetFullPathNameA(40f42660 "C:\\Program
Files\\MathType\\Language\\MT4ENB.DLL",00000104,40856758,408565dc)
ret=00491049 fs=008f
Ret  kernel32.333: GetFullPathNameA() retval=0000002d ret=00491049
fs=008f
Call kernel32.342: GetLocaleInfoA(00002809,00000003,4085677c,000000ff)
ret=004281c2 fs=008f
Ret  kernel32.342: GetLocaleInfoA() retval=00000004 ret=004281c2 fs=008f
Call kernel32.534: MultiByteToWideChar(00000000,00000000,4085677c
"ENL",ffffffff,40f426d0,00000004) ret=004026bd fs=008f
Ret  kernel32.534: MultiByteToWideChar() retval=00000004 ret=004026bd
fs=008f
Call kernel32.727: WideCharToMultiByte(00000000,00000000,40856898
L"ENL",ffffffff,40f42ea0,00000007,00000000,00000000) ret=004026dc
fs=008f
Ret  kernel32.727: WideCharToMultiByte() retval=00000004 ret=004026dc
fs=008f
Call kernel32.250: FindFirstFileA(40f426e0 "C:\\Program
Files\\MathType\\Language\\MT4ENL.DLL",40856618) ret=0048c8c9 fs=008f
Ret  kernel32.250: FindFirstFileA() retval=ffffffff ret=0048c8c9 fs=008f
Call kernel32.333: GetFullPathNameA(40f426e0 "C:\\Program
Files\\MathType\\Language\\MT4ENL.DLL",00000104,40856758,408565dc)
ret=00491049 fs=008f
Ret  kernel32.333: GetFullPathNameA() retval=0000002d ret=00491049
fs=008f
Call kernel32.342: GetLocaleInfoA(00002c09,00000003,4085677c,000000ff)
ret=004281c2 fs=008f
Ret  kernel32.342: GetLocaleInfoA() retval=00000004 ret=004281c2 fs=008f
Call kernel32.534: MultiByteToWideChar(00000000,00000000,4085677c
"ENT",ffffffff,40f42750,00000004) ret=004026bd fs=008f
Ret  kernel32.534: MultiByteToWideChar() retval=00000004 ret=004026bd
fs=008f
Call kernel32.727: WideCharToMultiByte(00000000,00000000,40856898
L"ENT",ffffffff,40f42ea0,00000007,00000000,00000000) ret=004026dc
fs=008f
Ret  kernel32.727: WideCharToMultiByte() retval=00000004 ret=004026dc
fs=008f
Call kernel32.250: FindFirstFileA(40f42760 "C:\\Program
Files\\MathType\\Language\\MT4ENT.DLL",40856618) ret=0048c8c9 fs=008f
Ret  kernel32.250: FindFirstFileA() retval=ffffffff ret=0048c8c9 fs=008f
Call kernel32.333: GetFullPathNameA(40f42760 "C:\\Program
Files\\MathType\\Language\\MT4ENT.DLL",00000104,40856758,408565dc)
ret=00491049 fs=008f
Ret  kernel32.333: GetFullPathNameA() retval=0000002d ret=00491049
fs=008f
Call kernel32.342: GetLocaleInfoA(00003009,00000003,4085677c,000000ff)
ret=004281c2 fs=008f
Ret  kernel32.342: GetLocaleInfoA() retval=00000004 ret=004281c2 fs=008f
Call kernel32.534: MultiByteToWideChar(00000000,00000000,4085677c
"ENU",ffffffff,40f427d0,00000004) ret=004026bd fs=008f
Ret  kernel32.534: MultiByteToWideChar() retval=00000004 ret=004026bd
fs=008f
Call kernel32.727: WideCharToMultiByte(00000000,00000000,40856898
L"ENU",ffffffff,40f42ea0,00000007,00000000,00000000) ret=004026dc
fs=008f
Ret  kernel32.727: WideCharToMultiByte() retval=00000004 ret=004026dc
fs=008f
Call kernel32.250: FindFirstFileA(40f427e0 "C:\\Program
Files\\MathType\\Language\\MT4ENU.DLL",40856618) ret=0048c8c9 fs=008f
Ret  kernel32.250: FindFirstFileA() retval=ffffffff ret=0048c8c9 fs=008f
Call kernel32.333: GetFullPathNameA(40f427e0 "C:\\Program
Files\\MathType\\Language\\MT4ENU.DLL",00000104,40856758,408565dc)
ret=00491049 fs=008f
Ret  kernel32.333: GetFullPathNameA() retval=0000002d ret=00491049
fs=008f
Call kernel32.342: GetLocaleInfoA(00003409,00000003,4085677c,000000ff)
ret=004281c2 fs=008f
Ret  kernel32.342: GetLocaleInfoA() retval=00000004 ret=004281c2 fs=008f
Call kernel32.534: MultiByteToWideChar(00000000,00000000,4085677c
"ENU",ffffffff,40f42850,00000004) ret=004026bd fs=008f
Ret  kernel32.534: MultiByteToWideChar() retval=00000004 ret=004026bd
fs=008f
Call kernel32.727: WideCharToMultiByte(00000000,00000000,40856898
L"ENU",ffffffff,40f42ea0,00000007,00000000,00000000) ret=004026dc
fs=008f
Ret  kernel32.727: WideCharToMultiByte() retval=00000004 ret=004026dc
fs=008f
Call kernel32.250: FindFirstFileA(40f42860 "C:\\Program
Files\\MathType\\Language\\MT4ENU.DLL",40856618) ret=0048c8c9 fs=008f
Ret  kernel32.250: FindFirstFileA() retval=ffffffff ret=0048c8c9 fs=008f
Call kernel32.333: GetFullPathNameA(40f42860 "C:\\Program
Files\\MathType\\Language\\MT4ENU.DLL",00000104,40856758,408565dc)
ret=00491049 fs=008f
Ret  kernel32.333: GetFullPathNameA() retval=0000002d ret=00491049
fs=008f

The last 10 lines continue to repeat with the following changes:
  the first argument in GetLocaleInfoA  (LCID lcid)
  the fifth argument in MultiByteToWideChar (LPWSTR dst - destination
buffer)
  the first argument in FindFirstFileA (LPCSTR path)
  the first argument in GetFullPathNameA (LPCSTR name)

It seems that the program is querying the registry for the value of
"AppLang", which is "0x040,enu".  Then it gets the locale (should also
be enu).  Then it does some byte-char conversions.  Next it tries to
load a file that does not exist.  I believe that it is supposed to open
mswenu.dll or mswuienu.dll (at least those are the only dll files ending
in "enu" in the referenced directory).

I am new to debugging and don't quite know what to do next.  How do I
verify that the correct registry entry was retrieved and what strings
the MultiByteToWideChar and WideCharToMultiByte functions are
manipulating?

Also, If wine is modified to run MathType, will I be able to use it to
display/edit Math Type equations embedded in a document created with
WordPerfect 9 for Windows using WordPerfect 9 for Linux and the updated
wine?

Thanks for your help.
Jim Shepherd

Reply via email to