> > It is most likely because of Alexandre latest
> > changes, but I have read them carefully,
> > and I can see nothing new that are likely
> > to work differently on Solaris.
>
> My guess is that Solaris threads share the same parent pid.
They do. All threads (LWP:s) has the same pid, which of course
means that the parent pid is the same.
> The new
> process creation code relies on getppid() to find the process that
> holds the startup info for a newly created process.
Any ides on how to fix that?
> The fact that we create a thread for a new process is temporary; when
> address space separation is in place (Real Soon Now ;-) we will use
> fork() to create all new processes and then getppid() will do the
> right thing.
On Solaris, there is a special fork1 function that only forks
the calling thread, if you call fork _all_ threads are forked,
which is probably not what you want.
> > Anyway, how could create_semaphore sucecced but
> > release semaphore fail, after the process
> > creation had failed?
>
> This is most likely because handles are not shared properly, because
> the process didn't find its parent through getppid(). You should be
> able to fix that by adding a ConvertToGlobalHandle() in the critical
> section semaphore creation.
OK, I will test that.