Solaris X86

eric pouech eric.pouech at wanadoo.fr
Fri Aug 10 10:28:28 CDT 2001


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



More information about the wine-users mailing list