[M3devel] strange errors...

Mika Nystrom mika at async.caltech.edu
Tue Jul 3 11:13:23 CEST 2007


Wow!  It works!  I am able to compile the various stages of bootstrap
as well as run Juno, mentor, etc., without any @M3 hacks, on FreeBSD
with the user-level threads, as of this afternoon's checkout (around
3 p.m. Pacific).  On my quest to move on from various dusty PM3
decks, I am still struggling with some of my own code, which seems
to be having issues with pickles, network objects, trestle, m3gdb,
and a few other odds and ends, but I will return to those at a later
date.  All the garbage collector issues that I am aware of seem
resolved on FreeBSD.  A big thanks!!!

     Mika

P.S. Tony, if you'd like a testing account on my home machine, which
is running FreeBSD5.5-RELEASE/i386, just let me know.  Of course
I'm happy to try updating and compiling things, too.  

Tony Hosking writes:
>In follow up to my previous message, I think I may have a simpler  
>fix.  Can you please try the latest version of ThreadPosix.m3 that I  
>just checked in.  Unfortunately, I don't have a user-level threads  
>system on which to try (Linux is broken because setjmp/longjmp use  
>encryption to prevent stack-smashing security exploits), and my  
>Solaris boxes are not available right now.
>
>On Jul 2, 2007, at 6:35 AM, Mika Nystrom wrote:
>
>> Ok, things are certainly better on FreeBSD/i386 now.  I just spent
>> a few minutes playing a newly compiled tetris.
>>
>> However, I still get that very first error I wrote about:
>>
>> /home/mika/u/parserlib/ktok/FreeBSD4/tok ../src/Lang.t -o LangTok.i3
>> WELCOME!
>> GOT TOKPARAMS!
>> GOT TOKENS
>> GOT SUBS!
>>
>>
>> ***
>> *** runtime error:
>> ***    <*ASSERT*> failed.
>> ***    file "../src/runtime/common/RTCollector.m3", line 2310
>> ***
>>
>> What I did was... I wasn't sure exactly what state my CM3 was in,
>> as usual, so I deleted all of /usr/local/cm3, plus my repository
>> checkout, checked it out from scratch, and followed your bootstrap
>> instructions of June 24 to the letter, except that where you said
>> to do "do-cm3-std.sh realclean" I did "do-cm3-core.sh realclean"
>> and then "do-cm3-std.sh realclean", built the stage 1 and stage 2,
>> installed the new compiler.  No problems until trying to run
>> this code, which is part of our local version of the "caltech- 
>> parser"...
>> Here we go:
>>
>>
>> Program received signal SIGABRT, Aborted.
>> 0x68b5e0c7 in kill () from /lib/libc.so.5
>> (gdb) where
>> #0  0x68b5e0c7 in kill () from /lib/libc.so.5
>> #1  0x68b5312e in raise () from /lib/libc.so.5
>> #2  0x68bc6cef in abort () from /lib/libc.so.5
>> #3  0x682bc7f2 in RTOS__Crash () at RTOS.m3:20
>> #4  0x682b3b66 in RTProcess__Crash (M3_Bd56fi_msg=0x0) at  
>> RTProcess.m3:65
>> #5  0x682b1e30 in RTError__EndError (M3_AicXUJ_crash=1 '\001') at  
>> RTError.m3:115
>> #6  0x682b1b71 in RTError__MsgS (M3_AJWxb1_file=0x682dd4c8,  
>> M3_AcxOUs_line=2310, M3_Bd56fi_msgA=0x682df048,  
>> M3_Bd56fi_msgB=0x682d9630, M3_Bd56fi_msgC=0x682df048) at RTError.m3:40
>> #7  0x682b21f4 in RTException__Crash (M3_Cblw37_a=0xbfbfe0b8,  
>> M3_AicXUJ_raises=0 '\0', M3_AJWxb1_rte=0x682d94e0) at  
>> RTException.m3:79
>> #8  0x682b1f58 in RTException__DefaultBackstop  
>> (M3_Cblw37_a=0xbfbfe0b8, M3_AicXUJ_raises=0 '\0') at RTException.m3:39
>> #9  0x682b1ebc in RTException__InvokeBackstop  
>> (M3_Cblw37_a=0xbfbfe0b8, M3_AicXUJ_raises=0 '\0') at RTException.m3:25
>> #10 0x682bdc37 in RTException__Raise (M3_Cblw37_act=0xbfbfe0b8) at  
>> RTExFrame.m3:29
>> #11 0x682b1ff8 in RTException__DefaultBackstop  
>> (M3_Cblw37_a=0xbfbfe0b8, M3_AicXUJ_raises=0 '\0') at RTException.m3:47
>> #12 0x682b1ebc in RTException__InvokeBackstop  
>> (M3_Cblw37_a=0xbfbfe0b8, M3_AicXUJ_raises=0 '\0') at RTException.m3:25
>> #13 0x682bdc37 in RTException__Raise (M3_Cblw37_act=0xbfbfe0b8) at  
>> RTExFrame.m3:29
>> #14 0x6829da9e in RTHooks__ReportFault  
>> (M3_AJWxb1_module=0x682dd640, M3_AcxOUs_info=73920) at RTHooks.m3:110
>> #15 0x682afc48 in _m3_fault (M3_AcxOUs_arg=73920) from /usr/local/ 
>> cm3/pkg/m3core/FreeBSD4/libm3core.so.5
>> #16 0x682ad065 in RTHooks__CheckStoreTraced  
>> (M3_Af40ku_ref=0x68c2b104) at RTCollector.m3:2310
>> #17 0x682bfba2 in ThreadPosix__LockMutex (M3_AYIbX3_m=0x68c2b104)  
>> at ThreadPosix.m3:416
>> #18 0x681ab817 in Wr__PutText (M3_BxxOH1_wr=0x68c2b104,  
>> M3_Bd56fi_t=0x68c05608) at Wr.m3:93
>> #19 0x0804a445 in Main_M3 (M3_AcxOUs_mode=1) at Main.m3:113
>> #20 0x682b120a in RTLinker__RunMainBody (M3_DjPxE3_m=0x804cae0) at  
>> RTLinker.m3:399
>> #21 0x682b0735 in RTLinker__AddUnitI (M3_DjPxE3_m=0x804cae0) at  
>> RTLinker.m3:113
>> #22 0x682b07bc in RTLinker__AddUnit (M3_DjPxE5_b=0x8049e50) at  
>> RTLinker.m3:122
>> #23 0x080491f5 in main (argc=4, argv=0xbfbfe40c, envp=0xbfbfe420)  
>> at _m3main.mc:4
>> (gdb)
>>
>>    2302 PROCEDURE CheckStoreTraced (ref: REFANY) =
>>    2303   VAR p := Word.RightShift (LOOPHOLE(ref, Word.T),  
>> LogBytesPerPage);
>>    2304   BEGIN
>>    2305     RTOS.LockHeap ();
>>    2306     INC(checkStoreTraced);
>>    2307
>>    2308     WITH h = HeaderOf (LOOPHOLE(ref, RefReferent)) DO
>>    2309       <*ASSERT h.typecode # RT0.TextLitTypecode*>
>>    2310       <*ASSERT NOT h.gray*>
>>    2311
>>    2312       IF h.dirty THEN
>>    2313         <*ASSERT NOT desc[p - p0].clean*>
>>    2314       ELSE
>>    2315         h.dirty := TRUE;
>>    2316         IF desc[p - p0].clean THEN
>>    2317           desc[p - p0].clean := FALSE;
>>    2318           IF perfOn THEN PerfChange(p, PageCount(p)); END;
>>    2319         END;
>>    2320       END;
>>    2321     END;
>>    2322
>>    2323     RTOS.UnlockHeap();
>>    2324     RETURN;
>>    2325   END CheckStoreTraced;
>>
>> I believe this is the same as the first bug I ran across.  The program
>> (ktok) does appear to work fine with @M3nogc.
>>
>> Further information: I am also "able" to get mentor and Juno to
>> crash on this line 2310.  I checked the bootstrapping process by
>> building a third-stage bootstrapped compiler, and it was byte-for-byte
>> identical to the second-stage bootstrap.  Finally, I am still a bit
>> worried about libraries (maybe across the different booting stages)
>> getting polluted: I am able to run Juno, mentor, etc., except for
>> the garbage-collection problem, but my own Trestle applications
>> crash somewhere in the (C) X libraries, even though they have worked
>> fine on several other versions of Modula-3.  (Most likely, of course,
>> it's some sort of bug of mine... generally I am not in the habit of
>> blaming the libraries or compiler, but you never know!)
>>
>> The line-2310 crashes also seem to go away with @M3noincremental,  
> by the
>> way.
>>
>>
>>
>>     Mika
>>
>> Tony Hosking writes:
>>> I've just checked in a fix to ThreadPosix.m3 that eliminates your
>>> problem with user-level threads.  I have tested this on I386_DARWIN
>>> and it appears to be working just fine now.  Please try again with
>>> the updated ThreadPosix.m3.
>>>
>>> On Jun 25, 2007, at 3:05 PM, Mika Nystrom wrote:
>>>
>>>> Indeed, -g was one of the culprits.  I changed it to -gstabs+ and
>>>> got a bit further... (please scroll down to STEP 2, sorry)
>>>>
>>>> Tony Hosking writes:
>>>>> Sounds like we really need some work done in this area.  I very
>>>>> rarely use the build scripts, since I bootstrap manually from old
>>>>> compilers to new compilers rather than use the scripts.  I suggest
>>>>> the following approach, which I hope you will try, and then report
>>>>> back on.
>>>>>
>>>>> Install the bootstrap compiler as you did originally:
>>>>>
>>>>>> rm -rf /usr/local/cm3/*
>>>>>>
>>>>>> cd ~/cm3-cvs
>>>>>> mkdir boot
>>>>>> cd boot
>>>>>> tar xzvf ../cm3-min-POSIX-FreeBSD4-d5.3.1-2005-10-05.tgz
>>>>>> ./cminstall
>>>>>
>>>>> Now you will have some kind of cm3 installed, presumably in /usr/
>>>>> local/cm3/bin/cm3.
>>>>>
>>>>> Make sure you have a fresh CVS checkout in directory cm3 (let's
>>>>> assume this is in your home directory ~/cm3).  Also, make sure you
>>>>> have an up-to-date version of the CM3 backend compiler cm3cg
>>>>> installed by executing the following:
>>>>>
>>>>> STEP 0:
>>>>>
>>>>> export CM3=/usr/local/cm3/bin/cm3
>>>>> cd ~/cm3/m3-sys/m3cc
>>>>> $CM3
>>>>> $CM3 -ship
>>>>>
>>>>> You can skip this last step if you know your backend compiler is up
>>>>> to date.
>>>>>
>>>>> Now, let's build the new compiler from scratch (this is the  
>>>>> sequence
>>>>> I use regularly to test changes to the run-time system whenever I
>>>>> make them):
>>>>>
>>>>> STEP 1:
>>>>>
>>>>> cd ~/cm3/m3-libs/m3core
>>>>> $CM3
>>>>> $CM3 -ship
>>>>> cd ~/cm3/m3-libs/libm3
>>>>> $CM3
>>>>> $CM3 -ship
>>>>> cd ~/cm3/m3-sys/m3middle
>>>>> $CM3
>>>>> $CM3 -ship
>>>>> cd ~/cm3/m3-sys/m3linker
>>>>> $CM3
>>>>> $CM3 -ship
>>>>> cd ~/cm3/m3-sys/m3front
>>>>> $CM3
>>>>> $CM3 -ship
>>>>> cd ~/cm3/m3-sys/m3quake
>>>>> $CM3
>>>>> $CM3 -ship
>>>>> cd ~/cm3/m3-sys/cm3
>>>>> $CM3
>>>>> $CM3 -ship
>>>>>
>>>>> At this point you should have a bootstrapped version of cm3  
>>>>> installed
>>>>> in the directory /usr/local/cm3/pkg/cm3/TARGET/cm3 (where TARGET is
>>>>> the CM3 target platform you are building on -- e.g., LINUXLIBC6,
>>>>> PPC_DARWIN, ...).  Note that this did not overwrite your original
>>>>> installed compiler in /usr/local/cm3/bin/cm3.  We
>>>>> are now going to test the new compiler, which was built using  
>>>>> the old
>>>>> compiler, by bootstrapping it one more time.
>>>>>
>>>>> From here on out, please replace TARGET with your target  
>>>>> platform as
>>>>> appropriate.
>>>>>
>>>>> STEP 2:
>>>>>
>>>>> export CM3=/usr/local/cm3/pkg/cm3/TARGET/cm3
>>>>> cd ~/cm3/scripts
>>>>> ./do-cm3-std.sh realclean
>>>>> REPEAT STEP 1 to rebuild the libraries and the compiler using the
>>>>> STEP 1 bootstrap compiler.
>>>>>
>>>>> Now you have a STEP 2 bootstrap compiler installed in /usr/local/ 
>>>>> cm3/
>>>>> pkg/cm3/TARGET/cm3.  Let's assume the new compiler now works  
>>>>> properly
>>>>> since it successfully bootstrapped itself, but to be sure we can  
>>>>> now
>>>>> use it to rebuild the world:
>>>>
>>>> Ok, I got this far.  I built the step 1 (m3core...cm3), set my
>>>> compiler to the newly-built compiler, and rebuilt (m3core...cm3).
>>>> No errors anywhere, beautiful.
>>>>
>>>>>
>>>>> cd ~/cm3/scripts
>>>>> ./do-cm3-std.sh realclean
>>>>> ./do-cm3-std.sh buildship
>>>>
>>>> Here's where it dies:
>>>>
>>>> ./do-cm3-std.sh buildship
>>>> CM3C =
>>>> /big/home2/mika/2/cm3-cvs/fresh/cm3/scripts/pkgmap.sh -c "/usr/
>>>> local/cm3/pkg/cm3/FreeBSD4/cm3 -build  -DROOT='/big/home2/mika/2/
>>>> cm3-cvs/fresh/cm3'  && /usr/local/cm3/pkg/cm3/FreeBSD4/cm3 -ship -
>>>> DROOT='/big/home2/mika/2/cm3-cvs/fresh/cm3' " m3core libm3
>>>> patternmatching m3middle m3quake m3scanner m3tools m3cgcat m3cggen
>>>> m3gdb m3bundle arithmetic bitvector digraph parseparams
>>>> realgeometry set slisp sortedtableextras table-list tempfiles tcp
>>>> udp libsio libbuf debug listfuncs embutils m3tk-misc http binIO
>>>> commandrw m3tk mtex m3totex m3tohtml m3scan m3markup m3browser
>>>> cmpdir cmpfp dirfp uniq netobj netobjd stubgen events rdwr
>>>> sharedobj sharedobjgen odbc postgres95 db smalldb stable stablegen
>>>> X11R4 ui PEX vbtkit cmvbt jvideo videovbt web formsvbtpixmaps
>>>> formsvbt formsview formsedit codeview mg mgkit opengl anim3D zeus
>>>> m3zume synloc synex metasyn obliqrt obliqparse obliqprint obliq
>>>> obliqlibemb obliqlibm3 obliqlibui obliqlibanim obliqsrvstd
>>>> obliqsrvui obliqbinmin obliqbinstd obliqbin!
>>>> ui obliqbinanim visualobliq vocgi voquery vorun webvbt recordheap
>>>> rehearsecode replayheap showheap shownew showthread pkl-fonts juno-
>>>> machine juno-compiler juno-app cube calculator fisheye mentor
>>>> === package /big/home2/mika/2/cm3-cvs/fresh/cm3/m3-libs/m3core ===
>>>>  +++ /usr/local/cm3/pkg/cm3/FreeBSD4/cm3 -build  -DROOT='/big/home2/
>>>> mika/2/cm3-cvs/fresh/cm3'  && /usr/local/cm3/pkg/cm3/FreeBSD4/cm3 -
>>>> ship -DROOT='/big/home2/mika/2/cm3-cvs/fresh/cm3'  +++
>>>>
>>>>
>>>> ***
>>>> *** runtime error:
>>>> ***    <*ASSERT*> failed.
>>>> ***    file "../src/runtime/common/RTCollector.m3", line 690
>>>> ***
>>>>
>>>>
>>>>
>>>> ***
>>>> *** runtime error:
>>>> ***    <*ASSERT*> failed.
>>>> ***    file "../src/runtime/common/RTCollector.m3", line 690
>>>> ***
>>>
>>>> Abort trap
>>>>  *** execution of  failed ***
>>>>
>>>> This time it appears to be cm3 itself that's crashing:
>>>>
>>>> (310)rover:~/cm3-cvs/fresh/cm3/m3-libs/m3core>$CM3 -keep -commands
>>>>
>>>>
>>>> ***
>>>> *** runtime error:
>>>> ***    <*ASSERT*> failed.
>>>> ***    file "../src/runtime/common/RTCollector.m3", line 690
>>>> ***
>>>>
>>>>
>>>>
>>>> ***
>>>> *** runtime error:
>>>> ***    <*ASSERT*> failed.
>>>> ***    file "../src/runtime/common/RTCollector.m3", line 690
>>>> ***
>>>>
>>>> Abort
>>>>
>>>> What follows is what m3gdb has to say about this.  I take it that
>>>> the last error message comes from my -gstabs+ option.  m3gdb doesn't
>>>> like this new binary: it can't print variables and sometimes crashes
>>>> trying.  Would I have better luck with "-gstabs", do you think?  Or
>>>> do I just need to fix the compile process and install a new m3gdb?
>>>> (I take it there is a newer one: mine is very old.  But I remember
>>>> that m3gdb doesn't always work that well...)
>>>>
>>>>       Mika
>>>>
>>>> #1  16_81a619d in __raise ()
>>>> #2  16_81a3b8f in abort ()
>>>> #3  16_8178d16 in RTOS.Crash () at RTOS.m3:20
>>>> #4  16_8171fd2 in RTProcess.Crash (msg=NIL) at RTProcess.m3:65
>>>> #5  16_8170428 in RTError.EndError (crash=TRUE) at RTError.m3:115
>>>> #6  16_8170169 in RTError.MsgS (file=16_820a508, line=690,
>>>> msgA=16_820bfe8, msgB=16_8208170, msgC=16_820bfe8) at RTError.m3:40
>>>> #7  16_81707ec in RTException.Crash (a=RECORD exception =
>>>> 16_8208020; arg = 16_c; module = 16_820a680; line = 690; pc = NIL;
>>>> info0 = NIL; info1 = NIL; un_except = 16_8208020; un_arg = NIL;
>>>>      END, raises=FALSE, rte=16_8208020) at RTException.m3:79
>>>> #8  16_8170550 in RTException.DefaultBackstop (a=RECORD exception =
>>>> 16_8208020; arg = 16_c; module = 16_820a680; line = 690; pc = NIL;
>>>> info0 = NIL; info1 = NIL; un_except = 16_8208020;
>>>>     un_arg = NIL;  END, raises=FALSE) at RTException.m3:39
>>>> #9  16_81704b4 in RTException.InvokeBackstop (a=RECORD exception =
>>>> 16_8208020; arg = 16_c; module = 16_820a680; line = 690; pc = NIL;
>>>> info0 = NIL; info1 = NIL; un_except = 16_8208020;
>>>>     un_arg = NIL;  END, raises=FALSE) at RTException.m3:25
>>>> #10 16_8179ca7 in RTException.Raise (act=RECORD exception =
>>>> 16_8208020; arg = 16_c; module = 16_820a680; line = 690; pc = NIL;
>>>> info0 = NIL; info1 = NIL; un_except = 16_8208020; un_arg = NIL;
>>>>      END) at RTExFrame.m3:29
>>>> #11 16_81705f0 in RTException.DefaultBackstop (a=RECORD exception =
>>>> 16_8208020; arg = 16_c; module = 16_820a680; line = 690; pc = NIL;
>>>> info0 = NIL; info1 = NIL; un_except = 16_8208020;
>>>>     un_arg = NIL;  END, raises=FALSE) at RTException.m3:47
>>>> #12 16_81704b4 in RTException.InvokeBackstop (a=RECORD exception =
>>>> 16_8208020; arg = 16_c; module = 16_820a680; line = 690; pc = NIL;
>>>> info0 = NIL; info1 = NIL; un_except = 16_8208020;
>>>>     un_arg = NIL;  END, raises=FALSE) at RTException.m3:25
>>>> #13 16_8179ca7 in RTException.Raise (act=RECORD exception =
>>>> 16_8208020; arg = 16_c; module = 16_820a680; line = 690; pc = NIL;
>>>> info0 = NIL; info1 = NIL; un_except = 16_8208020; un_arg = NIL;
>>>>      END) at RTExFrame.m3:29
>>>> #14 16_8160bba in RTHooks.ReportFault (module=16_820a680,
>>>> info=22080) at RTHooks.m3:110
>>>> #15 16_816e251 in _m3_fault (arg=22080) at RTCollector.m3:0
>>>> #16 16_81649b7 in RTCollector.CollectorOn () at RTCollector.m3:690
>>>> #17 16_816b595 in RTHooks.CheckLoadTracedRef (ref=16_681b3300) at
>>>> RTCollector.m3:2296
>>>> #18 16_814400c in Stdio.ShutDown () at Stdio.m3:43
>>>> #19 16_8171f51 in RTProcess.InvokeExitors () at RTProcess.m3:40
>>>> #20 16_8171fc5 in RTProcess.Crash (msg=NIL) at RTProcess.m3:61
>>>> #21 16_8170428 in RTError.EndError (crash=TRUE) at RTError.m3:115
>>> #22 16_8170169 in RTError.MsgS (file=16_820a508, line=690,
>>>> msgA=16_820bfe8, msgB=16_8208170, msgC=16_820bfe8) at RTError.m3:40
>>>> #23 16_81707ec in RTException.Crash (a=RECORD exception =
>>>> 16_8208020; arg = 16_c; module = 16_820a680; line = 690; pc = NIL;
>>>> info0 = NIL; info1 = NIL; un_except = 16_8208020; un_arg = NIL;
>>>>      END, raises=FALSE, rte=16_8208020) at RTException.m3:79
>>>> #24 16_8170550 in RTException.DefaultBackstop (a=RECORD exception =
>>>> 16_8208020; arg = 16_c; module = 16_820a680; line = 690; pc = NIL;
>>>> info0 = NIL; info1 = NIL; un_except = 16_8208020;
>>>>     un_arg = NIL;  END, raises=FALSE) at RTException.m3:39
>>>> #25 16_81704b4 in RTException.InvokeBackstop (a=RECORD exception =
>>>> 16_8208020; arg = 16_c; module = 16_820a680; line = 690; pc = NIL;
>>>> info0 = NIL; info1 = NIL; un_except = 16_8208020;
>>>>     un_arg = NIL;  END, raises=FALSE) at RTException.m3:25
>>>> #26 16_8179ca7 in RTException.Raise (act=RECORD exception =
>>>> 16_8208020; arg = 16_c; module = 16_820a680; line = 690; pc = NIL;
>>>> info0 = NIL; info1 = NIL; un_except = 16_8208020; un_arg = NIL;
>>>>      END) at RTExFrame.m3:29
>>>> #27 16_81705f0 in RTException.DefaultBackstop (a=RECORD exception =
>>>> 16_8208020; arg = 16_c; module = 16_820a680; line = 690; pc = NIL;
>>>> info0 = NIL; info1 = NIL; un_except = 16_8208020;
>>>>     un_arg = NIL;  END, raises=FALSE) at RTException.m3:47
>>>> #28 16_81704b4 in RTException.InvokeBackstop (a=RECORD exception =
>>>> 16_8208020; arg = 16_c; module = 16_820a680; line = 690; pc = NIL;
>>>> info0 = NIL; info1 = NIL; un_except = 16_8208020;
>>>>     un_arg = NIL;  END, raises=FALSE) at RTException.m3:25
>>>> #29 16_8179ca7 in RTException.Raise (act=RECORD exception =
>>>> 16_8208020; arg = 16_c; module = 16_820a680; line = 690; pc = NIL;
>>>> info0 = NIL; info1 = NIL; un_except = 16_8208020; un_arg = NIL;
>>>>      END) at RTExFrame.m3:29
>>>> #30 16_8160bba in RTHooks.ReportFault (module=16_820a680,
>>>> info=22080) at RTHooks.m3:110
>>>> #31 16_816e251 in _m3_fault (arg=22080) at RTCollector.m3:0
>>>> #32 16_81649b7 in RTCollector.CollectorOn () at RTCollector.m3:690
>>>> #33 16_816b595 in RTHooks.CheckLoadTracedRef (ref=16_681b3004) at
>>>> RTCollector.m3:2296
>>>> #34 16_817c41e in ThreadF.ProcessStacks (p=16_816415e) at
>>>> ThreadPosix.m3:522
>>>> #35 16_8165213 in RTCollector.CollectSomeInStateZero () at
>>>> RTCollector.m3:845
>>>> #36 16_8164d2c in RTCollector.CollectSome () at RTCollector.m3:741
>>>> #37 16_816487b in RTCollector.CollectEnough () at RTCollector.m3:659
>>>> #38 16_81673cd in RTHeapRep.AllocTraced (def=16_81f8f38,
>>>> dataSize=8200, dataAlignment=4, initProc=16_bfbfe0f4, pool=RECORD
>>>> desc = RECORD space = Current; generation = Younger; pure = FALSE;
>>>>     note = Allocated; gray = FALSE; clean = FALSE; continued =
>>>> FALSE; link = 0;  END; notAfter = {Copied}; page = 0; stack = 0;
>>>> next = NIL; limit = NIL; busy = FALSE;  END)
>>>>     at RTCollector.m3:1417
>>>> #39 16_816218e in RTAllocator.GetOpenArray (def=16_81f8f38, s=
>>>> [2048]) at RTAllocator.m3:308
>>>> #40 16_8161737 in RTHooks.AllocateOpenArray (defn=16_81f8f38, s=
>>>> [2048]) at RTAllocator.m3:156
>>>> #41 16_8129d56 in M3ID_M3 (mode=1) at M3ID.m3:40
>>>> #42 16_816f802 in RTLinker.RunMainBody (m=16_81f8cc0) at
>>>> RTLinker.m3:399
>>>> #43 16_816f6ca in RTLinker.RunMainBody (m=16_81c0880) at
>>>> RTLinker.m3:379
>>>> #44 16_816f6ca in RTLinker.RunMainBody (m=16_81c06a0) at
>>>> RTLinker.m3:379
>>>> #45 16_816f6ca in RTLinker.RunMainBody (m=16_81bc920) at
>>>> RTLinker.m3:379
>>>> #46 16_816ed2d in RTLinker.AddUnitI (m=16_81bc920) at  
>>>> RTLinker.m3:113
>>>> #47 16_816edb4 in RTLinker.AddUnit (b=16_8065527) at RTLinker.m3:122
>>>> module "_m3main": missing debug info for global data
>>>>
>>>> (gdb) up 32
>>>> #32 16_81649b7 in RTCollector.CollectorOn () at RTCollector.m3:690
>>>> RTCollector.m3:690: No such file or directory.
>>>> (gdb)
>>>> Suspended
>>>> (360)rover:~/cm3-cvs/fresh/cm3/m3-libs/m3core>find ../.. -name
>>>> RTCollector.m3
>>>> ../../m3-libs/m3core/src/runtime/common/RTCollector.m3
>>>> (361)rover:~/cm3-cvs/fresh/cm3/m3-libs/m3core>fg
>>>> m3gdb /usr/local/cm3/pkg/cm3/FreeBSD4/cm3
>>>> (gdb) dir ../../m3-libs/m3core/src/runtime/common/
>>>> Source directories searched: /big/home2/mika/2/cm3-cvs/fresh/cm3/m3-
>>>> libs/m3core/../../m3-libs/m3core/src/runtime/common:$cdir:$cwd
>>>> (gdb) list
>>>> 685     VAR timeOnEntry, timeOnExit: Time.T;     (* time of
>>>> collector entry/exit *)
>>>> 686
>>>> 687     PROCEDURE CollectorOn () =
>>>> 688       (* LL >= RTOS.LockHeap *)
>>>> 689       BEGIN
>>>> 690         <* ASSERT NOT collectorOn *>
>>>> 691         collectorOn := TRUE;
>>>> 692
>>>> 693         IF incremental AND NOT RTLinker.incremental
>>>> 694           OR generational AND NOT RTLinker.generational THEN
>>>> (gdb) print collectorOn
>>>> can't find identifier: collectorOn
>>>> (gdb) up
>>>> #33 16_816b595 in RTHooks.CheckLoadTracedRef (ref=16_681b3004) at
>>>> RTCollector.m3:2296
>>>> 2296          CollectorOn();
>>>> (gdb) print collectorOn
>>>> can't find identifier: collectorOn
>>>> (gdb) print ref
>>>> Segmentation fault
>>>>
>>>>
>>>>
>>>>
>>>>>
>>>>> Assuming this succeeded then we can be pretty sure /usr/local/cm3/
>>>>> pkg/
>>>>> cm3/TARGET/cm3 is good, so we can make it our default compiler by
>>>>> replacing the original /usr/local/cm3/bin/cm3:
>>>>>
>>>>> cp $CM3 /usr/local/cm3/bin/cm3
>>>>>
>>>>> On Jun 23, 2007, at 2:38 PM, Mika Nystrom wrote:
>>>>>
>>>>>> Ok, I'm sorry if I seem a bit dimwitted in the morning like this,
>>>>>> but how exactly does one get started?  I wish there were a file
>>>>>> called
>>>>>> "GETTING_STARTED" or something like that in scripts...
>>>>>>
>>>>>> My Mac is very slow so I switched to my FreeBSD/i386 system
>>>>>> (which has
>>>>>> PM3 happily installed on it) and tried to install CM3 from  
>>>>>> scratch.
>>>>>> Here are the exact commands I typed.
>>>>>>
>>>>>>
>>>>>> rm -rf /usr/local/cm3/*
>>>>>>
>>>>>> cd ~/cm3-cvs
>>>>>> mkdir boot
>>>>>> cd boot
>>>>>> tar xzvf ../cm3-min-POSIX-FreeBSD4-d5.3.1-2005-10-05.tgz
>>>>>> ./cminstall
>>>>>>
>>>>>> # now I seem to have some kind of cm3 installed, /usr/local/cm3/ 
>>>>>> bin/
>>>>> cm3
>>>>>>
>>>>>> cd cm3   # location of my CM3 checkout
>>>>>> cvs update -d .
>>>>>>
>>>>>> cd scripts
>>>>>> ./boot-cm3-with-m3.sh realclean
>>>>>> ./do-cm3-std.sh realclean
>>>>>>
>>>>>> ./upgrade.sh                      # fails here, libm3 not compiled
>>>>>> ./boot-cm3-with-m3.sh build       # builds cm3, but fails on
>>>>>> cminstall, patternmatching not built
>>>>>>
>>>>>> ./do-cm3-std.sh build             # OK
>>>>>> ./do-cm3-std.sh buildship         # OK
>>>>>>
>>>>>> ./boot-cm3-with-m3.sh realclean   # start over
>>>>>> ./boot-cm3-with-m3.sh build       # OK
>>>>>> ./boot-cm3-with-m3.sh buildship   # OK
>>>>>>
>>>>>> ./do-cm3-std.sh realclean         # OK
>>>>>> ./do-cm3-std.sh build             # dies miserably... maybe the
>>>>>> compiler can't handle the new libraries?
>>>>>>
>>>>>> ./install-cm3-compiler.sh upgrade # OK, new cm3 binary installed
>>>>>>
>>>>>> After all that, "game over."  I have a cm3 that segfaults.
>>>>>>
>>>>>> Text.i3: In function 'Text_I3':
>>>>>> Text.i3:81: internal compiler error: Segmentation fault
>>>>>> Please submit a full bug report,
>>>>>> with preprocessed source if appropriate.
>>>>>> See <URL:http://gcc.gnu.org/bugs.html> for instructions.
>>>>>> compilation failed => not building library "libm3core.a"
>>>>>> Fatal Error: package build failed
>>>>>>  *** execution of  failed ***
>>>>>>
>>>>>> I can't seem to get either m3gdb or gdb to say anything reasonable
>>>>>> either.  ktrace shows nothing out of the ordinary.
>>>>>>
>>>>>> -----
>>>>>>
>>>>>> Meanwhile, my Mac got through "do-cm3-std.sh realclean" and
>>>>>> "do-cm3-std.sh buildship" but my compiles are still dying on the
>>>>>> same assertion tickled by ktok.  On that machine I have  
>>>>>> INSTALLROOT
>>>>>> set to ~/cm3, but hopefully that has nothing to do with it...
>>>>>>
>>>>>> -----
>>>>>>
>>>>>> Does do-cm3-std.sh realclean clean EVERYTHING?  If so my Mac  
>>>>>> should
>>>>>> really have a fresh setup.  The FreeBSD, I am not sure, maybe the
>>>>>> old binary version just doesn't work right?  Of course I could try
>>>>>> bootstrapping with PM3 as well... but really, there's an  
>>>>>> "approved"
>>>>>> process to get from a blank system, no?
>>>>>>
>>>>>>       Mika
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Tony Hosking writes:
>>>>>>> That sounds like you forgot to execute "do-cm3-std.sh realclean"
>>>>>>> before initiating the build.  These sorts of errors sometimes  
>>>>>>> arise
>>>>>>> if there are old build directories lying around.
>>>>>>>
>>>>>>>
>>>>>>> On Jun 23, 2007, at 3:34 AM, Mika Nystrom wrote:
>>>>>>>
>>>>>>>> Hello everyone,
>>>>>>>>
>>>>>>>> I am in the process of trying to consolidate build systems for a
>>>>>>>> few software packages I am maintaining.  Currently, I am  
>>>>>>>> using an
>>>>>>>> old PM3 on FreeBSD4, an ancient PM3 (from Klagenfurt?) for  
>>>>>>>> Windows
>>>>>>>> (NT386GNU), and trying to get the latest CM3 from cvs up and
>>>>>>>> compiling
>>>>>>>> things on PPC_DARWIN.  Ideally, I'd like to standardize  
>>>>>>>> everything
>>>>>>>> on the new PM3---mainly so that I can use pickles (and Network
>>>>>>>> Objects) across all three systems.  I'd also like to add  
>>>>>>>> Linux to
>>>>>>>> the mix.
>>>>>>>>
>>>>>>>> It's natural for me to start with CM3 on Darwin, as there's no
>>>>>>>> alternative.  But I am getting some assertions failing.
>>>>>>>> Everything
>>>>>>>> in the CM3 distribution compiles fine, and I believe I have
>>>>>>>> compiled
>>>>>>>> the libraries a few times (that is, including with themselves),
>>>>>>>> and
>>>>>>>> updated the compiler, too (using boot-cm3-with-m3.sh).  I  
>>>>>>>> just cvs
>>>>>>>> updated tonight.
>>>>>>>>
>>>>>>>> Here's what I'm running into:
>>>>>>>>
>>>>>>>> /Users/mika/t/parserlib/ktok/PPC_DARWIN/tok ../src/CHP.t -o
>>>>>>>> CHPTok.i3
>>>>>>>>
>>>>>>>>
>>>>>>>> ***
>>>>>>>> *** runtime error:
>>>>>>>> ***    <*ASSERT*> failed.
>>>>>>>> ***    file "../src/runtime/common/RTCollector.m3", line 2314
>>>>>>>> ***
>>>>>>>>
>>>>>>>> Abort
>>>>>>>>
>>>>>>>> Also:
>>>>>>>>
>>>>>>>> /Users/mika/t/parserlib/ktok/PPC_DARWIN/tok ../src/PRS.t -o
>>>>>>>> PRSTok.i3
>>>>>>>> Illegal instruction
>>>>>>>>
>>>>>>>> As you can see, these things are coming from the
>>>>>>>> caltech_parser.  I
>>>>>>> am using
>>>>>>>> our local version, but I don't think it is very different from
>>>>>>>> what
>>>>>>>> is in the
>>>>>>>> CM3 tree.
>>>>>>>>
>>>>>>>>
>>>>>>>> Examining the first error (the failed assertion) more closely,
>>>>>>>> I see
>>>>>>>> the following:
>>>>>>>>
>>>>>>>> (gdb) list
>>>>>>>> 108         wr := FileWr.Open(Pathname.ReplaceExt(tp.out,  
>>>>>>>> "m3"));
>>>>>>>> 109       EXCEPT OSError.E =>
>>>>>>>> 110         Debug.Error("Cannot open tok implementation output
>>>>>>>> file: " &
>>>>>>>> 111           Pathname.ReplaceExt(tp.out, "m3"));
>>>>>>>> 112       END;
>>>>>>>> 113       Wr.PutText(wr, subs.apply(Bundle.Get(Form,
>>>>>>>> "tokform.m3")));
>>>>>>>> 114       Wr.Close(wr);
>>>>>>>> 115     END Main.
>>>>>>>> (gdb) where
>>>>>>>> #0  0x9004308c in kill ()
>>>>>>>> #1  0x9009fb3c in abort ()
>>>>>>>> #2  0x00096f50 in RTOS__Crash () at RTOS.m3:20
>>>>>>>> #3  0x0005bd40 in RTProcess__Crash (M3_Bd56fi_msg=0x0) at
>>>>>>>> RTProcess.m3:65
>>>>>>>> #4  0x0008e4e0 in RTError__EndError (M3_AicXUJ_crash=1  
>>>>>>>> '\001') at
>>>>>>>> RTError.m3:115
>>>>>>>> #5  0x0008e08c in RTError__MsgS (M3_AJWxb1_file=0xc63d8,
>>>>>>>> M3_AcxOUs_line=2314, M3_Bd56fi_msgA=0xca3d0,
>>>>>>>> M3_Bd56fi_msgB=0xcbe90, M3_Bd56fi_msgC=0xca3d0) at RTError.m3:40
>>>>>>>> #6  0x0008eb88 in RTException__Crash (M3_Cblw37_a=0xbfffee00,
>>>>>>>> M3_AicXUJ_raises=0 '\0', M3_AJWxb1_rte=0xcb538) at
>>>>>>>> RTException.m3:79
>>>>>>>> #7  0x0008e74c in RTException__DefaultBackstop
>>>>>>>> (M3_Cblw37_a=0xbfffee00, M3_AicXUJ_raises=0 '\0') at
>>>>>>>> RTException.m3:39
>>>>>>>> #8  0x0008e614 in RTException__InvokeBackstop
>>>>>>>> (M3_Cblw37_a=0xbfffee00, M3_AicXUJ_raises=0 '\0') at
>>>>>>>> RTException.m3:25
>>>>>>>> #9  0x00095d04 in RTException__Raise  
>>>>>>>> (M3_Cblw37_act=0xbfffee00) at
>>>>>>>> RTExFrame.m3:29
>>>>>>>> #10 0x0008e840 in RTException__DefaultBackstop
>>>>>>>> (M3_Cblw37_a=0xbfffee00, M3_AicXUJ_raises=0 '\0') at
>>>>>>>> RTException.m3:47
>>>>>>>> #11 0x0008e614 in RTException__InvokeBackstop
>>>>>>>> (M3_Cblw37_a=0xbfffee00, M3_AicXUJ_raises=0 '\0') at
>>>>>>>> RTException.m3:25
>>>>>>>> #12 0x00095d04 in RTException__Raise  
>>>>>>>> (M3_Cblw37_act=0xbfffee00) at
>>>>>>>> RTExFrame.m3:29
>>>>>>>> #13 0x00079740 in RTHooks__ReportFault  
>>>>>>>> (M3_AJWxb1_module=0xb3eb8,
>>>>>>>> M3_AcxOUs_info=74048) at RTHooks.m3:110
>>>>>>>> #14 0x0006ff4c in _m3_fault (M3_AcxOUs_arg=74048)
>>>>>>>> #15 0x0006bcf4 in RTHooks__CheckStoreTraced
>>>>>>>> (M3_Af40ku_ref=0xb2415c) at RTCollector.m3:2314
>>>>>>>> #16 0x000700e4 in ThreadPThread__InnerLockMutex
>>>>>>>> (M3_AYIbX3_m=0xb2415c, M3_BXP32l_self=0xb24014) at
>>>>>>>> ThreadPThread.m3:126
>>>>>>>> #17 0x000704d8 in ThreadPThread__LockMutex  
>>>>>>>> (M3_AYIbX3_m=0xb2415c)
>>>>>>>> at ThreadPThread.m3:153
>>>>>>>> #18 0x00019b24 in Wr__PutText (M3_BxxOH1_wr=0xb2415c,
>>>>>>>> M3_Bd56fi_t=0xb44d5c) at Wr.m3:93
>>>>>>>> #19 0x00003f74 in Main_M3 (M3_AcxOUs_mode=1) at Main.m3:113
>>>>>>>> #20 0x0005b1c4 in RTLinker__RunMainBody (M3_DjPxE3_m=0xad190) at
>>>>>>>> RTLinker.m3:399
>>>>>>>> #21 0x00059f88 in RTLinker__AddUnitI (M3_DjPxE3_m=0xad190) at
>>>>>>>> RTLinker.m3:113
>>>>>>>> #22 0x0005a084 in RTLinker__AddUnit (M3_DjPxE5_b=0x3600) at
>>>>>>>> RTLinker.m3:122
>>>>>>>> #23 0x00001fac in main (argc=4, argv=0xbffffb24,  
>>>>>>>> envp=0xbffffb38)
>>>>>>>> at _m3main.mc:4
>>>>>>>> (gdb)
>>>>>>>>
>>>>>>>> The second error:
>>>>>>>>
>>>>>>>> Program received signal EXC_BAD_INSTRUCTION, Illegal  
>>>>>>>> instruction/
>>>>>>>> operand.
>>>>>>>> 0x00b111ac in ?? ()
>>>>>>>> (gdb) where
>>>>>>>> #0  0x00b111ac in ?? ()
>>>>>>>> #1  0x0001214c in TextSubs__Apply (M3_CN69dV_self=0xb26450,
>>>>>>>> M3_Bd56fi_src=0xb21cec) at TextSubs.m3:63
>>>>>>>> #2  0x0005b1c4 in RTLinker__RunMainBody (M3_DjPxE3_m=0xad190) at
>>>>>>>> RTLinker.m3:399
>>>>>>>> #3  0x00059f88 in RTLinker__AddUnitI (M3_DjPxE3_m=0xad190) at
>>>>>>>> RTLinker.m3:113
>>>>>>>> #4  0x0005a084 in RTLinker__AddUnit (M3_DjPxE5_b=0x3600) at
>>>>>>>> RTLinker.m3:122
>>>>>>>> #5  0x00001fac in main (argc=4, argv=0xbffffb24,  
>>>>>>>> envp=0xbffffb38)
>>>>>>>> at _m3main.mc:4
>>>>>>>> (gdb) list
>>>>>>>> 58        BEGIN
>>>>>>>> 59          WHILE pos < textLen DO
>>>>>>>> 60            c := Text.GetChar(src, pos);
>>>>>>>> 61            IF c IN self.starts THEN
>>>>>>>> 62              (* S("analysing: " & Text.Sub(src, pos),
>>>>>>>> DebugLevel); *)
>>>>>>>> 63              iter := self.tbl.iterateOrdered();
>>>>>>>> 64              ind := pos;
>>>>>>>> 65              original := "";
>>>>>>>> 66              REPEAT
>>>>>>>> 67                INC(ind);
>>>>>>>> (gdb)
>>>>>>>>
>>>>>>>> Any ideas what to look at?
>>>>>>>>
>>>>>>>> I don't know if this is relevant:
>>>>>>>>
>>>>>>>> [lapdog:~/t/cit_parse/PPC_DARWIN] mika% uname -a
>>>>>>>> Darwin lapdog.local 7.9.0 Darwin Kernel Version 7.9.0: Wed  
>>>>>>>> Mar 30
>>>>>>>> 20:11:17 PST 2005; root:xnu/xnu-517.12.7.obj~1/RELEASE_PPC   
>>>>>>>> Power
>>>>>>>> Macintosh powerpc
>>>>>>>> [lapdog:~/t/cit_parse/PPC_DARWIN] mika% gcc -v
>>>>>>>> Reading specs from /usr/libexec/gcc/darwin/ppc/3.3/specs
>>>>>>>> Thread model: posix
>>>>>>>> gcc version 3.3 20030304 (Apple Computer, Inc. build 1666)
>>>>>>>>
>>>>>>>>      Mika
>>>>>>>>
>>>>>>>> P.S. Am I correct in assuming that I can get CM3 to build on
>>>>>>>> Windows?
>>>>>>>> I could switch to CM3 on Unix any time, of course, but I've  
>>>>>>>> never
>>>>>>>> had luck with it on Windows, which is why I am using the ancient
>>>>>>>> Klagenfurt PM3, which comes on 40-odd "floppies" and a .EXE that
>>>>>>>> unpacks them into C: (and installation instructions only in
>>>>>>>> German).
>>>>>>>> If CM3 doesn't work on Windows, I am essentially wasting my  
>>>>>>>> time,
>>>>>>>> as the current project I am working on absolutely requires that
>>>>>>>> the
>>>>>>>> software run on Windows 2003 Server (yes, it sucks, but what can
>>>>>>>> you do?)  The very old PM3 at least kind of hobbles along on  
>>>>>>>> this
>>>>>>>> platform---actually, better than that; it does Trestle natively
>>>>>>>> under Windows (no X required), at least on SOME Windows  
>>>>>>>> machines.
>>>>>>>>
>>>>>>>> P.P.S. Sorry for all the postscripts, but is it true that the
>>>>>>>> build system has been changed so that building with overrides
>>>>>>>> (cm3 -x)
>>>>>>>> requires having the compiler sources available?  It didn't  
>>>>>>>> use to
>>>>>>>> be that way, but I can't get Network Objects to work with
>>>>>>>> overrides
>>>>>>>> now unless I have the sources available...  It's a bit of a pain
>>>>>>>> because it means that every user has to have the compiler  
>>>>>>>> sources,
>>>>>>>> or else ship everything, or was that not the intention?



More information about the M3devel mailing list