[M3devel] strange errors...

Mika Nystrom mika at async.caltech.edu
Mon Jul 2 12:35:48 CEST 2007


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