Hi,
As the subject says I am looking for some info about wine.

1) I am trying to understand how wine implements COM objects.
I have read the wiki pages on COM and DCOM objects but
I am interested in some further assistance.

Whats the easiest way to spot a function implementing part of
an interface? Is there some kind of name scheme I can follow?

I can find the interface definitions easily enough in the header files
or the idl files. I am having a little more trouble about the
implementation.

About the IDL files: is every interface supposed to be defined in an IDL?
Or only certain ones? And how would i know the difference?
For instance I found the IQueryInfo interface which is only defined in
an header file
without any association to a CLSID nor does there seem to be an
implementation.

2) I am trying to debug a deadlock of the x11 driver in Icewind Dale 1.
>From the +relay,+opengl log it looks like one thread(#28) that deadlocks
calls
SuspendThread with a HANDLE maybe to itself. #28 isn't suspended though
and the only other thread(#9) running is interrupted within the x11
critical section
doing an opengl call. When #28 wants to do an opengl call himself, it
deadlocks.
So maybe its #9 which is supposed to be suspended. Can it happen that
the wine server
suspends a thread in a critical section?

How can I get the thread id from that HANDLE?
if i try to run with the +server debug channel enabled
the problem will go away and my log output will be seriously garbled with
half the chars at the beginning of a line missing sometimes.

Another problem will show up though that is when i run a debugger and do
a bt
the app seems to hang showing a message box. Unfortunately I am running in
full screen mode in a virtual desktop and see no possibility to get to
that message box.
It seems to be hidden behind the full screen'd Icewind Dale.
Is that a bug or working as intended?

Any ideas how I could debug this further?

Sorry for the Wall of Text(TM)

Thank you for your assistance




Reply via email to