[fpc-devel]Re: Another problem with fpc v1.1
Peter Vreman
peter at freepascal.org
Tue Jul 2 15:32:56 CEST 2002
>
> On zaterdag, juni 29, 2002, at 02:02 , Sergey Korshunoff wrote:
>
> > My answer: fpc v1.1 use a stack of modules which must be compiled
> > (may be as a local variables in parser.pas). Sometimes
> > this dynamic variable is destoryed ( aTInputFileVar.Free is executed),
> > but it is keept in stack and fpc v1.1 go to use this already invalid
> > reference.
> >
> > Why we can not see a problem in standard configuration?
> > there is a _big_ chance (for a standard heap.inc realization) that
> > a freed block is used again for the same type of variable
> >
> > I think we can raise this error too by increasing a blocksize value in
> > heap.inc
> >
> > What I found with fpc v1.1 made with
> > maxblocksize := 304 + blocksize;
> > in rtl/inc/heap.inc.
>
> With this change, I can also reproduce it easily. The problem is that
> the tinputfile of a unit is both stored in the tppumodule and in the
> tscannerfile of a unit. So in the function loadunit in fppu.pas line
> 1109-1111 are wrong:
>
> scanner:=tscannerfile(hp.scanner);
> hp.reset;
> hp.scanner:=scanner;
>
> The reset destroys the tinputfile of the tppumodule (it's in the
> sourcefiles list of tmodule, which is reset by tmodule.reset, which is
> called by tppumodule.reset), but this same tinputfile is still assigned
> to the inputfile field of the scanner and reused! Peter, can you have a
> look at this?
Not soon. I just heard that i've to leave for work to Ireland tomorrow, so i've to pack
and arrange things.
More information about the fpc-devel
mailing list