[M3devel] System and User space Threads on LINUXLIBC6

Tony Hosking hosking at cs.purdue.edu
Fri Sep 28 17:35:25 CEST 2007


On Sep 28, 2007, at 11:02 AM, Daniel Alejandro Benavides D. wrote:

> Hi:
> I would like to know if it is necessary to turn down
> the garbage collection to debug a M3 program.
> I know running a program inside gdb in general could
> cause some runtime diferences withj normal execution,
> like the cout<< in C++, which is reliable under
> debugging conditions, but not in normal execution
> conditions in a program which calls it constantly
> (that happened me on 2005), so one can note that the
> behaviour would be better on debug conditions, thats
> why I think this is not maybe the problem on NThreads
> program (is easy to say that if we think that the
> runtime errors showed inside m3gdb are not present
> when the program executes normally), tough I debugged
> one more time to show other backtraces:

Debugging with GC enabled should be fine, except that you will not  
necessarily see the same non-deterministic behavior as when it runs  
outside the debugger.

Regarding the assert that is failing, that indicates that sigwait is  
returning an error, which seems odd.  I will try this program on my  
own Linux system.

>
> (m3gdb) run
> The program being debugged has been started already.
> Start it from the beginning? (y or n) y
> Starting program:
> /home/danielb/code/m3/parallel/LINUXLIBC6/NThreads
> Error in re-setting breakpoint 3:
> No source file named ThreadPThread.m3.
> Error in re-setting breakpoint 3:
> No source file named ThreadPThread.m3.
> Error in re-setting breakpoint 3:
> No source file named ThreadPThread.m3.
> Breakpoint 3 at 0xb7654dba: file ThreadPThread.m3,
> line 1180.
> [Thread debugging using libthread_db enabled]
> [New Thread -1220008256 (LWP 8474)]
> [Switching to Thread -1220008256 (LWP 8474)]
>
> Breakpoint 1, NThreads_M3_te29971a7_INIT
> (L_2=0xb7447010) at NThreads.m3:14
> 14          Closure = Thread.Closure OBJECT
> (m3gdb) cont
> Continuing.
> [New Thread -1220281424 (LWP 8495)]
>
> Breakpoint 1, NThreads_M3_te29971a7_INIT
> (L_2=0xb7447058) at NThreads.m3:14
> 14          Closure = Thread.Closure OBJECT
> (m3gdb) cont
> Continuing.
> [New Thread -1228674128 (LWP 8496)]
>   1
> Breakpoint 1, NThreads_M3_te29971a7_INIT
> (L_2=0xb74470a0) at NThreads.m3:14
> 14          Closure = Thread.Closure OBJECT
> (m3gdb) cont
> Continuing.
>   1[New Thread -1237066832 (LWP 8497)]
>   2  1
> Breakpoint 1, NThreads_M3_te29971a7_INIT
> (L_2=0xb74470e8) at NThreads.m3:14
> 14          Closure = Thread.Closure OBJECT
> (m3gdb) cont
> Continuing.
>   2  1[New Thread -1245459536 (LWP 8498)]
>   3  2  1
> Breakpoint 1, NThreads_M3_te29971a7_INIT
> (L_2=0xb7447130) at NThreads.m3:14
> 14          Closure = Thread.Closure OBJECT
> (m3gdb) cont
> Continuing.
>   3  2  1[New Thread -1253852240 (LWP 8499)]
>   3  2  1
> Breakpoint 1, NThreads_M3_te29971a7_INIT
> (L_2=0xb7447178) at NThreads.m3:14
> 14          Closure = Thread.Closure OBJECT
> (m3gdb) cont
> Continuing.
>
> Program received signal SIG64, Real-time event 64.
> NThreads_M3_te29971a7_INIT (L_2=0xb7447178) at
> NThreads.m3:14
> 14          Closure = Thread.Closure OBJECT
> (m3gdb) cont
> Continuing.
>
> Program received signal SIG64, Real-time event 64.
> [Switching to Thread -1253852240 (LWP 8499)]
> 0xffffe410 in __kernel_vsyscall ()
> (m3gdb) cont
> Continuing.
> [Switching to Thread -1220008256 (LWP 8474)]
>
> Breakpoint 1, NThreads_M3_te29971a7_INIT
> (L_2=0xb7447178) at NThreads.m3:14
> 14          Closure = Thread.Closure OBJECT
> (m3gdb) cont
> Continuing.
>
> Program received signal SIG64, Real-time event 64.
> [Switching to Thread -1237066832 (LWP 8497)]
> 0xffffe410 in __kernel_vsyscall ()
> (m3gdb) cont
> Continuing.
>
> Program received signal SIG64, Real-time event 64.
> [Switching to Thread -1228674128 (LWP 8496)]
> 0xffffe410 in __kernel_vsyscall ()
> (m3gdb) cont
> Continuing.
>
> Program received signal SIG64, Real-time event 64.
> [Switching to Thread -1220281424 (LWP 8495)]
> 0xffffe410 in __kernel_vsyscall ()
> (m3gdb) cont
> Continuing.
> [Switching to Thread -1253852240 (LWP 8499)]
>
> Breakpoint 3, SignalHandler (sig=64, sip=16_b543af8c,
> uap=16_b543b00c) at ThreadPThread.m3:1180
> 1180    ThreadPThread.m3: No such file or directory.
>         in ThreadPThread.m3
> (m3gdb) where
> #0  SignalHandler (sig=64, sip=16_b543af8c,
> uap=16_b543b00c) at ThreadPThread.m3:1180
> #1  <signal handler called>
> #2  0xffffe410 in __kernel_vsyscall ()
> #3  0xb75df3c1 in __lll_mutex_unlock_wake () from
> /lib/tls/i686/cmov/libpthread.so.0
> #4  0xb75dc2df in _L_mutex_unlock_128 () from
> /lib/tls/i686/cmov/libpthread.so.0
> #5  0xb543b358 in ?? ()
> #6  0xb764ecef in Release (m=16_b767adf4) at
> ThreadPThread.m3:186
> #7  0xb764ecef in Release (m=16_b7440004) at
> ThreadPThread.m3:186
> #8  0xb7651aa9 in RunThread (me=16_08054700) at
> ThreadPThread.m3:536
> #9  0xb76517e6 in ThreadBase (param=16_08054700) at
> ThreadPThread.m3:521
> #10 0xb75da341 in start_thread () from
> /lib/tls/i686/cmov/libpthread.so.0
> #11 0xb754c4ee in clone () from
> /lib/tls/i686/cmov/libc.so.6
> (m3gdb) step
> 1181    in ThreadPThread.m3
> (m3gdb) step
> [Switching to Thread -1237066832 (LWP 8497)]
>
> Breakpoint 3, SignalHandler (sig=64, sip=16_b643cf9c,
> uap=16_b643d01c) at ThreadPThread.m3:1180
> 1180    in ThreadPThread.m3
> (m3gdb) step
> [Switching to Thread -1228674128 (LWP 8496)]
>
> Breakpoint 3, SignalHandler (sig=64, sip=16_b6c3df9c,
> uap=16_b6c3e01c) at ThreadPThread.m3:1180
> 1180    in ThreadPThread.m3
> (m3gdb) step
> [Switching to Thread -1220281424 (LWP 8495)]
>
> Breakpoint 3, SignalHandler (sig=64, sip=16_b743ef9c,
> uap=16_b743f01c) at ThreadPThread.m3:1180
> 1180    in ThreadPThread.m3
> (m3gdb) step
>
>
> ***
> *** runtime error:
> ***    <*ASSERT*> failed.
> ***    file "../src/thread/PTHREAD/ThreadPThread.m3",
> line 1184
> ***
>
>
>
> ***
> *** runtime error:
> ***    <*ASSERT*> failed.
> ***    file "../src/thread/PTHREAD/ThreadPThread.m3",
> line 1184
> ***
>
>
>
> ***
> *** runtime error:
> ***    <*ASSERT*> failed.
> ***    file "../src/thread/PTHREAD/ThreadPThread.m3",
> line 1184
> ***
>
>
> Program received signal SIG64, Real-time event 64.
> [Switching to Thread -1220008256 (LWP 8474)]
> 0xffffe410 in __kernel_vsyscall ()
> (m3gdb) where
> #0  0xffffe410 in __kernel_vsyscall ()
> #1  0xb75dcc76 in pthread_cond_wait@@GLIBC_2.3.2 ()
> from /lib/tls/i686/cmov/libpthread.so.0
> #2  0xb7655ae0 in LockHeap () at ThreadPThread.m3:1370
> #3  0xb76213ca in GetUntracedRef (def=16_b767af38) at
> RTAllocator.m3:240
> #4  0xb7620b4a in AllocateUntracedRef
> (defn=16_b767af38) at RTAllocator.m3:146
> #5  0xb7652003 in Fork (closure=16_b7447178) at
> ThreadPThread.m3:575
> #6  0x0804b8b6 in Fork () at NThreads.m3:33
> #7  0x0804b928 in NThreads (mode=1) at NThreads.m3:39
> #8  0xb763a87a in RunMainBody (m=16_0804dc60) at
> RTLinker.m3:399
> #9  0xb7639174 in AddUnitI (m=16_0804dc60) at
> RTLinker.m3:113
> #10 0xb763920b in AddUnit (b={"NThreads_M3", Declared
> at: NThreads.m3:38}) at RTLinker.m3:122
> #11 0x08048ea8 in main (argc=1, argv=0xbfce0c04,
> envp=0xbfce0c0c) at _m3main.mc:4
> (m3gdb) step
> Single stepping until exit from function
> __kernel_vsyscall,
> which has no line number information.
> SignalHandler (sig=64, sip=16_bfce042c,
> uap=16_bfce04ac) at ThreadPThread.m3:1157
> 1157    in ThreadPThread.m3
> (m3gdb) step
>
>
> ***
> *** runtime error:
> ***    <*ASSERT*> failed.
> ***    file "../src/thread/PTHREAD/ThreadPThread.m3",
> line 1184
> ***
>
> 1161    in ThreadPThread.m3
> (m3gdb) step
> m3_Cerrno_GetErrno () at ../src/C/Common/CerrnoC.c:10
> 10      ../src/C/Common/CerrnoC.c: No such file or
> directory.
>         in ../src/C/Common/CerrnoC.c
> Current language:  auto; currently c
> (m3gdb) step
> 11      in ../src/C/Common/CerrnoC.c
> (m3gdb) step
> SignalHandler (sig=64, sip=16_bfce042c,
> uap=16_bfce04ac) at ThreadPThread.m3:1163
> 1163    ThreadPThread.m3: No such file or directory.
>         in ThreadPThread.m3
> Current language:  auto; currently Modula-3
> (m3gdb) step
> GetActivation () at ThreadPThread.m3:368
> 368     in ThreadPThread.m3
> (m3gdb) step
> 369     in ThreadPThread.m3
> (m3gdb) step
> SignalHandler (sig=64, sip=16_bfce042c,
> uap=16_bfce04ac) at ThreadPThread.m3:1166
> 1166    in ThreadPThread.m3
> (m3gdb) step
> 1167    in ThreadPThread.m3
> (m3gdb) step
> 1168    in ThreadPThread.m3
> (m3gdb) step
> 1169    in ThreadPThread.m3
> (m3gdb) step
> 1172    in ThreadPThread.m3
> (m3gdb) step
> 1174    in ThreadPThread.m3
> (m3gdb) step
> 1175    in ThreadPThread.m3
> (m3gdb) step
> 1178    in ThreadPThread.m3
> (m3gdb) step
>   4  4  4  4  4  4
> Program received signal SIGABRT, Aborted.
> [Switching to Thread -1237066832 (LWP 8497)]
> 0xffffe410 in __kernel_vsyscall ()
> (m3gdb) step
> Single stepping until exit from function
> __kernel_vsyscall,
>
> Thanks
>
> --- "Daniel Alejandro Benavides D."
> <dabenavidesd at yahoo.es> wrote:
>
>> Hi:
>>
>> I debugged for a while the program with
>> handle all nostop
>> handle EXC_SOFTWARE stop
>> handle EXC_BREAKPOINT stop
>>
>> getting this:
>>
>> Breakpoint 4, SignalHandler (sig=64,
>> sip=16_b640ff9c,
>> uap=16_b641001c) at ThreadPThread.m3:1180
>> 1180    in ThreadPThread.m3
>> (m3gdb) step
>> [Switching to Thread -1254036560 (LWP 8072)]
>>
>> Breakpoint 3, SignalHandler (sig=64,
>> sip=16_b540df8c,
>> uap=16_b540e00c) at ThreadPThread.m3:1184
>> 1184    in ThreadPThread.m3
>> (m3gdb) step
>> [Switching to Thread -1237251152 (LWP 8067)]
>>
>> Breakpoint 3, SignalHandler (sig=64,
>> sip=16_b640ff9c,
>> uap=16_b641001c) at ThreadPThread.m3:1184
>> 1184    in ThreadPThread.m3
>> (m3gdb) where
>> #0  SignalHandler (sig=64, sip=16_b640ff9c,
>> uap=16_b641001c) at ThreadPThread.m3:1184
>> #1  <signal handler called>
>> #2  0xffffe410 in __kernel_vsyscall ()
>> #3  0xb7505b8c in sched_yield () from
>> /lib/tls/i686/cmov/libc.so.6
>> #4  0xb7625fce in Yield () at ThreadPThread.m3:712
>> #5  0x0804b844 in PrintId (cl=16_b741b0a0) at
>> NThreads.m3:25
>> #6  0xb7624b21 in RunThread (me=16_08054560) at
>> ThreadPThread.m3:540
>> #7  0xb76247e6 in ThreadBase (param=16_08054560) at
>> ThreadPThread.m3:521
>> #8  0xb75ad341 in start_thread () from
>> /lib/tls/i686/cmov/libpthread.so.0
>> #9  0xb751f4ee in clone () from
>> /lib/tls/i686/cmov/libc.so.6
>> (m3gdb) step
>>
>>
>> ***
>> *** runtime error:
>> ***    <*ASSERT*> failed.
>> ***    file
>> "../src/thread/PTHREAD/ThreadPThread.m3",
>> line 1184
>> ***
>>
>> [Switching to Thread -1228858448 (LWP 8066)]
>>
>> Breakpoint 4, SignalHandler (sig=64,
>> sip=16_b6c10f9c,
>> uap=16_b6c1101c) at ThreadPThread.m3:1180
>> 1180    in ThreadPThread.m3
>> (m3gdb) step
>>
>> Breakpoint 3, SignalHandler (sig=64,
>> sip=16_b6c10f9c,
>> uap=16_b6c1101c) at ThreadPThread.m3:1184
>> 1184    in ThreadPThread.m3
>> (m3gdb) step
>>
>>
>> ***
>> *** runtime error:
>> ***    <*ASSERT*> failed.
>> ***    file
>> "../src/thread/PTHREAD/ThreadPThread.m3",
>> line 1184
>> ***
>>
>>
>> Program received signal SIG64, Real-time event 64.
>> [Switching to Thread -1220465744 (LWP 8065)]
>>
>> Breakpoint 4, SignalHandler (sig=64,
>> sip=16_b7411f9c,
>> uap=16_b741201c) at ThreadPThread.m3:1180
>> 1180    in ThreadPThread.m3
>> (m3gdb) step
>>   4  4
>> Program received signal SIGABRT, Aborted.
>>   4Couldn't get registers: No such process.
>> (m3gdb)
>>
> -----------------------------------------------------
>> And then without modifying the signal set:
>>
>> (m3gdb) break NThreads.m3:10
>> Breakpoint 1 at 0x804b934: file NThreads.m3, line
>> 10.
>> (m3gdb) break ThreadPThread.m3:1180
>> No source file named ThreadPThread.m3.
>> Make breakpoint pending on future shared library
>> load?
>> (y or [n]) y
>> Breakpoint 2 (ThreadPThread.m3:1180) pending.
>> (m3gdb) run
>> Starting program:
>> /home/danielb/code/m3/parallel/LINUXLIBC6/NThreads
>> [Thread debugging using libthread_db enabled]
>> [New Thread -1220532544 (LWP 8125)]
>> Breakpoint 3 at 0xb75d4dba: file ThreadPThread.m3,
>> line 1180.
>> Pending breakpoint "ThreadPThread.m3:1180" resolved
>> [Switching to Thread -1220532544 (LWP 8125)]
>>
>> Breakpoint 1, NThreads_M3_te29971a7_INIT
>> (L_2=0xb73c7010) at NThreads.m3:14
>> warning: Source file is more recent than executable.
>> 14          Closure = Thread.Closure OBJECT
>> (m3gdb) cont
>> Continuing.
>> [New Thread -1220805712 (LWP 8131)]
>>
>> Breakpoint 1, NThreads_M3_te29971a7_INIT
>> (L_2=0xb73c7058) at NThreads.m3:14
>> 14          Closure = Thread.Closure OBJECT
>> (m3gdb) cont
>> Continuing.
>> [New Thread -1229198416 (LWP 8132)]
>>   1
>> Breakpoint 1, NThreads_M3_te29971a7_INIT
>> (L_2=0xb73c70a0) at NThreads.m3:14
>> 14          Closure = Thread.Closure OBJECT
>> (m3gdb) cont
>> Continuing.
>>   1[New Thread -1237591120 (LWP 8133)]
>>   2  1
>> Breakpoint 1, NThreads_M3_te29971a7_INIT
>> (L_2=0xb73c70e8) at NThreads.m3:14
>> 14          Closure = Thread.Closure OBJECT
>> (m3gdb) cont
>> Continuing.
>>   2  1[New Thread -1245983824 (LWP 8134)]
>>   3  2  1
>> Breakpoint 1, NThreads_M3_te29971a7_INIT
>> (L_2=0xb73c7130) at NThreads.m3:14
>> 14          Closure = Thread.Closure OBJECT
>> (m3gdb) cont
>> Continuing.
>>   3  2  1[New Thread -1254376528 (LWP 8135)]
>>   3  2  1
>> Breakpoint 1, NThreads_M3_te29971a7_INIT
>> (L_2=0xb73c7178) at NThreads.m3:14
>> 14          Closure = Thread.Closure OBJECT
>> (m3gdb) cont
>> Continuing.
>>
>> Program received signal SIG64, Real-time event 64.
>> NThreads_M3_te29971a7_INIT (L_2=0xb73c7178) at
>> NThreads.m3:14
>> 14          Closure = Thread.Closure OBJECT
>> (m3gdb) cont
>> Continuing.
>>
>> Breakpoint 1, NThreads_M3_te29971a7_INIT
>> (L_2=0xb73c7178) at NThreads.m3:14
>> 14          Closure = Thread.Closure OBJECT
>> (m3gdb) cont
>> Continuing.
>>
>> Program received signal SIG64, Real-time event 64.
>> [Switching to Thread -1254376528 (LWP 8135)]
>> 0xffffe410 in __kernel_vsyscall ()
>> (m3gdb) cont
>> Continuing.
>>
>> Program received signal SIG64, Real-time event 64.
>> [Switching to Thread -1237591120 (LWP 8133)]
>> 0xffffe410 in __kernel_vsyscall ()
>> (m3gdb) cont
>> Continuing.
>>
>> Program received signal SIG64, Real-time event 64.
>> [Switching to Thread -1229198416 (LWP 8132)]
>> 0xffffe410 in __kernel_vsyscall ()
>> (m3gdb) cont
>> Continuing.
>>
>> Program received signal SIG64, Real-time event 64.
>> [Switching to Thread -1220805712 (LWP 8131)]
>> 0xffffe410 in __kernel_vsyscall ()
>> (m3gdb) cont
>> Continuing.
>> [Switching to Thread -1254376528 (LWP 8135)]
>>
>> Breakpoint 3, SignalHandler (sig=64,
>> sip=16_b53baf8c,
>> uap=16_b53bb00c) at ThreadPThread.m3:1180
>> 1180    ThreadPThread.m3: No such file or directory.
>>         in ThreadPThread.m3
>> (m3gdb) where
>> #0  SignalHandler (sig=64, sip=16_b53baf8c,
>>
> === message truncated ===
>
>
>
>
> ______________________________________________________________________ 
> ______________
> Sé un Mejor Amante del Cine
> ¿Quieres saber cómo? ¡Deja que otras personas te ayuden!
> http://advision.webevents.yahoo.com/reto/entretenimiento.html




More information about the M3devel mailing list