<pre><tt><tt>Hi:<br><br>Some things besides what found with mentor:<br><br>danielb@sl11:~$ mentor @M3stackdump<br><br><br>***<br>*** runtime error:<br>*** Thread client error: attempt to release an unlocked mutex<br>*** file "ThreadPThread.m3", line 168<br>***<br><br>------------------ EXCEPTION HANDLER STACK ---------------------<br>0xa22bab80 LOCK mutex = 0xb241b164<br>0xa22babd0 LOCK mutex = 0xb2416c78<br>0xa22bac30 LOCK mutex = 0xb2416d54<br>0xa22bac80 LOCK mutex = 0xb2416cd8<br>0xa22bacd0 LOCK mutex = 0xb2410378<br>0xa22bad20 LOCK mutex = 0xb23fa104<br>0xa22bad70 LOCK mutex = 0xb23fa370<br>0xa22badc0 LOCK mutex = 0xb23fa1f4<br>0xa22bae20 LOCK mutex = 0xb23fa288<br>0xa22bae58 RAISES {}<br>0xa22bb170 TRY-EXCEPT {0x718ac4e9}<br>0xa22bb250 TRY-EXCEPT {0x718ac4e9}<br>----------------------------------------------------------------<br>Cancelado<br>danielb@sl11:~$<br> <br>I didn't debugged mentor, but I tried another program, cvsup, <br>and with GUI
problems after a seconds the process finishes<br>but no advise of runtime error, however with no-gui It simply works well. <br><br>Also Im trying the examples of the parallel chapter of the book<br></tt></tt>"Programming in Modula-3" by Laszlo Boszormenyi & Carsten Weich, <i> <br></i><tt><tt>with the NThreads example (which you can download on the url<br>http://web.archive.org/web/19970814162826/www.ifi.uni-klu.ac.at/Modula-3/m3book/examples.html )<br>You will need the m3local library shipped and a m3makefile like this below:<br>import ("m3local")<br>implementation("NThreads")<br>program("NThreads")<br> <br>I get this on the console with the Pthread version:<br>the program will call Nl new line after a 10 is printed.<br></tt></tt> 9 10<br> 4 7 8 1 2 3 5 6 9 10<br> 4 10<br> 4 7 9 1 2 3 5 6 5 6 8 9 10<br> 1 2 3 4 7 3 4 5 6 8 6 8 9 3 4 5 7 10<br> 1 10<br> 1 2 3 4 5 6 7 8 9 7 8 9 10<br> 1 2 1 2 3 7 8 9 10<br> 4
5 4 5 6 7 8 9 10<br> 1 2 3 1 2 3 4 5 6 5 6 7 1 2 3 4 8 9 10<br> 5 6 7 1 2 3 4 3 4 8 1 2 5 6 7 9 10<br> 3 4 8 4 8 1 3 5 6 7 9 10<br> 9 10<br> 2 3 4 5 6 7 8 1 7 8 9 10<br> 2 10<br> 2 3 7 8 9 1 4 5 6 10<br> 2 3 7 8 9 1 9 1 4 7 8 10<br> 2 3 5 6 9 1 4 1 4 7 9 10<br> 2 3 5 6 5 6 8 9 10<br> 1 2 3 4 7 3 4 5 6 8 6 8 9 3 4 5 7 10<br> 1 10<br> 1 2 3 4 5 6 7 8 9 7 8 9 10<br> 1 2 1 2 3 7 8 9 10<br> 4 5 6 1 2 3 7 8 9 10<br> 9 10<br> 4 7 8 1 2 3 5 6 9 10<br> 4 10<br> 4 7 9 1 2 3 5 6 5 6 8 9 10<br> 1 2 3 4 7 3 4 5 6 8 6 8 9 3 4 5 7 10<br> 1 10<br> 1 2 3 4 5 6 7 8 9 7 8 9 10<br> 1 2 1 2 3 7 8 9 10<br> 4 5 6 1 2 3 7 8 9 10<br> 9 10<tt><tt> <br><br>But with the POSIX implementation, this is a extract of the out:<br>It ends according to the example until Return is
pressed.<br><br></tt></tt>9 8 7 6 5 4 3 2 1 10<br> 9 8 7 6 5 4 3 2 1 10<br> 9 8 7 6 5 4 3 2 1 10<br> 9 8 7 6 5 4 3 2 1 10<br> 9 8 7 6 5 4 3 2 1 10<br> 9 8 7 6 5 4 3 2 1 10<br> 9 8 7 6 5 4 3 2 1 10<br> 9 8 7 6 5 4 3 2 1 10<br> 9 8 7 6 5 4 3 2 1 10<br> 9 8 7 6 5 4 3 2 1 10<br> 9 8 7 6 5 4 3 2 1 10<br> 9 8 7 6 5 4 3 2 1 10<br> 9 8 7 6 5 4 3 2 1 10<br> 9 8 7 6 5 4 3 2 1 10<br> 9 8 7 6 5 4 3 2 1 10<br> 9 8 7 6 5 4 3 2 1 10<br> 9 8 7 6 5 4 3 2 1 10<br> 9 8 7 6 5 4 3 2 1 10<br> 9 8 7 6 5 4 3 2 1 10<br> 9 8 7 6 5 4 3 2 1 10<br>Certainly, and according to the book, the first one is more expectable.<br>I would like to know your opinions about this issue.<br>Besides with import("libsio") in place of import ("m3local") on the m3makefile<br>you get the numbers in a distribution similar to the above but the
number of digits <br>in each line is more uniform (ten by line) on the pthread version this time.<br><br>Besides I know the Upthread.i3 interface on <br>m3-libs/m3core/src/unix/linux-libc6 has a the procedure<br><br>PROCEDURE attr_setschedparam (VAR attr: pthread_attr_t;<br> READONLY param: struct_sched_param): int; <br>that could be useful to change the scheduling policy, but certainly <br>I didn't find with grep in all the cm3 distro where it is used.<br>The Round Robin policy according to the documentation<br>of pthreads, is only available on process running with superuser privileges.<br> <br>Thanks,<br>Daniel Benavides<br><tt><tt><br>> Tony Hosking hosking@cs.purdue.edu wrote: <br>> <br>> A stack trace would be useful. Perhaps you can run again with <br>> @M3stackdump specified
on the command line. Alternatively, if you <br>> run inside gdb you can show the stack dump at the point of the <br>> error <br>> by setting a breakpoint at line 168 in ThreadPThread.m3.<br>> <br>> I notice that you are using priority scheduling -- not sure what <br>> that <br>> will do to things. Can you try it with round robin scheduling?<br>> <br>> On Jan 31, 2007, at 12:05 PM, Daniel Alejandro Benavides D. wrote:<br>> <br>> > Hello:<br>> ><br>> > I have compiled the cm3 cvs updated with the Pthread support <br>> under <br>> > kubuntu 6.06 Linux. I have done this adding the value "PTHREAD" <br>> on <br>> > the array SYSTEM_LIBORDER<br>> ><br>> > SYSTEM_LIBORDER = [ "OPENGL", "DECPEX", "MOTIF", "X11", "TCP", <br>> "ODBC",> "POSTGRES95", "FLEX-BISON", "LEX-<br>> YACC", "LIBC", <br>> > "PTHREAD" ]<br>> ><br>> > and the variable "PTHREAD"
: [ "-L/usr/lib", "-lpthread" ],<br>> > on the array SYSTEM_LIBS<br>> ><br>> > But when running a mentor animation I get this runtime error <br>> > consistently about a seconds later after began an animation, then <br>> <br>> > this is the out:<br>> ><br>> > root@sl11:/home/danielb/cm3-5.4-Rc2/cm3/scripts# mentor showthread<br>> ><br>> ><br>> > ***<br>> > *** runtime error:<br>> > *** Thread client error: attempt to release an unlocked mutex<br>> > *** file "ThreadPThread.m3", line 168<br>> > ***<br>> ><br>> > Cancelado<br>> > root@sl11:/home/danielb/cm3-5.4-Rc2/cm3/scripts#<br>> ><br>> > This system has<br>> > "POSIX version set to 200112,<br>> > including support for priority scheduling"<br>> ><br>> > Thanks,<br>> > Daniel Benavides<br>> ><br>></tt></tt></pre><p>
<hr size=1><br><font face="Verdana" size="-2">LLama Gratis a cualquier PC del Mundo.<br>Llamadas a fijos y móviles desde 1 céntimo por minuto.<br><a href="http://us.rd.yahoo.com/mail/es/tagline/messenger/*http://es.voice.yahoo.com/">http://es.voice.yahoo.com</a></font>