> > 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.

Reply via email to