Re: [system-tools] g-s-t 1.2.0 does not work on FreeBSD

Carlos Garnacho <[email protected]>
Newsgroups gmane.comp.gnome.ximian.setup-tool
Message-ID <1110658714.7163.99.camel@filemon>
On Thu, 2005-03-10 at 16:19 -0500, Joe Marcus Clarke wrote:
> In a nutshell, it hangs.  It really depends on the FreeBSD version as to 
> where it hangs.  On 5.X and 6.X, it will hand after authenticating the 
> user.  Basically, since gst-auth.c closes stderr, this causes su to 
> SIGSTOP the tool's backend process, and thus gst-tool.c gets stuck in an 
> infinite poll() loop.
> 
> On FreeBSD 4.X, the user never sees the authentication dialog.  If the 
> tool is run as root, everything seems to work, but hangs when quitting. 
>   I added some debugging, and found that under 4.X, g-s-t never reads 
> anything from the backend su process.  That is, it never sees the 
> "Password:" prompt, and thus hangs in a poll() loop forever.
> 
> Everything used to work on all versions before the switch to use pipes. 
>   Attached are patches that get the tools working under 5.X and 6.X 
> again, but I'd like to know if there's anything I should be looking at 
> for the 4.X problems (i.e. the hang when run as non-root, and the hang 
> on exit).  What would be lost if g-s-t reverted to the old master file 
> descriptor on FreeBSD only?  Thanks.

I experimented when first ported GST to FreeBSD and had to tweak a bit
the pseudoterminal's echo disabling, but when I switched to the async
communication commented out that part [1] since it didn't seem to be
necessary anymore, maybe it's still necessary for the FreeBSD's
pseudoterm implementation?

I you switch back to the old code, the communication would be
synchronous again, blocking the UI anytime a backend call takes a bit
longer to return (ie: DHCP or PPP interfaces enabling) instead of
showing a dialog with a progress bar to tell the user that it's doing
something

	Regards


[1] grep for tcsetattr in gst-auth.c

> 
> Joe
> 
> plain text document attachment (patch-src_common_gst-tool.c)
> --- src/common/gst-tool.c.orig	Thu Mar 10 14:39:54 2005
> +++ src/common/gst-tool.c	Thu Mar 10 14:40:00 2005
> @@ -1653,7 +1653,7 @@ poll_backend (GstTool *tool)
>  	struct pollfd fd;
>  
>  	fd.fd = tool->read_fd;
> -	fd.events = POLLIN || POLLPRI;
> +	fd.events = POLLIN | POLLPRI;

Fuck!! weird typo, sorry


>  
>  	while (poll (&fd, 1, 100) <= 0) {
>  		while (gtk_events_pending ())
> plain text document attachment (patch-src_common_gst-auth.c)
> --- src/common/gst-auth.c.orig	Thu Mar 10 14:39:18 2005
> +++ src/common/gst-auth.c	Thu Mar 10 14:39:50 2005
> @@ -142,12 +142,12 @@ gst_auth_run_term (GstTool *tool, gchar 
>  		unsetenv("LANG");
>  		unsetenv("LANGUAGE");
>  
> -		dup2 (p[1], 1);
> -		dup2 (p[1], 2);
> +		dup2 (p[1], STDOUT_FILENO);
> +		/*dup2 (p[1], 2);*/
>  		close (p[0]);
>  
>  		execv (args[0], args);
> -		exit (255);
> +		_exit (255);
>  	} else {
>  #ifndef __FreeBSD__
>  		/* Linux's su works ok with echo disabling */
> _______________________________________________
> system-tools-list mailing list
> [email protected]
> http://mail.gnome.org/mailman/listinfo/system-tools-list
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.