[M3devel] Calling RTHeapStats.ReportReachable(); with Pthread cvs head

Daniel Alejandro Benavides D. dabenavidesd at yahoo.es
Fri Oct 26 17:49:23 CEST 2007


Hi:
Yes it's working very well. I'm sorry for the delay.
Thanks.
--- Tony Hosking <hosking at cs.purdue.edu> escribió:

> Please try the latest CVS head.
> 
> On Oct 21, 2007, at 6:03 PM, Daniel Alejandro
> Benavides D. wrote:
> 
> > Hi:
> > Im trying to execute the following program with
> the Pthread cvs  
> > head implementation and I got this when executing
> the program:
> >
> > danielb at danielb-desktop:~/as207/code/m3gdb$
> LINUXLIBC6/Main
> > Entre dos enteros6 7
> > Estadisticas del Heap
> > HEAP: 0xb73d2000 .. 0xb7412000 => 0.2 Mbytes
> >
> >
> > ***
> > *** runtime error:
> > ***    <*ASSERT*> failed.
> > ***    file
> "../src/thread/PTHREAD/ThreadPThread.m3", line 992
> > ***
> >
> > Aborted
> > danielb at danielb-desktop:~/as207/code/m3gdb$
> >
> > The assert violated in
> m3core/thread/PTHREAD/ThreadPthread.m3 is this:
> > PROCEDURE ProcessOther (act: Activation;  p:
> PROCEDURE (start,  
> > stop: ADDRESS)) =
> >   (* LL=activeMu *)
> >   VAR
> >     sp: ADDRESS;
> >     state: RTMachine.ThreadState;
> >   BEGIN
> >     <*ASSERT act.state = ActState.Stopped*>
> >
> >
> > The source code of the little program is this:
> >
> > MODULE Main;
> >
> > IMPORT SIO;
> > IMPORT RTHeapStats;
> > IMPORT RTutils;
> > IMPORT RTHeapDebug;
> > VAR
> > varA, varB, varC: INTEGER;
> >
> >
> > PROCEDURE multiplicar(a,b: INTEGER): INTEGER=
> >         VAR
> >           varC: INTEGER;
> > BEGIN
> >         varC:=a*b;
> >         RETURN varC;
> > END multiplicar;
> >
> >
> > BEGIN
> >
> >         SIO.PutText("Entre dos enteros");
> >         varA:=SIO.GetInt();
> >         varB:=SIO.GetInt();
> >         varC:=multiplicar(varA,varB);
> >         SIO.PutText("Estadisticas del Heap");
> >         RTHeapDebug.CheckHeap();
> >    RTHeapStats.ReportReachable();
> > (*      RTutils.Heap 
> >
>
(FALSE,RTutils.HeapPresentation.ByTypecode,TRUE,LAST(CARDINAL));*)
> >         SIO.PutInt(varC);
> >
> > END Main.
> >
> > According to the draft book of Michael Dagenais
> Building  
> > Distributed OO Applications:   Modula-3 Objects at
> Work,  
> > RTHeapStats.ReportReachable()
> > " ... is called to determine the number
> > of active, reachable, objects (i.e. those which
> would not be
> > garbage collected). Of the 1980 objects on the
> heap, only slightly  
> > more than half are still alive."
> >
> > According to the interface documentation:
> >  "reports the number of reachable objects and
> bytes from each  
> > compilation unit, thread stack, and the individual
> roots that reach  
> > the most bytes. The report is written to stderr.
> The Modula-3  
> > process is frozen during the scanning and
> reporting."
> >
> > Obviously with the previous version of pthread the
> things were  
> > working fine, also with user level implementation
> >
> > Thanks,
> >
> > Daniel Benavides
> >
> >
> > Sé un Mejor Amante del Cine
> > ¿Quieres saber cómo? ¡Deja que otras personas te
> ayuden! .
> 
> 



       
____________________________________________________________________________________
Sé un Mejor Amante del Cine                         
¿Quieres saber cómo? ¡Deja que otras personas te ayuden!
http://advision.webevents.yahoo.com/reto/entretenimiento.html



More information about the M3devel mailing list