Vincent Béron wrote:

Le mer 10/09/2003 à 11:13, Vincent Béron a écrit :


Le mar 09/09/2003 à 12:34, Juraj Hercek a écrit :


I've fixed the error on my side with WINEDLLPATH="/usr/local/lib/wine:.". Anyways I think it's a workaround not a solution... Since I don't know much about initialization, I would leave the real fix for someone more skillful.


It seems like if WINEDLLPATH is set, Wine dlls are only searched for in
it and nowhere else. I'll verify if that's the case or not, but that's
my gut feeling for now. Is it the behaviour we want?



Further investigation reveals that the problem lies in kernel32.dll.so
not being loaded yet when ntdll.dll.so fails to be found in
dll_paths[i].


That's exactly the problem I'm having with compiling Wine without optimizations. the wine binary tries to link with ntdll. ntdll needs "InterlockedCompareExchange" from kernel32. In my case, this translates to a compilation error, which I have not managed to eliminate.

Ok, the tie breaker is in.
On Windows 2000, ntdll.dll is not depnding on ANYTHING else. On the other hand, kernel32.dll does depend on ntdll.dll. This means that we have a circular dependancy in Wine that is not there in Windows 2000.


Would it be acceptable to swap the following 2 lines in wine_init (sorry
about the wrapping):
if (!(ntdll = dlopen_dll( "ntdll.dll", error, error_size, 0,
&file_exists ))) return;
if (!dlopen_dll( "kernel32.dll", error, error_size, 0, &file_exists ))
return;


I think it would be wrong. Kernel32 obviously does depend on ntdll. It would probably be better to figure out why ntdll depends on kernel32 (we know that - InterlockedCompareExchange), and remove that.

so kernel32.dll is opened before ntdll.dll, or is there a dependency
from kernel32.dll to ntdll.dll?


Unfortunetly, there is in Wine too.

Or is it possible to move the pthread_init function elsewhere, to
someplace called before ntdll.dll is loaded?


Do "ldd miscemu/wine" for an answer - ntdll is loaded by the Linux linker, even if dlopen was not called at all. It's an interesting question why we need the dlopen, then.

Vincent


Shachar

--
Shachar Shemesh
Open Source integration consultant
Home page & resume - http://www.shemesh.biz/





Reply via email to