Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 25 Aug 2006 10:47:55 +0200
From:      Divacky Roman <xdivac02@stud.fit.vutbr.cz>
To:        Intron is my alias on the Internet <mag@intron.ac>
Cc:        freebsd-emulation@freebsd.org, freebsd-current@freebsd.org
Subject:   Re: Linuxulator: Unbreak Mozilla, Firefox and RealPlayer
Message-ID:  <20060825084755.GA93151@stud.fit.vutbr.cz>
In-Reply-To: <courier.44EE6A8A.00008655@intron.ac>
References:  <courier.44EE6A8A.00008655@intron.ac>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Aug 25, 2006 at 11:12:10AM +0800, Intron is my alias on the Internet wrote:
> Debugging is somewhat MUCH MORE DIFFICULT than rewriting.
> 
> Here is the minimum patch that can only unbreak Mozilla 1.7.12 (GTK 1),
> Firefox 1.0.7 and RealPlayer 10.0.7.785 (playing video)
> (sysctl compat.linux.osrelease=2.6.16).
> 
> It doesn't mean problems of clone(2) have been fixed. Actually, clone(2),
> set_thread_area(2) and get_thread_area(2) are mis-interpreted.
> 
> Adobe Reader 7.0.8 hasn't been completely unbroken yet. Problems around
> it seem to be more complicated.
> 
> My patch (against /sys/i386/linux/linux_machdep.c of CVS revision 1.53):
> 
> http://ftp.intron.ac/tmp/linux_machdep.c.1.53.diff

+               p2->p_pptr = td->td_proc->p_pptr;

I already did this but differently:

	if (args->flags & (CLONE_PARENT|CLONE_THREAD)) {
	   	struct linux_getppid_args gpa;
		struct proc *pp;

	    	(void) linux_getppid(td, &gpa);
		pp = pfind(td->td_retval[0]);
		if (pp == NULL) {
			printf("shit\n");
			return 0;
		}
		PROC_LOCK(p2);
		p2->p_pptr = pp;
		PROC_UNLOCK(p2);
		PROC_UNLOCK(pp);
	}

also, linux also sets pgrp with CLONE_THREAD.
	

can you pls explain me the set_thread_area() changes? also.. dont forget to update
both instances of setting up TLS (ie. in CLONE_SETTLS and in set_thread_area() syscall)

I have some more fixes uncommited which might fix the acroread.

thnx for the work!

roman



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060825084755.GA93151>