Thanks Eric
-----Original Message----- From: Eric Pouech [mailto:eric.pouech@wanadoo.fr] Sent: Wednesday, July 10, 2002 12:50 PM To: Medland, Bill Subject: Re: Any advice on how to debug this?
"Medland, Bill" a écrit :
-----Original Message-----
So now what do we do.
Having messed about, got a repeatable case and generally
bashed my head
around I have got to the following unfortunate situation.
It looks to me like:
comctl32.dll includes a shared data segment. One of the entries in that segment, presumably during the
DllEntry, is
populated with the address of GetSystemMetrics
A second copy of comctl32 then tries to use that address to call GetSystemMetrics
Unfortunately the second process has user32 mapped
somewhere else and so the
call goes somewhere weird and things fall over.
Any ideas as to what we can do about it?
hmm bad news...
did you try to run your app with a NT version (instead of a Win9x), that could help (maybe)
No, but I have now. (and ignored all the complaints about mixed versions). It works!!
I think that this will be the way to go; see Alexandre's reply.
another thought, when your processes disapear under the debugger, is the wineserver still up and running (if it crashes, it may explain the vanishing processes)
Yes it was
another solution would be to disable the support for the shared data segment... but in your case, it could fix this issue but open another one
TOO TRUE!! The app is very dependent upon shared data segments.
btw, are you sure user32.dll is mapped at another address in the second process
Yes
another fix would be to force some DLLs to be loaded at fixed addresses (user32 could be one of them)... another question, are you sure the two processes load the same user32 ?
Yes
(could it be that two wine versions coexist and that a different one is loaded in each process) ?
A+
Thanks for all the help
Bill