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

Tony Hosking hosking at cs.purdue.edu
Wed Nov 21 21:22:55 CET 2007


Have you tried this lately?  It seems to work fine for me on Fedora  
Core.

On Oct 30, 2007, at 12:48 PM, Daniel Alejandro Benavides D. wrote:

> Hi:
> LINUXLIBC6 32 bits, ubuntu dapper
>
> >Hmm. showheap works fine for me on my I386_DARWIN box. What
> >platform are you on?
>
> On Oct 30, 2007, at 2:24 AM, Daniel Alejandro Benavides D. wrote:
>
> > Hi:
> > About this last changes, the runtime can not properly
> > feed shownew, with a @M3shownew=shownew.
> > The program 'a' is just not started as it seems here,
> > altough the window (shownew) does appear, start
> > doesn't respond, and it stays there until aborted.
> >
> > Thanks
> >
> > --- "Daniel Alejandro Benavides D."
> > escribió:
> >
> >> Hi:
> >> Yes it's working very well. I'm sorry for the delay.
> >> Thanks.
> >> --- Tony Hosking 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
>
>
> ¡Descubre una nueva forma de obtener respuestas a tus preguntas!
> Entra en Yahoo! Respuestas.




More information about the M3devel mailing list