[M3devel] Status of threads for RC4?

Olaf Wagner wagner at elegosoft.com
Sun Oct 18 12:30:28 CEST 2009


Quoting Tony Hosking <hosking at cs.purdue.edu>:

>> Thread 1 (process 23708, thread 0x862c9400):
>> #0  _thread_kern_sched (scp=Cannot access memory at address 0xbb319
>> )
>>   at /usr/src/lib/libpthread/uthread/uthread_kern.c:392
>> Cannot access memory at address 0xbb315
>> #0  0x00fac8f1 in poll () from /usr/lib/libc.so.50.1
>> (m3gdb)
>
> So what is thread 1 up to?

I don't really understand what's going on there. But I made another
test which might or might not be helpful. I single-stepped in thread 1
until it blocks. We get actually no output from other threads then
(though several have been started, but then thread 3 seems to be
corrupt. Here is the debugger session:


-- bash-3.2$ m3gdb src/p0/p007/I386_OPENBSD/pgm
GNU gdb plus Modula-3 6.4
Copyright 2005 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i686-openbsd"...
(m3gdb) b Main
Main                    Main.m3                 Main_M3_tcb594446_LINK
Main.i3                 Main.mc
Main.ic                 Main_M3_t9b50f823_INIT
(m3gdb) b Main
Main                    Main.m3                 Main_M3_tcb594446_LINK
Main.i3                 Main.mc
Main.ic                 Main_M3_t9b50f823_INIT
(m3gdb) b Main
Breakpoint 1 at 0x1c0031c9: file ../Main.m3, line 127.
(m3gdb) r
Starting program:  
/home/hudson/workspace/cm3-lastok-build-I386_OPENBSD/cm3/m3-sys/m3tests/src/p0/p007/I386_OPENBSD/pgm
Breakpoint 1 at 0x1c0031b5: file ../Main.m3, line 127.
[Switching to process 15851, thread 0x85cc4800]

Breakpoint 1, Main (mode=0) at ../Main.m3:127
127     BEGIN
Current language:  auto; currently Modula-3
(m3gdb) n
0x1c00283e in __i686.get_pc_thunk.bx ()
(m3gdb)
Single stepping until exit from function __i686.get_pc_thunk.bx,
which has no line number information.
0x1c003901 in Main (mode=1006721732) at ../Main.m3:157
157     RTIO.Flush ();
(m3gdb)
AddUnit (b={"Main_M3", Declared at: ../Main.m3:127})
     at ../src/runtime/common/RTLinker.m3:121
121         IF (m = NIL) THEN RETURN END;
(m3gdb)
122         AddUnitI(m);
(m3gdb)

Breakpoint 1, Main (mode=1) at ../Main.m3:127
127     BEGIN
(m3gdb)
0x1c00283e in __i686.get_pc_thunk.bx ()
(m3gdb) finish
Run till exit from #0  0x1c00283e in __i686.get_pc_thunk.bx ()
0x1c0031c3 in Main (mode=2115735632) at ../Main.m3:127
127     BEGIN
(m3gdb) n
131     iolock := NEW (MUTEX);
(m3gdb)
132     stop := NEW (Thread.Condition);
(m3gdb) l
127     BEGIN
128
129     (* Thread.MinDefaultStackSize (20000); *)
130
131     iolock := NEW (MUTEX);
132     stop := NEW (Thread.Condition);
133
134     com := NEW (A, limit := 2000);
135     com.done := NEW (Thread.Condition);
136     com.first := 1;
(m3gdb) n
134     com := NEW (A, limit := 2000);
(m3gdb)
135     com.done := NEW (Thread.Condition);
(m3gdb)
136     com.first := 1;
(m3gdb)
137     com.next := 1;
(m3gdb)
138     com.last := 1;
(m3gdb)
139     t := NEW (T, id := 1, limit := 15);
(m3gdb)
141     INC (com.count);
(m3gdb)
142     Int (com.count, 5, ": ");
(m3gdb)
144     th := Thread.Fork (t);
(m3gdb)
145     t.thread := th;
(m3gdb)
146     LOCK com DO
(m3gdb)
147       Thread.Broadcast (com.done);
(m3gdb)
148     END;
(m3gdb)
151       LOCK com DO
(m3gdb)
152         WHILE (com.next # 0) DO
(m3gdb)
153           com.Wait (com.done); END;
(m3gdb)
152         WHILE (com.next # 0) DO
(m3gdb)
153           com.Wait (com.done); END;
(m3gdb)
152         WHILE (com.next # 0) DO
(m3gdb)
153           com.Wait (com.done); END;
(m3gdb)
152         WHILE (com.next # 0) DO
(m3gdb)
153           com.Wait (com.done); END;
(m3gdb)
152         WHILE (com.next # 0) DO
(m3gdb)
153           com.Wait (com.done); END;
(m3gdb)
152         WHILE (com.next # 0) DO
(m3gdb)
153           com.Wait (com.done); END;
(m3gdb)
152         WHILE (com.next # 0) DO
(m3gdb)
153           com.Wait (com.done); END;
(m3gdb)
152         WHILE (com.next # 0) DO
(m3gdb)
153           com.Wait (com.done); END;
(m3gdb)
152         WHILE (com.next # 0) DO
(m3gdb)
153           com.Wait (com.done); END;
(m3gdb)
152         WHILE (com.next # 0) DO
(m3gdb)
153           com.Wait (com.done); END;
(m3gdb)
152         WHILE (com.next # 0) DO
(m3gdb)
153           com.Wait (com.done); END;
(m3gdb)
152         WHILE (com.next # 0) DO
(m3gdb)
153           com.Wait (com.done); END;
(m3gdb)


^C[New process 15851]
^C
Program received signal SIGINT, Interrupt.
[Switching to process 15851]
0x07b8b8f1 in poll () from /usr/lib/libc.so.50.1
(m3gdb) thread apply all bt

Thread 11 (process 15851, thread 0x85cc4000):
#0  _thread_kern_sched (scp=0x0)
     at /usr/src/lib/libpthread/uthread/uthread_kern.c:482
#1  0x0dc2b200 in _thread_kern_sched_state_unlock (state=PS_SIGTHREAD,
     lock=0x85cc40b0, fname=0x1 <Address 0x1 out of bounds>, lineno=1)
     at /usr/src/lib/libpthread/uthread/uthread_kern.c:581
#2  0x0dc29b9a in mutex_lock_common (mutex=0x7e1b90f0)
     at /usr/src/lib/libpthread/uthread/uthread_mutex.c:489
#3  0x0dc29cb8 in pthread_mutex_lock (mutex=0x7e1b90f0)
     at /usr/src/lib/libpthread/uthread/uthread_mutex.c:675
#4  0x1c01d3a4 in XWait (self=Invalid C/C++ type code 26 in symbol table.
) at ../src/thread/PTHREAD/ThreadPThread.m3:240
#5  0x1c01d746 in Wait (m=Invalid C/C++ type code 26 in symbol table.
) at ../src/thread/PTHREAD/ThreadPThread.m3:280
#6  0x1c002b4a in Task (self=Invalid C/C++ type code 26 in symbol table.
) at ../Main.m3:91
#7  0x1c01f726 in RunThread (me=Invalid C/C++ type code 29 in symbol table.
)
     at ../src/thread/PTHREAD/ThreadPThread.m3:588
#8  0x1c01f46b in ThreadBase (param=Invalid C/C++ type code 35 in  
symbol table.
)
     at ../src/thread/PTHREAD/ThreadPThread.m3:564
#9  0x0dc2237f in _thread_start ()
     at /usr/src/lib/libpthread/uthread/uthread_create.c:240
#10 0x0000002b in ?? ()
#11 0x00000000 in ?? ()
Current language:  auto; currently c

Thread 10 (process 15851, thread 0x84895400):
#0  _thread_kern_sched (scp=0x0)
     at /usr/src/lib/libpthread/uthread/uthread_kern.c:482
#1  0x0dc2b200 in _thread_kern_sched_state_unlock (state=PS_SIGTHREAD,
     lock=0x848954b0, fname=0x1 <Address 0x1 out of bounds>, lineno=1)
     at /usr/src/lib/libpthread/uthread/uthread_kern.c:581
#2  0x0dc28e2d in pthread_cond_timedwait (cond=0x2dc1d0e0, mutex=0x2dc1d0dc,
     abstime=0x8816efa8) at /usr/src/lib/libpthread/uthread/uthread_cond.c:431
#3  0x0dc225a7 in _thread_gc (arg=0x0)
     at /usr/src/lib/libpthread/uthread/uthread_gc.c:181
#4  0x0dc2237f in _thread_start ()
     at /usr/src/lib/libpthread/uthread/uthread_create.c:240
#5  0x0000002b in ?? ()
#6  0x00000000 in ?? ()

Thread 9 (process 15851, thread 0x84895c00):
#0  _thread_kern_sched (scp=0x0)
     at /usr/src/lib/libpthread/uthread/uthread_kern.c:482
#1  0x0dc2b200 in _thread_kern_sched_state_unlock (state=PS_SIGTHREAD,
     lock=0x84895cb0, fname=0x1 <Address 0x1 out of bounds>, lineno=1)
     at /usr/src/lib/libpthread/uthread/uthread_kern.c:581
#2  0x0dc29b9a in mutex_lock_common (mutex=0x7e1b90f0)
     at /usr/src/lib/libpthread/uthread/uthread_mutex.c:489
#3  0x0dc29cb8 in pthread_mutex_lock (mutex=0x7e1b90f0)
     at /usr/src/lib/libpthread/uthread/uthread_mutex.c:675
#4  0x1c01d3a4 in XWait (self=Invalid C/C++ type code 26 in symbol table.
) at ../src/thread/PTHREAD/ThreadPThread.m3:240
#5  0x1c01d746 in Wait (m=Invalid C/C++ type code 26 in symbol table.
) at ../src/thread/PTHREAD/ThreadPThread.m3:280
#6  0x1c002b4a in Task (self=Invalid C/C++ type code 26 in symbol table.
) at ../Main.m3:91
#7  0x1c01f726 in RunThread (me=Invalid C/C++ type code 29 in symbol table.
)
     at ../src/thread/PTHREAD/ThreadPThread.m3:588
#8  0x1c01f46b in ThreadBase (param=Invalid C/C++ type code 35 in  
symbol table.
)
     at ../src/thread/PTHREAD/ThreadPThread.m3:564
#9  0x0dc2237f in _thread_start ()
     at /usr/src/lib/libpthread/uthread/uthread_create.c:240
#10 0x0000002b in ?? ()
#11 0x00000000 in ?? ()

Thread 8 (process 15851, thread 0x84895000):
#0  _thread_kern_sched (scp=0x0)
     at /usr/src/lib/libpthread/uthread/uthread_kern.c:482
#1  0x0dc2b200 in _thread_kern_sched_state_unlock (state=PS_SIGTHREAD,
     lock=0x848950b0, fname=0x1 <Address 0x1 out of bounds>, lineno=1)
     at /usr/src/lib/libpthread/uthread/uthread_kern.c:581
#2  0x0dc29b9a in mutex_lock_common (mutex=0x7e1b90f0)
     at /usr/src/lib/libpthread/uthread/uthread_mutex.c:489
#3  0x0dc29cb8 in pthread_mutex_lock (mutex=0x7e1b90f0)
     at /usr/src/lib/libpthread/uthread/uthread_mutex.c:675
#4  0x1c01cd60 in LockMutex (m=Invalid C/C++ type code 26 in symbol table.
) at ../src/thread/PTHREAD/ThreadPThread.m3:159
#5  0x1c002a51 in Task (self=Invalid C/C++ type code 26 in symbol table.
) at ../Main.m3:90
#6  0x1c01f726 in RunThread (me=Invalid C/C++ type code 29 in symbol table.
)
     at ../src/thread/PTHREAD/ThreadPThread.m3:588
#7  0x1c01f46b in ThreadBase (param=Invalid C/C++ type code 35 in  
symbol table.
)
     at ../src/thread/PTHREAD/ThreadPThread.m3:564
#8  0x0dc2237f in _thread_start ()
     at /usr/src/lib/libpthread/uthread/uthread_create.c:240
#9  0x0000002b in ?? ()
#10 0x00000000 in ?? ()

Thread 7 (process 15851, thread 0x88197400):
#0  _thread_kern_sched (scp=0x0)
     at /usr/src/lib/libpthread/uthread/uthread_kern.c:482
#1  0x0dc2b200 in _thread_kern_sched_state_unlock (state=PS_SIGTHREAD,
     lock=0x881974b0, fname=0x1 <Address 0x1 out of bounds>, lineno=1)
     at /usr/src/lib/libpthread/uthread/uthread_kern.c:581
#2  0x0dc29b9a in mutex_lock_common (mutex=0x7e1b90f0)
     at /usr/src/lib/libpthread/uthread/uthread_mutex.c:489
#3  0x0dc29cb8 in pthread_mutex_lock (mutex=0x7e1b90f0)
     at /usr/src/lib/libpthread/uthread/uthread_mutex.c:675
#4  0x1c01cd60 in LockMutex (m=Invalid C/C++ type code 26 in symbol table.
) at ../src/thread/PTHREAD/ThreadPThread.m3:159
#5  0x1c002a51 in Task (self=Invalid C/C++ type code 26 in symbol table.
) at ../Main.m3:90
#6  0x1c01f726 in RunThread (me=Invalid C/C++ type code 29 in symbol table.
)
     at ../src/thread/PTHREAD/ThreadPThread.m3:588
#7  0x1c01f46b in ThreadBase (param=Invalid C/C++ type code 35 in  
symbol table.
)
     at ../src/thread/PTHREAD/ThreadPThread.m3:564
#8  0x0dc2237f in _thread_start ()
     at /usr/src/lib/libpthread/uthread/uthread_create.c:240
#9  0x0000002b in ?? ()
#10 0x00000000 in ?? ()

Thread 6 (process 15851, thread 0x88197000):
#0  _thread_kern_sched (scp=0x0)
     at /usr/src/lib/libpthread/uthread/uthread_kern.c:482
#1  0x0dc2b200 in _thread_kern_sched_state_unlock (state=PS_SIGTHREAD,
     lock=0x881970b0, fname=0x1 <Address 0x1 out of bounds>, lineno=1)
     at /usr/src/lib/libpthread/uthread/uthread_kern.c:581
#2  0x0dc29b9a in mutex_lock_common (mutex=0x7e1b90f0)
     at /usr/src/lib/libpthread/uthread/uthread_mutex.c:489
#3  0x0dc29cb8 in pthread_mutex_lock (mutex=0x7e1b90f0)
     at /usr/src/lib/libpthread/uthread/uthread_mutex.c:675
#4  0x1c01cd60 in LockMutex (m=Invalid C/C++ type code 26 in symbol table.
) at ../src/thread/PTHREAD/ThreadPThread.m3:159
#5  0x1c002a51 in Task (self=Invalid C/C++ type code 26 in symbol table.
) at ../Main.m3:90
#6  0x1c01f726 in RunThread (me=Invalid C/C++ type code 29 in symbol table.
)
     at ../src/thread/PTHREAD/ThreadPThread.m3:588
#7  0x1c01f46b in ThreadBase (param=Invalid C/C++ type code 35 in  
symbol table.
)
     at ../src/thread/PTHREAD/ThreadPThread.m3:564
#8  0x0dc2237f in _thread_start ()
     at /usr/src/lib/libpthread/uthread/uthread_create.c:240
#9  0x0000002b in ?? ()
#10 0x00000000 in ?? ()

Thread 5 (process 15851, thread 0x8931f800):
#0  _thread_kern_sched (scp=0x0)
     at /usr/src/lib/libpthread/uthread/uthread_kern.c:482
#1  0x0dc2b200 in _thread_kern_sched_state_unlock (state=PS_SIGTHREAD,
     lock=0x8931f8b0, fname=0x1 <Address 0x1 out of bounds>, lineno=1)
     at /usr/src/lib/libpthread/uthread/uthread_kern.c:581
#2  0x0dc29b9a in mutex_lock_common (mutex=0x7e1b90f0)
     at /usr/src/lib/libpthread/uthread/uthread_mutex.c:489
#3  0x0dc29cb8 in pthread_mutex_lock (mutex=0x7e1b90f0)
     at /usr/src/lib/libpthread/uthread/uthread_mutex.c:675
#4  0x1c01cd60 in LockMutex (m=Invalid C/C++ type code 26 in symbol table.
) at ../src/thread/PTHREAD/ThreadPThread.m3:159
#5  0x1c002a51 in Task (self=Invalid C/C++ type code 26 in symbol table.
) at ../Main.m3:90
#6  0x1c01f726 in RunThread (me=Invalid C/C++ type code 29 in symbol table.
)
     at ../src/thread/PTHREAD/ThreadPThread.m3:588
#7  0x1c01f46b in ThreadBase (param=Invalid C/C++ type code 35 in  
symbol table.
)
     at ../src/thread/PTHREAD/ThreadPThread.m3:564
#8  0x0dc2237f in _thread_start ()
     at /usr/src/lib/libpthread/uthread/uthread_create.c:240
#9  0x0000002b in ?? ()
#10 0x00000000 in ?? ()

Thread 4 (process 15851, thread 0x8931f000):
#0  _thread_kern_sched (scp=0x0)
     at /usr/src/lib/libpthread/uthread/uthread_kern.c:482
#1  0x0dc2b200 in _thread_kern_sched_state_unlock (state=PS_SIGTHREAD,
     lock=0x8931f0b0, fname=0x1 <Address 0x1 out of bounds>, lineno=1)
     at /usr/src/lib/libpthread/uthread/uthread_kern.c:581
#2  0x0dc29b9a in mutex_lock_common (mutex=0x7e1b90f0)
     at /usr/src/lib/libpthread/uthread/uthread_mutex.c:489
#3  0x0dc29cb8 in pthread_mutex_lock (mutex=0x7e1b90f0)
     at /usr/src/lib/libpthread/uthread/uthread_mutex.c:675
#4  0x1c01cd60 in LockMutex (m=Invalid C/C++ type code 26 in symbol table.
) at ../src/thread/PTHREAD/ThreadPThread.m3:159
#5  0x1c002a51 in Task (self=Invalid C/C++ type code 26 in symbol table.
) at ../Main.m3:90
#6  0x1c01f726 in RunThread (me=Invalid C/C++ type code 29 in symbol table.
)
     at ../src/thread/PTHREAD/ThreadPThread.m3:588
#7  0x1c01f46b in ThreadBase (param=Invalid C/C++ type code 35 in  
symbol table.
)
     at ../src/thread/PTHREAD/ThreadPThread.m3:564
#8  0x0dc2237f in _thread_start ()
     at /usr/src/lib/libpthread/uthread/uthread_create.c:240
#9  0x0000002b in ?? ()
#10 0x00000000 in ?? ()

Thread 3 (process 15851, thread 0x856ab400):
#0  _thread_kern_sched (scp=Cannot access memory at address 0x2e497
)
     at /usr/src/lib/libpthread/uthread/uthread_kern.c:392
Cannot access memory at address 0x2e493

Thread 2 (process 15851):
#0  0x07b8b8f1 in poll () from /usr/lib/libc.so.50.1
#1  0x0dc2b314 in _thread_kern_poll (wait_reqd=1)
     at /usr/src/lib/libpthread/uthread/uthread_kern.c:760
#2  0x0dc2ae53 in _thread_kern_sched (scp=0x0)
     at /usr/src/lib/libpthread/uthread/uthread_kern.c:382
#3  0x0dc2b19f in _thread_kern_sched_state (state=767676616,
     fname=0x2dc1d0c8 "", lineno=767676616)
     at /usr/src/lib/libpthread/uthread/uthread_kern.c:550
#4  0x0dc25085 in nanosleep (time_to_sleep=0x7de7fc58,
     time_remaining=0x7de7fc60)
     at /usr/src/lib/libpthread/uthread/uthread_nanosleep.c:84
#5  0x1c023b69 in ThreadPThread__Nanosleep (req=0x7de7fc58, rem=0x7de7fc60)
     at ../src/thread/PTHREAD/ThreadPThreadC.c:317
#6  0x1c02053c in CommonSleep () at ../src/thread/PTHREAD/ThreadPThread.m3:740
#7  0x1c0223bb in StopWorld () at ../src/thread/PTHREAD/ThreadPThread.m3:1253
#8  0x1c021a29 in SuspendOthers ()
     at ../src/thread/PTHREAD/ThreadPThread.m3:1029
#9  0x1c0086b3 in CollectSomeInStateZero ()
     at ../src/runtime/common/RTCollector.m3:735
#10 0x1c008672 in CollectSome () at ../src/runtime/common/RTCollector.m3:709
#11 0x1c008125 in CollectEnough () at ../src/runtime/common/RTCollector.m3:643
#12 0x1c0057c9 in AllocTraced (dataSize=Invalid C/C++ type code 40 in  
symbol table.
)
     at ../src/runtime/common/RTAllocator.m3:363
#13 0x1c004a3e in GetTracedObj (def=Invalid C/C++ type code 29 in  
symbol table.
)
     at ../src/runtime/common/RTAllocator.m3:222
#14 0x1c0043d4 in AllocateTracedObj (defn=Invalid C/C++ type code 35  
in symbol table.
)
     at ../src/runtime/common/RTAllocator.m3:120
#15 0x1c002f67 in Task (self=Invalid C/C++ type code 26 in symbol table.
) at ../Main.m3:110
#16 0x1c01f726 in RunThread (me=Invalid C/C++ type code 29 in symbol table.
)
     at ../src/thread/PTHREAD/ThreadPThread.m3:588
#17 0x1c01f46b in ThreadBase (param=Invalid C/C++ type code 35 in  
symbol table.
)
     at ../src/thread/PTHREAD/ThreadPThread.m3:564
#18 0x0dc2237f in _thread_start ()
     at /usr/src/lib/libpthread/uthread/uthread_create.c:240
#19 0x0000002b in ?? ()
#20 0x00000000 in ?? ()

Thread 1 (process 15851, thread 0x85cc4800):
#0  _thread_kern_sched (scp=0x0)
     at /usr/src/lib/libpthread/uthread/uthread_kern.c:482
#1  0x0dc2b200 in _thread_kern_sched_state_unlock (state=PS_SIGTHREAD,
     lock=0x85cc48b0, fname=0x1 <Address 0x1 out of bounds>, lineno=1)
     at /usr/src/lib/libpthread/uthread/uthread_kern.c:581
#2  0x0dc29b9a in mutex_lock_common (mutex=0x7e1b90f0)
     at /usr/src/lib/libpthread/uthread/uthread_mutex.c:489
#3  0x0dc29cb8 in pthread_mutex_lock (mutex=0x7e1b90f0)
     at /usr/src/lib/libpthread/uthread/uthread_mutex.c:675
#4  0x1c01d3a4 in XWait (self=Invalid C/C++ type code 26 in symbol table.
) at ../src/thread/PTHREAD/ThreadPThread.m3:240
#5  0x1c01d746 in Wait (m=Invalid C/C++ type code 26 in symbol table.
) at ../src/thread/PTHREAD/ThreadPThread.m3:280
#6  0x1c00387c in Main (mode=Invalid C/C++ type code 39 in symbol table.
) at ../Main.m3:153
#7  0x1c012688 in RunMainBody (m=Invalid C/C++ type code 29 in symbol table.
) at ../src/runtime/common/RTLinker.m3:399
#8  0x1c011a42 in AddUnitI (m=Invalid C/C++ type code 29 in symbol table.
) at ../src/runtime/common/RTLinker.m3:113
#9  0x1c011ad0 in AddUnit (b=Invalid C/C++ type code 31 in symbol table.
) at ../src/runtime/common/RTLinker.m3:122
#10 0x1c002826 in main (argc=1, argv=0xcfbc15ec, envp=0xcfbc15f4)
     at _m3main.mc:4
#11 0x1c00268c in ___start ()
#12 0x1c0025df in _start ()
#0  0x07b8b8f1 in poll () from /usr/lib/libc.so.50.1
(m3gdb)

I also tried increasing the default stack size; it didn't help.
If you want me to test anything, I'll be happy to try it.

Olaf
-- 
Olaf Wagner -- elego Software Solutions GmbH
                Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin, Germany
phone: +49 30 23 45 86 96  mobile: +49 177 2345 869  fax: +49 30 23 45 86 95
    http://www.elegosoft.com | Geschäftsführer: Olaf Wagner | Sitz: Berlin
Handelregister: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr: DE163214194




More information about the M3devel mailing list