[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: mozilla on alpha



On Sat, 25 Nov 2000, Peter Maydell wrote:

> OK, I'm looking into the regxpcom segfault. What seems to be happening
> is that:
>  * program runs to completion
>  * xpcom library _fini routine is called
>  * this calls a couple of routines in gcc/config/alpha/crtbegin.asm:
>    __do_global_dtors_aux
>    __do_frame_takedown
>  * the _fini code expects the gp register to be preserved across
>    the __do_global_dtors_aux call, but it isn't
>  * therefore the call to __do_frame_takedown actually jumps to 
>    address 0, causing a segfault
> 
> Further singlestepping indicates that gp is not trashed by
> the first destructor called by __do_global_dtors_aux, only
> by the second (global destructors keyed to xptiZipLoader::gCache ()).

Ah, ok...this sounds like a job for Superman....argh...wrong movie :-P
Seriously, this sounds like what's going on with Qt and seems to only
occur with multiple-inheritence code.  I'll check my assembly references
and see what I can find out (it's been a few months since I had to
seriously read through Alpha asm).  It sounds like something's not doing
the right thing here...most likely gcc...

> Any ideas? (My alpha assembly is virtually nonexistent, and I 
> certainly have no idea what the calling convention says about 
> who should be preserving gp here...)

I intend to find out :-)

C



Reply to: