Robert Lunnon wrote:>
> I ran freecell under wine -debugmsg +relay and got an exception with a
> message
>
> protocol error: 84a28e8: init_process : parent but no info
>
> just after SHOWWINDOW was called
>
> Anyone know what this means ?
well this error when a new process is started up
before looking in the details, let me introduce a few defs (quoting the
Wine doc)
> Before going into the depths of debugging in Wine, here's
> a small overview of process and thread handling in Wine.
> It has to be clear that there are two different beasts:
> processes/threads from the Unix point of view and
> processes/threads from a Windows point of view.
>
> Each Windows' thread is implemented as a Unix process (under
> Linux using the <function>clone</function> syscall),
meaning
> that all threads of a same Windows' process share the same
> (unix) address space.
>
> In the following:
> W-process means a process in Windows' terminology
> U-process means a process in Unix' terminology
> W-thread means a thread in Windows' terminology
>
> A W-process is made of one or several W-threads. Each W-thread is
mapped
> to one and only one U-process. All U-processes of a same W-process
share
> the same address space.
>
> Each Unix process can be identified by two values:
> the Unix process id (upid in the following)
> the Windows's thread id (tid)
>
> Each Windows' process has also a Windows' process id
> (wpid in the following). It must be clear that upid and wpid are
> different and shall not be used instead of the other.
>
> Wpid and tid are defined (Windows) system wide. They must not be
confused
> with process or thread handles which, as any handle, is an
> indirection to a system object (in this case process or
> thread). A same process can have several different handles
> on the same kernel object. The handles can be defined as
> local (the values is only valid in a process), or system
> wide (the same handle can be used by any W-process).
basically, what happens is as follows :
- a new w-process is created
- the unix process has a parent (in the unix sense) which is also
defined
as a w-process
- when this happens, the parent (in windows sense) should be the parent
(in
unix sense), and the parent should have created some info for the new
process
- the error reported here is that a w-parent has been found, but no info
has been found for the new process
so the areas to look for fixing this are why a parent to you process is
found in the
server. IIRC, there are some diffs between Solaris and Linux regarding
thread handling
(at least between Solaris/LWP and Linux/clone). I assume you're using
the LWP API?
if so, the checks for getpid and getppid for different calls have to be
looked upon
A+
--
---------------
Eric Pouech (http://perso.wanadoo.fr/eric.pouech/)
"The future will be better tomorrow", Vice President Dan Quayle