[pacman-dev] cvs unusable on x86_64

K. Piche kevin.piche at cgi.com
Fri Oct 27 17:11:48 EDT 2006


On Thu, 2006-10-26 at 17:20 -0500, Aaron Griffin wrote:
> On 10/26/06, K. Piche <kevin.piche at cgi.com> wrote:
> > The wierd thing is that ctl is not modified by log_progress.  The only
> > explanation I can think of besides a compiler optimization bug is that
> > log_progress accesses the fsz variable which is just before the ctl
> > variable in main.  Moving the variable may fix it or refactoring the
> > code in socket_wait to get different assembler output.
> 
> This is a close as anything could possibly come to modifying ctl, but
> in this case it's just being silly and preventing compier warnings,
> I'd assume.
> 
> src/pacman/download.c
> 	/* we don't need that parameter */
> 	ctl=NULL;
> 
> Just in case the compiler decides to do-something-it-shouldn't, could
> you try switching this to a:
> 	/* we don't need that parameter */
> 	(void)ctl;
> 
> That's as close as I can get
> 
> _______________________________________________
> pacman-dev mailing list
> pacman-dev at archlinux.org
> http://www.archlinux.org/mailman/listinfo/pacman-dev

I commented the ctl=NULL to no effect.  Halfway stepping through
log_progress ctl gets optimized away which somehow affects the caller
which it obviously shouldn't.

I tried playing around with the do {} while loop to hopefully get
different code generation to no avail.  Since log_progress always
returns 1 the loop can become:

		if (stuff) break;
		blah
		ctl->idlecb(blah)
	} while (1)

But ctl still disappears.  Compiling with -O1 works as a workaround.

k





More information about the pacman-dev mailing list