[M3devel] [M3commit] CVS Update: cm3

Mika Nystrom mika at async.caltech.edu
Fri Jan 14 15:21:05 CET 2011


Tony,

Yes on closer reflection I agree with your statement that it isn't
surprising it runs slowly.  What I have realized is that the simplicity of
the user-threads implementation makes that implementation much more fair
than the pthreads implementation appears to be.  (Which is of course not
a real problem but something that shows up in synthetic applications like
the thread tester.)  I added code to print the youngest and median thread
in each of the three categories and I'd agree that what I see is about
what you'd expect.  The threads also have very different workloads, so under
pthreads it's not surprising that some of them make progress faster
than others.

Here's the typical output now (99 threads, pthreads):

[HAL:tests/thread/src] mika% ../I386_DARWIN/threadtest 
Writing file...done
Creating reader threads...done
Creating forker threads...done
Creating allocator threads...done
running...printing oldest/median age/newest
laziest thread is 1295014272/0/0 seconds behind (read 1295014272/1295014272/0 fork 0/0/0 alloc 0/0/0)
laziest thread is 1295014282/0/0 seconds behind (read 1295014282/7/0 fork 0/0/0 alloc 0/0/0)
laziest thread is 1295014292/0/0 seconds behind (read 1295014292/6/0 fork 0/0/0 alloc 0/0/0)
laziest thread is 35/1/0 seconds behind (read 35/9/1 fork 1/1/1 alloc 1/1/0)
...

With PM3 user threads, the switching is probably just round-robin, and you get:

(110)rover:~/cm3-writable/cm3/m3-libs/m3core/tests/thread/src>../FreeBSD4/threadtest 
Writing file...done
Creating reader threads...done
Creating forker threads...done
Creating allocator threads...done
running...printing oldest/median age/newest
laziest thread is 9/4/0 seconds behind (read 9/7/4 fork 4/4/4 alloc 4/2/0)
laziest thread is 8/4/0 seconds behind (read 8/7/4 fork 4/4/4 alloc 4/2/0)
laziest thread is 8/4/0 seconds behind (read 8/6/4 fork 4/4/4 alloc 4/2/0)
...

I only rarely see the assertion failure from the C code.  I have not been able
to reproduce it with @M3noincremental (yet).  However I have seen a "more serious"
assertion failure:

[HAL:tests/thread/src] mika% ../I386_DARWIN/threadtest 
Writing file...done
Creating reader threads...done
Creating forker threads...done
Creating allocator threads...done
running...printing oldest/median age/newest


***
*** runtime error:
***    Thread client error: 22
***    file "../src/thread/PTHREAD/ThreadPThread.m3", line 120
***



***
*** runtime error:
***    An array subscript was out of range.
***    file "../src/runtime/common/RTCollector.m3", line 418
***

Abort

This happened with n = 9 threads.

I tried it again in the debugger and only got the assertion for RTCollector.

Here's the traceback for the crashing thread:

Thread 10 (process 2811):
#0  0x971784fe in __semwait_signal_nocancel ()
#1  0x971783e2 in nanosleep$NOCANCEL$UNIX2003 ()
#2  0x971f32aa in usleep$NOCANCEL$UNIX2003 ()
#3  0x972149c8 in abort ()
#4  0x000457a4 in Cstdlib__abort () at ../src/C/Common/CstdlibC.c:21
#5  0x0003de10 in RTOS__Crash () at ../src/runtime/POSIX/RTOS.m3:20
#6  0x00037ea4 in RTProcess__Crash (msg=0x0) at ../src/runtime/common/RTProcess.m3:65
#7  0x000362ed in RTError__EndError (crash=1 '\001') at ../src/runtime/common/RTError.m3:118
#8  0x00036005 in RTError__MsgS (file=0x6baa9, line=418, msgA=0x6c748, msgB=0x69890, msgC=0x6c748) at ../src/runtime/common/RTError.m3:40
#9  0x000366da in RTException__Crash (a=0xb0490a64, raises=0 '\0', rte=0x69740) at ../src/runtime/common/RTException.m3:79
#10 0x00036432 in RTException__DefaultBackstop (a=0xb0490a64, raises=0 '\0') at ../src/runtime/common/RTException.m3:39
#11 0x0003638e in RTException__InvokeBackstop (a=0xb0490a64, raises=0 '\0') at ../src/runtime/common/RTException.m3:25
#12 0x0003e5e5 in RTException__Raise (act=0xb0490a64) at ../src/runtime/ex_frame/RTExFrame.m3:85
#13 0x000364c3 in RTException__DefaultBackstop (a=0xb0490a64, raises=0 '\0') at ../src/runtime/common/RTException.m3:47
#14 0x0003638e in RTException__InvokeBackstop (a=0xb0490a64, raises=0 '\0') at ../src/runtime/common/RTException.m3:25
#15 0x0003e5e5 in RTException__Raise (act=0xb0490a64) at ../src/runtime/ex_frame/RTExFrame.m3:85
#16 0x0002655a in RTHooks__ReportFault (module=0x7b200, info=13378) at ../src/runtime/common/RTHooks.m3:111
#17 0x00033f2f in _m3_fault (arg=13378) at ../src/runtime/common/RTCollector.m3:393
#18 0x0002afb0 in RTCollector__Move (self=0x213000c, cp=0x2030014) at ../src/runtime/common/RTCollector.m3:418
#19 0x0002987f in RTHeapMap__Walk (x=0x2030014, pc=0x66068, v=0x213000c) at ../src/runtime/common/RTHeapMap.m3:202
#20 0x0002902a in RTHeapMap__DoWalkRef (t=0x782f4, a=0x2030014, v=0x213000c) at ../src/runtime/common/RTHeapMap.m3:62
#21 0x00029001 in RTHeapMap__DoWalkRef (t=0x786f4, a=0x203000c, v=0x213000c) at ../src/runtime/common/RTHeapMap.m3:57
#22 0x00029001 in RTHeapMap__DoWalkRef (t=0x78808, a=0x203000c, v=0x213000c) at ../src/runtime/common/RTHeapMap.m3:57
#23 0x00028fb4 in RTHeapMap__WalkRef (h=0x2030008, v=0x213000c) at ../src/runtime/common/RTHeapMap.m3:47
#24 0x0002d3ab in RTCollector__CleanBetween (h=0x2030008, he=0x2040000, clean=0 '\0') at ../src/runtime/common/RTCollector.m3:1091
#25 0x0002d1e2 in RTCollector__CleanPage (page=0x2030000) at ../src/runtime/common/RTCollector.m3:1064
#26 0x0002c8f9 in RTCollector__CollectSomeInStateZero () at ../src/runtime/common/RTCollector.m3:885
#27 0x0002c012 in RTCollector__CollectSome () at ../src/runtime/common/RTCollector.m3:720
#28 0x0002bc54 in RTHeapRep__CollectEnough () at ../src/runtime/common/RTCollector.m3:654
#29 0x00027fd9 in RTAllocator__AllocTraced (dataSize=4108, dataAlignment=4, thread=0xa04794) at ../src/runtime/common/RTAllocator.m3:365
#30 0x00027a2f in RTAllocator__GetOpenArray (def=0x7a0b0, s=0xb0490e90) at ../src/runtime/common/RTAllocator.m3:294
#31 0x00026eba in RTHooks__AllocateOpenArray (defn=0x7a0b0, s=0xb0490e90) at ../src/runtime/common/RTAllocator.m3:143
#32 0x00004001 in Main__AApply (cl=0xb054bc) at ../src/Main.m3:130
#33 0x0004145c in ThreadPThread__RunThread (me=0xa04750) at ../src/thread/PTHREAD/ThreadPThread.m3:450
#34 0x0004118b in ThreadPThread__ThreadBase (param=0xa04750) at ../src/thread/PTHREAD/ThreadPThread.m3:422
#35 0x9713885d in _pthread_start ()
#36 0x971386e2 in thread_start ()


Complete traceback attached below.  Again, I modified the program from
tests/thread/src/Main.m3 to read "nOver3 = 3" to get this behavior.

    Mika




Tony Hosking writes:
>I'm not surprised it runs slowly.  There is a lot of contention for =
>allocation of pages to satisfy all the allocation requests.  Plus GC I =
>expect.  Can you try running with @M3noincremental and see how it goes?  =
>Weird about the assertion failure.  I think we should be checking for =
>EBUSY.
>
>On Jan 13, 2011, at 12:53 PM, Mika Nystrom wrote:
>
>> Tony, no, the test program=20
>>=20
>> (1) printed the assertion failure.
>>=20
>> (2) did NOT deadlock
>>=20
>> (3) ran very very slowly (at least some threads did)
>>=20
>> (4) kept running after printing the assertion failure and exited =
>normally
>>=20
>> The actual application may have behaved differently but there seems to =
>be
>> enough here to constitute one or two bugs...?
>>=20
>> My test program seems very effective, by the way.  It has had =
>objections
>> to every version you've checked in so far... :-)
>>=20
>>    Mika
>>=20


Thread 10 (process 2811):
#0  0x971784fe in __semwait_signal_nocancel ()
#1  0x971783e2 in nanosleep$NOCANCEL$UNIX2003 ()
#2  0x971f32aa in usleep$NOCANCEL$UNIX2003 ()
#3  0x972149c8 in abort ()
#4  0x000457a4 in Cstdlib__abort () at ../src/C/Common/CstdlibC.c:21
#5  0x0003de10 in RTOS__Crash () at ../src/runtime/POSIX/RTOS.m3:20
#6  0x00037ea4 in RTProcess__Crash (msg=0x0) at ../src/runtime/common/RTProcess.m3:65
#7  0x000362ed in RTError__EndError (crash=1 '\001') at ../src/runtime/common/RTError.m3:118
#8  0x00036005 in RTError__MsgS (file=0x6baa9, line=418, msgA=0x6c748, msgB=0x69890, msgC=0x6c748) at ../src/runtime/common/RTError.m3:40
#9  0x000366da in RTException__Crash (a=0xb0490a64, raises=0 '\0', rte=0x69740) at ../src/runtime/common/RTException.m3:79
#10 0x00036432 in RTException__DefaultBackstop (a=0xb0490a64, raises=0 '\0') at ../src/runtime/common/RTException.m3:39
#11 0x0003638e in RTException__InvokeBackstop (a=0xb0490a64, raises=0 '\0') at ../src/runtime/common/RTException.m3:25
#12 0x0003e5e5 in RTException__Raise (act=0xb0490a64) at ../src/runtime/ex_frame/RTExFrame.m3:85
#13 0x000364c3 in RTException__DefaultBackstop (a=0xb0490a64, raises=0 '\0') at ../src/runtime/common/RTException.m3:47
#14 0x0003638e in RTException__InvokeBackstop (a=0xb0490a64, raises=0 '\0') at ../src/runtime/common/RTException.m3:25
#15 0x0003e5e5 in RTException__Raise (act=0xb0490a64) at ../src/runtime/ex_frame/RTExFrame.m3:85
#16 0x0002655a in RTHooks__ReportFault (module=0x7b200, info=13378) at ../src/runtime/common/RTHooks.m3:111
#17 0x00033f2f in _m3_fault (arg=13378) at ../src/runtime/common/RTCollector.m3:393
#18 0x0002afb0 in RTCollector__Move (self=0x213000c, cp=0x2030014) at ../src/runtime/common/RTCollector.m3:418
#19 0x0002987f in RTHeapMap__Walk (x=0x2030014, pc=0x66068, v=0x213000c) at ../src/runtime/common/RTHeapMap.m3:202
#20 0x0002902a in RTHeapMap__DoWalkRef (t=0x782f4, a=0x2030014, v=0x213000c) at ../src/runtime/common/RTHeapMap.m3:62
#21 0x00029001 in RTHeapMap__DoWalkRef (t=0x786f4, a=0x203000c, v=0x213000c) at ../src/runtime/common/RTHeapMap.m3:57
#22 0x00029001 in RTHeapMap__DoWalkRef (t=0x78808, a=0x203000c, v=0x213000c) at ../src/runtime/common/RTHeapMap.m3:57
#23 0x00028fb4 in RTHeapMap__WalkRef (h=0x2030008, v=0x213000c) at ../src/runtime/common/RTHeapMap.m3:47
#24 0x0002d3ab in RTCollector__CleanBetween (h=0x2030008, he=0x2040000, clean=0 '\0') at ../src/runtime/common/RTCollector.m3:1091
#25 0x0002d1e2 in RTCollector__CleanPage (page=0x2030000) at ../src/runtime/common/RTCollector.m3:1064
#26 0x0002c8f9 in RTCollector__CollectSomeInStateZero () at ../src/runtime/common/RTCollector.m3:885
#27 0x0002c012 in RTCollector__CollectSome () at ../src/runtime/common/RTCollector.m3:720
#28 0x0002bc54 in RTHeapRep__CollectEnough () at ../src/runtime/common/RTCollector.m3:654
#29 0x00027fd9 in RTAllocator__AllocTraced (dataSize=4108, dataAlignment=4, thread=0xa04794) at ../src/runtime/common/RTAllocator.m3:365
#30 0x00027a2f in RTAllocator__GetOpenArray (def=0x7a0b0, s=0xb0490e90) at ../src/runtime/common/RTAllocator.m3:294
#31 0x00026eba in RTHooks__AllocateOpenArray (defn=0x7a0b0, s=0xb0490e90) at ../src/runtime/common/RTAllocator.m3:143
#32 0x00004001 in Main__AApply (cl=0xb054bc) at ../src/Main.m3:130
#33 0x0004145c in ThreadPThread__RunThread (me=0xa04750) at ../src/thread/PTHREAD/ThreadPThread.m3:450
#34 0x0004118b in ThreadPThread__ThreadBase (param=0xa04750) at ../src/thread/PTHREAD/ThreadPThread.m3:422
#35 0x9713885d in _pthread_start ()
#36 0x971386e2 in thread_start ()

Thread 9 (process 2811):
#0  0x9710b142 in semaphore_wait_signal_trap ()
#1  0x97110c46 in pthread_mutex_lock ()
#2  0x00044cf3 in ThreadPThread__pthread_mutex_lock (i=0x7e4e0) at ../src/thread/PTHREAD/ThreadPThreadC.c:462
#3  0x00043f8e in RTOS__LockHeap () at ../src/thread/PTHREAD/ThreadPThread.m3:1332
#4  0x00027fd4 in RTAllocator__AllocTraced (dataSize=4108, dataAlignment=4, thread=0xa046e4) at ../src/runtime/common/RTAllocator.m3:363
#5  0x00027a2f in RTAllocator__GetOpenArray (def=0x7a0b0, s=0xb040ee90) at ../src/runtime/common/RTAllocator.m3:294
#6  0x00026eba in RTHooks__AllocateOpenArray (defn=0x7a0b0, s=0xb040ee90) at ../src/runtime/common/RTAllocator.m3:143
#7  0x00004001 in Main__AApply (cl=0xb05484) at ../src/Main.m3:130
#8  0x0004145c in ThreadPThread__RunThread (me=0xa046a0) at ../src/thread/PTHREAD/ThreadPThread.m3:450
#9  0x0004118b in ThreadPThread__ThreadBase (param=0xa046a0) at ../src/thread/PTHREAD/ThreadPThread.m3:422
#10 0x9713885d in _pthread_start ()
#11 0x971386e2 in thread_start ()

Thread 8 (process 2811):
#0  0x9710b142 in semaphore_wait_signal_trap ()
#1  0x97110c46 in pthread_mutex_lock ()
#2  0x00044cf3 in ThreadPThread__pthread_mutex_lock (i=0x7e4e0) at ../src/thread/PTHREAD/ThreadPThreadC.c:462
#3  0x00043f8e in RTOS__LockHeap () at ../src/thread/PTHREAD/ThreadPThread.m3:1332
#4  0x00027fd4 in RTAllocator__AllocTraced (dataSize=4108, dataAlignment=4, thread=0xa04634) at ../src/runtime/common/RTAllocator.m3:363
#5  0x00027a2f in RTAllocator__GetOpenArray (def=0x7a0b0, s=0xb038ce90) at ../src/runtime/common/RTAllocator.m3:294
#6  0x00026eba in RTHooks__AllocateOpenArray (defn=0x7a0b0, s=0xb038ce90) at ../src/runtime/common/RTAllocator.m3:143
#7  0x00004001 in Main__AApply (cl=0xb0544c) at ../src/Main.m3:130
#8  0x0004145c in ThreadPThread__RunThread (me=0xa045f0) at ../src/thread/PTHREAD/ThreadPThread.m3:450
#9  0x0004118b in ThreadPThread__ThreadBase (param=0xa045f0) at ../src/thread/PTHREAD/ThreadPThread.m3:422
#10 0x9713885d in _pthread_start ()
#11 0x971386e2 in thread_start ()

Thread 7 (process 2811):
#0  0x9716c1d6 in __wait4 ()
#1  0x9716c1c9 in waitpid$UNIX2003 ()
#2  0x000453e7 in Uexec__waitpid (i=2843, j=0xb030ad8c, k=0) at ../src/unix/Common/Uexec.c:67
#3  0x00042252 in SchedulerPosix__WaitProcess (pid=2843, status=0xb030ad8c) at ../src/thread/PTHREAD/ThreadPThread.m3:657
#4  0x00009928 in Process__Wait (p=0xb9000c) at ../src/os/POSIX/ProcessPosixCommon.m3:275
#5  0x00003e92 in Main__FApply (cl=0xb05414) at ../src/Main.m3:117
#6  0x0004145c in ThreadPThread__RunThread (me=0xa04590) at ../src/thread/PTHREAD/ThreadPThread.m3:450
#7  0x0004118b in ThreadPThread__ThreadBase (param=0xa04590) at ../src/thread/PTHREAD/ThreadPThread.m3:422
#8  0x9713885d in _pthread_start ()
#9  0x971386e2 in thread_start ()

Thread 6 (process 2811):
#0  0x9716c1d6 in __wait4 ()
#1  0x9716c1c9 in waitpid$UNIX2003 ()
#2  0x000453e7 in Uexec__waitpid (i=2842, j=0xb0288d8c, k=0) at ../src/unix/Common/Uexec.c:67
#3  0x00042252 in SchedulerPosix__WaitProcess (pid=2842, status=0xb0288d8c) at ../src/thread/PTHREAD/ThreadPThread.m3:657
#4  0x00009928 in Process__Wait (p=0xc1000c) at ../src/os/POSIX/ProcessPosixCommon.m3:275
#5  0x00003e92 in Main__FApply (cl=0xb053dc) at ../src/Main.m3:117
#6  0x0004145c in ThreadPThread__RunThread (me=0xa043a0) at ../src/thread/PTHREAD/ThreadPThread.m3:450
#7  0x0004118b in ThreadPThread__ThreadBase (param=0xa043a0) at ../src/thread/PTHREAD/ThreadPThread.m3:422
#8  0x9713885d in _pthread_start ()
#9  0x971386e2 in thread_start ()

Thread 5 (process 2811):
#0  0x9716c1d6 in __wait4 ()
#1  0x9716c1c9 in waitpid$UNIX2003 ()
#2  0x000453e7 in Uexec__waitpid (i=2841, j=0xb0206d8c, k=0) at ../src/unix/Common/Uexec.c:67
#3  0x00042252 in SchedulerPosix__WaitProcess (pid=2841, status=0xb0206d8c) at ../src/thread/PTHREAD/ThreadPThread.m3:657
#4  0x00009928 in Process__Wait (p=0xb7000c) at ../src/os/POSIX/ProcessPosixCommon.m3:275
#5  0x00003e92 in Main__FApply (cl=0xb053a4) at ../src/Main.m3:117
#6  0x0004145c in ThreadPThread__RunThread (me=0xa042f0) at ../src/thread/PTHREAD/ThreadPThread.m3:450
#7  0x0004118b in ThreadPThread__ThreadBase (param=0xa042f0) at ../src/thread/PTHREAD/ThreadPThread.m3:422
#8  0x9713885d in _pthread_start ()
#9  0x971386e2 in thread_start ()

Thread 4 (process 2811):
#0  0x9710b142 in semaphore_wait_signal_trap ()
#1  0x97110c46 in pthread_mutex_lock ()
#2  0x00044cf3 in ThreadPThread__pthread_mutex_lock (i=0x7e4e0) at ../src/thread/PTHREAD/ThreadPThreadC.c:462
#3  0x00043f8e in RTOS__LockHeap () at ../src/thread/PTHREAD/ThreadPThread.m3:1332
#4  0x0003f6da in ThreadPThread__InitMutex (m=0x2120010, root=0x212000c, Clean=0x3f5aa) at ../src/thread/PTHREAD/ThreadPThread.m3:101
#5  0x0003f783 in ThreadPThread__LockMutex (m=0x212000c) at ../src/thread/PTHREAD/ThreadPThread.m3:117
#6  0x0000a323 in Rd__GetChar (rd=0x212000c) at ../src/rw/Rd.m3:33
#7  0x00003c2e in Main__RApply (cl=0xb0536c) at ../src/Main.m3:95
#8  0x0004145c in ThreadPThread__RunThread (me=0xa04240) at ../src/thread/PTHREAD/ThreadPThread.m3:450
#9  0x0004118b in ThreadPThread__ThreadBase (param=0xa04240) at ../src/thread/PTHREAD/ThreadPThread.m3:422
#10 0x9713885d in _pthread_start ()
#11 0x971386e2 in thread_start ()

Thread 3 (process 2811):
#0  ThreadPThread__LockMutex (m=0xd0000c) at ../src/thread/PTHREAD/ThreadPThread.m3:122
#1  0x0000a323 in Rd__GetChar (rd=0xd0000c) at ../src/rw/Rd.m3:33
#2  0x00003c2e in Main__RApply (cl=0xb05334) at ../src/Main.m3:95
#3  0x0004145c in ThreadPThread__RunThread (me=0xa04190) at ../src/thread/PTHREAD/ThreadPThread.m3:450
#4  0x0004118b in ThreadPThread__ThreadBase (param=0xa04190) at ../src/thread/PTHREAD/ThreadPThread.m3:422
#5  0x9713885d in _pthread_start ()
#6  0x971386e2 in thread_start ()

Thread 2 (process 2811):
#0  0x9710b142 in semaphore_wait_signal_trap ()
#1  0x97110c46 in pthread_mutex_lock ()
#2  0x00044cf3 in ThreadPThread__pthread_mutex_lock (i=0x7e4e0) at ../src/thread/PTHREAD/ThreadPThreadC.c:462
#3  0x00043f8e in RTOS__LockHeap () at ../src/thread/PTHREAD/ThreadPThread.m3:1332
#4  0x00027fd4 in RTAllocator__AllocTraced (dataSize=12, dataAlignment=4, thread=0xa040a4) at ../src/runtime/common/RTAllocator.m3:363
#5  0x00027387 in RTAllocator__GetTracedObj (def=0x77654) at ../src/runtime/common/RTAllocator.m3:224
#6  0x00026e20 in RTHooks__AllocateTracedObj (defn=0x77654) at ../src/runtime/common/RTAllocator.m3:122
#7  0x00005239 in FilePosix__New (fd=5, ds=1) at ../src/os/POSIX/FilePosix.m3:63
#8  0x000067df in FS__OpenFileReadonly (pn=0x64324) at ../src/os/POSIX/FSPosix.m3:182
#9  0x000103e8 in FileRd__Open (p=0x64324) at ../src/rw/FileRd.m3:16
#10 0x00003b9b in Main__RApply (cl=0xb052fc) at ../src/Main.m3:92
#11 0x0004145c in ThreadPThread__RunThread (me=0xa04060) at ../src/thread/PTHREAD/ThreadPThread.m3:450
#12 0x0004118b in ThreadPThread__ThreadBase (param=0xa04060) at ../src/thread/PTHREAD/ThreadPThread.m3:422
#13 0x9713885d in _pthread_start ()
#14 0x971386e2 in thread_start ()

Thread 1 (process 2811):
#0  0x971390a6 in __semwait_signal ()
#1  0x97138d62 in _pthread_cond_wait ()
#2  0x971388b5 in pthread_cond_timedwait$UNIX2003 ()
#3  0x00044c7c in ThreadPThread__pthread_cond_timedwait (cond=0xa03ca0, mutex=0xa03c70, m3timeout=1295014649.3298399) at ../src/thread/PTHREAD/ThreadPThreadC.c:430
#4  0x00041ca3 in ThreadPThread__XPause (self=0xa03c10, n=10, alertable=0 '\0') at ../src/thread/PTHREAD/ThreadPThread.m3:552
#5  0x00041d73 in Thread__Pause (n=10) at ../src/thread/PTHREAD/ThreadPThread.m3:567
#6  0x000046e2 in Main_M3 (mode=1) at ../src/Main.m3:214
#7  0x00035549 in RTLinker__RunMainBody (m=0x76920) at ../src/runtime/common/RTLinker.m3:406
#8  0x000349a5 in RTLinker__AddUnitI (m=0x76920) at ../src/runtime/common/RTLinker.m3:113
#9  0x00034a26 in RTLinker__AddUnit (b=0x455c) at ../src/runtime/common/RTLinker.m3:122
#10 0x000039fc in main (argc=1, argv=0xbffff5cc, envp=0xbffff5d4) at _m3main.c:16



More information about the M3devel mailing list