[M3devel] pthreads issues [was: Re: strange errors... ]

Daniel Alejandro Benavides D. dabenavidesd at yahoo.es
Sun Jul 22 21:31:42 CEST 2007


Hi:
What I have saw of the two step boostrapping process
is that cm3 executable looks in its own directory for
cm3.cfg, so I have made a copy from /usr/local/cm3/bin
to /usr/local/cm3/pkg/cm3/LINUXLIBC6

Another thing is that do-cm3-std.sh realclean, doesnt
clean some m3core parts, some yes.


Thanks 

--- Mika Nystrom <mika at async.caltech.edu> wrote:

> 
> Tony Hosking writes:
> ...
> >> but after recompiling a second time, it no longer
> seems to do that.
> >> By the way, I am somewhat suspicious that this
> Juno crash has
> >> something to do with threading: if you look
> closely, that part of
> >> Juno has to do with thread switching into and out
> of the
> >> Juno-machine...which is why I was happy to see it
> disappear (however
> >> it did that).
> >
> >Maybe you had stale code in the build directories? 
> Glad to hear it  
> >went away after recompiling.
> >
> 
> I *obsessively* clean my directories between builds!
>  I have double-
> and triple-checked that nothing in the source tree
> is left in object
> form after doing
> 
>   do-cm3-std.sh realclean
>   do-cm3-core.sh realclean
> 
> Yet, this happens.  My best guess is that somehow,
> old objects (from
> /usr/local/cm3/pkg?) are "leaking" through the
> bootstrapping process.
> Surely that's not supposed to happen?  Why does it
> happen to me and
> apparently not to you?  I follow your directions
> exactly and always
> start from an absolutely clean system (on Mac I
> don't even have PM3
> installed, so there's no Modula-3 at all before I
> start following
> the instructions).
> 
> 
> >> I still have a threading crash in mentor.  I run
> "Wheeler" to get this
> >> one...
> >>
> ...
> >>
> >> ***
> >> *** runtime error:
> >> ***    <*ASSERT*> failed.
> >> ***    file
> "../src/thread/PTHREAD/ThreadPThread.m3", line 675
> >> ***
> >>
> >
> >That is an assert regarding setting the stack size.
>  I wonder if this  
> >is a Thread.SizedClosure which has a size value
> that asks for a stack  
> >size less than PTHREAD_STACK_MIN.  I am not sure
> what the best way to  
> >handle that is except to disregard the return value
> from  
> >pthread_attr_setstacksize.  Can you try replacing
> line 675 in  
> >ThreadPThread.m3 with:
> >
> >         EVAL Upthread.attr_setstacksize(attr,
> bytes);
> >
> >and rebuilding?  I am surprised to see that error
> though, since you  
> >will note that I get the default stack size from a
> freshly  
> >initialized attributes structure on line 673 and
> use the greater of  
> >the default size and the requested size.
> 
> Debugging this a bit further, I think I'm just
> running out of stack
> space.  You are saying that this call can fail
> because of too small
> a requested stack space, too?  It might be nice to
> have some sort
> of error message here instead of just an assert
> failure...
> 
> How big is your stack limit on your mac?  On mine
> it's 64 megabytes,
> and when I added some printing:
> 
>         RTIO.PutText("Upthread.attr_getstacksize
> returned bytes=");
>         RTIO.PutInt(bytes);
>         RTIO.PutText(" defaultStackSize=");
>         RTIO.PutInt(defaultStackSize);
>         RTIO.PutChar('\n');
> 
>         bytes := MAX(bytes, size * ADRSIZE(Word.T));
>         WITH r = Upthread.attr_setstacksize(attr,
> bytes) DO
>           IF r # 0 THEN
>             RTIO.PutText("Upthread.attr_setstacksize
> failed, size=");
>           ELSE
>             RTIO.PutText("Upthread.attr_setstacksize
> succeeded, size=");
>           END;
>           RTIO.PutInt(size);
>           RTIO.PutText(" bytes=");
>           RTIO.PutInt(bytes);
>           RTIO.PutChar('\n');
>           <*ASSERT r=0*>
>         END;
>         RTIO.Flush();
> 
> I found the following:
> 
> (running Wheeler)
> 
> ... lots of times ...
> Upthread.attr_setstacksize succeeded, size=79632
> bytes=524288
> Upthread.attr_getstacksize returned bytes=524288
> defaultStackSize=79632
> Upthread.attr_setstacksize succeeded, size=79632
> bytes=524288
> Upthread.attr_getstacksize returned bytes=524288
> defaultStackSize=79632
> Upthread.attr_setstacksize failed, size=637056
> bytes=2548224
> 
> 
> ***
> *** runtime error:
> ***    <*ASSERT*> failed.
> ***    file
> "../src/thread/PTHREAD/ThreadPThread.m3", line 692
> ***
> 
> 
> Program exited with code 01.
> 
> It's really a bug in mentor.  Zeus.m3:499 calls
> IncDefaultStackSize
> to request another 10 kilowords, Obliq.m3:32 calls
> IncDefaultStackSize
> for another 64 kilowords , and
> WheelerCompressObliqView.m3 requests
> 8*GetDefaultStackSize in a SizedClosure.  A bunch of
> those threads
> and I just run out of stack space.  (I am assuming
> that pthreads
> allocates stacks in the 'stack' segment of the
> process...)
> 
> Attempting to fix the bug in mentor makes it run out
> of stack space, 
> looks like it's some recursive descent parser... 
> Maybe this demo
> just won't run on my computer.
> 
> >Weird, I was running Bresenham just fine yesterday
> after the fix I  
> >checked in.  Sounds like you may have some stale
> object files lying  
> >around.
> 
> I was able to get it to run again.  And deadlock
> again.  And run
> again... it's definitely something intermittent.  I
> think it happens
> right when it attempts to start the threads, not
> afterwards.
> 
> And when you ctrl-C it, all you get is that it's
> stopped
> in Trestle__AwaitDelete (I already sent this one).
> 
> >
> >> I really don't think it's my old system that's
> corrupting the new  
> >> images,
> >> but I am *never* 100% certain of that.  I found a
> very weird behavior
> >> with the build system, actually.  I found that
> the not-yet-installed
> >> compiler in /usr/local/cm3/pkg/cm3/PPC_DARWIN/
> looks for cm3.cfg in
> >> /usr/local/cm3/bin, but *only* if that is in the
> shell PATH.  Is that
> >> a known/desired behavior?  It causes the brand
> new compiler to use the
> >> old cm3.cfg, and it does so quietly without any
> warnings or messages
> >> whatsoever.  Changing your PATH makes it stop do
> that and instead  
> >> crash,
> 
=== message truncated ===



       
____________________________________________________________________________________
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