[M3devel] problem using -DPTHREAD
Tony Hosking
hosking at cs.purdue.edu
Tue Feb 13 17:25:19 CET 2007
With the latest check-ins to the cm3 CVS repository I am now able to
bootstrap and run programs (including those with X11 graphics) on
Fedora Core 6 (Zod). Please try rebuilding from sources.
On Feb 5, 2007, at 11:42 PM, Daniel Alejandro Benavides D. wrote:
> Hi Tony:
> I could catch this too, but definitely is more easy with all the
> views all of the algorithm,
> Bar Code view, Tree View, Modula-3 Code View, and Transcript View
> of the same algorithm and same session, with 2 views, is harder to
> end abnormally the process
> under m3gdb.
> Here it is the out of this mentor m3gdb session:
>
> Program received signal SIGXCPU, CPU time limit exceeded.
>
> Program received signal SIGXCPU, CPU time limit exceeded.
>
> Program received signal SIGXCPU, CPU time limit exceeded.
> [Switching to Thread -1515197520 (LWP 1748)]
>
> Breakpoint 1, InnerUnlockMutex (m=16_b232fb40, self=16_acab94c4)
> at ThreadPThread.m3:168
> warning: Source file is more recent than executable.
> ---Type <return> to continue, or q <return> to quit---
> 168 Die(ThisLine(), "attempt to release an unlocked mutex");
>
> (m3gdb) where
> #0 InnerUnlockMutex (m=16_b232fb40, self=16_acab94c4) at
> ThreadPThread.m3:168
> #1 0xb70cff69 in UnlockMutex (m=16_b232fb40) at ThreadPThread.m3:189
> #2 0xb7ae3ff9 in SyncDefault (v=16_b232fb40, ch=16_b344f164,
> wait=TRUE)
> at VBTClass.m3:799
> #3 0xb7addd9f in Sync (v=16_b344f164, wait=TRUE) at VBT.m3:1167
> #4 0xb7b20371 in Sync (v=16_b232f9d0, ch=16_b232faac, wait=TRUE)
> at JoinedVBT.m3:101
> #5 0xb7ae3fd6 in SyncDefault (v=16_b232faac, ch=16_b232fa30,
> wait=TRUE)
> at VBTClass.m3:797
> #6 0xb7ae3fd6 in SyncDefault (v=16_b232fa30, ch=16_b232f1ac,
> wait=TRUE)
> at VBTClass.m3:797
> #7 0xb7ae3fd6 in SyncDefault (v=16_b232f1ac, ch=16_b1a7408c,
> wait=TRUE)
> at VBTClass.m3:797
> #8 0xb7ae3fd6 in SyncDefault (v=16_b1a7408c, ch=16_b1a742f8,
> wait=TRUE)
> at VBTClass.m3:797
> #9 0xb7ae3fd6 in SyncDefault (v=16_b1a742f8, ch=16_b1a7417c,
> wait=TRUE)
> at VBTClass.m3:797
> #10 0xb7addd9f in Sync (v=16_b1a7417c, wait=TRUE) at VBT.m3:1167
> #11 0xb7d0e5f3 in MGRedisplay (v=16_b1a7417c, br=
> RECORD r = RECORD west = 0; east = 0; north = 0; south = 0; END; p
> = NIL; END) at MGV.m3:146
> #12 0xb7cfdb90 in DoAnimation (t=16_b1a836e0, time=1,
> timePrev=0.377209276,
> v=16_b1a7417c, mg=NIL) at Animate.m3:57
> ---Type <return> to continue, or q <return> to quit---
> #13 0xb7cfdd2b in Do (t=16_b1a836e0, mg=NIL, v=16_b1a7417c,
> duration=1)
> at Animate.m3:81
> #14 0xb7d0f6d1 in Animation (v=16_b1a7417c, duration=1) at MGV.m3:313
> #15 0xb7d3ffdc in AnimateGraph (graph=16_b1a7408c, t0=0, t1=1)
> at GraphVBT.m3:656
> #16 0x0815a814 in Pause (view=16_b232f1ac) at PQBarView.m3:262
> #17 0x0815ac75 in Compare (view=16_b232f1ac, k=12, n=13) at
> PQBarView.m3:275
> #18 0x0814c38f in OEDispatcher (v=16_b232f1ac, evt=16_b17ed424)
> at PQueueIE.m3:120
> #19 0xb7dad9db in ViewThread (self=16_acab94b8) at Zeus.m3:331
> #20 0xb70d2382 in RunThread (me=16_08364ea8) at ThreadPThread.m3:548
> #21 0xb70d1f61 in ThreadBase (param=16_08364ea8) at
> ThreadPThread.m3:518
> #22 0xb6e70341 in start_thread () from /lib/tls/i686/cmov/
> libpthread.so.0
> #23 0xb6e044ee in clone () from /lib/tls/i686/cmov/libc.so.6
> (m3gdb) step
>
> Program received signal SIG64, Real-time event 64.
>
>
> ***
> *** runtime error:
> *** Thread client error: attempt to release an unlocked mutex
> Program received signal SIG64, Real-time event 64.
>
> Program received signal SIG64, Real-time event 64.
>
> Program received signal SIG64, Real-time event 64.
>
> Program received signal SIG64, Real-time event 64.
>
> Thanks,
> Daniel Benavides
>
> >Can you run under gdb and get a stack trace using the "where" command
> >when the call to Die occurs?
>
> On Feb 1, 2007, at 3:34 PM, Daniel Alejandro Benavides D. wrote:
>
> > Hi:
> >
> > Some things besides what found with mentor:
> >
> > danielb at sl11:~$ mentor @M3stackdump
> >
> >
> > ***
> > *** runtime error:
> > *** Thread client error: attempt to release an unlocked mutex
> > *** file "ThreadPThread.m3", line 168
> > ***
> >
> > ------------------ EXCEPTION HANDLER STACK ---------------------
> > 0xa22bab80 LOCK mutex = 0xb241b164
> > 0xa22babd0 LOCK mutex = 0xb2416c78
> > 0xa22bac30 LOCK mutex = 0xb2416d54
> > 0xa22bac80 LOCK mutex = 0xb2416cd8
> > 0xa22bacd0 LOCK mutex = 0xb2410378
> > 0xa22bad20 LOCK mutex = 0xb23fa104
> > 0xa22bad70 LOCK mutex = 0xb23fa370
> > 0xa22badc0 LOCK mutex = 0xb23fa1f4
> > 0xa22bae20 LOCK mutex = 0xb23fa288
> > 0xa22bae58 RAISES {}
> > 0xa22bb170 TRY-EXCEPT {0x718ac4e9}
> > 0xa22bb250 TRY-EXCEPT {0x718ac4e9}
> > ----------------------------------------------------------------
> > Cancelado
> > danielb at sl11:~$
> >
> > I didn't debugged mentor, but I tried another program, cvsup,
> > and with GUI problems after a seconds the process finishes
> > but no advise of runtime error, however with no-gui It simply works
> > well.
> >
> > Also Im trying the examples of the parallel chapter of the book
> > "Programming in Modula-3" by Laszlo Boszormenyi & Carsten Weich,
> > with the NThreads example (which you can download on the url
> > http://web.archive.org/web/19970814162826/www.ifi.uni-klu.ac.at/
> > Modula-3/m3book/examples.html )
> > You will need the m3local library shipped and a m3makefile like
> > this below:
> > import ("m3local")
> > implementation("NThreads")
> > program("NThreads")
> >
> > I get this on the console with the Pthread version:
> > the program will call Nl new line after a 10 is printed.
> > 9 10
> > 4 7 8 1 2 3 5 6 9 10
> > 4 10
> > 4 7 9 1 2 3 5 6 5 6 8 9 10
> > 1 2 3 4 7 3 4 5 6 8 6 8 9 3 4 5 7 10
> > 1 10
> > 1 2 3 4 5 6 7 8 9 7 8 9 10
> > 1 2 1 2 3 7 8 9 10
> > 4 5 4 5 6 7 8 9 10
> > 1 2 3 1 2 3 4 5 6 5 6 7 1 2 3 4 8 9 10
> > 5 6 7 1 2 3 4 3 4 8 1 2 5 6 7 9 10
> > 3 4 8 4 8 1 3 5 6 7 9 10
> > 9 10
> > 2 3 4 5 6 7 8 1 7 8 9 10
> > 2 10
> > 2 3 7 8 9 1 4 5 6 10
> > 2 3 7 8 9 1 9 1 4 7 8 10
> > 2 3 5 6 9 1 4 1 4 7 9 10
> > 2 3 5 6 5 6 8 9 10
> > 1 2 3 4 7 3 4 5 6 8 6 8 9 3 4 5 7 10
> > 1 10
> > 1 2 3 4 5 6 7 8 9 7 8 9 10
> > 1 2 1 2 3 7 8 9 10
> > 4 5 6 1 2 3 7 8 9 10
> > 9 10
> > 4 7 8 1 2 3 5 6 9 10
> > 4 10
> > 4 7 9 1 2 3 5 6 5 6 8 9 10
> > 1 2 3 4 7 3 4 5 6 8 6 8 9 3 4 5 7 10
> > 1 10
> > 1 2 3 4 5 6 7 8 9 7 8 9 10
> > 1 2 1 2 3 7 8 9 10
> > 4 5 6 1 2 3 7 8 9 10
> > 9 10
> >
> > But with the POSIX implementation, this is a extract of the out:
> > It ends according to the example until Return is pressed.
> >
> > 9 8 7 6 5 4 3 2 1 10
> > 9 8 7 6 5 4 3 2 1 10
> > 9 8 7 6 5 4 3 2 1 10
> > 9 8 7 6 5 4 3 2 1 10
> > 9 8 7 6 5 4 3 2 1 10
> > 9 8 7 6 5 4 3 2 1 10
> > 9 8 7 6 5 4 3 2 1 10
> > 9 8 7 6 5 4 3 2 1 10
> > 9 8 7 6 5 4 3 2 1 10
> > 9 8 7 6 5 4 3 2 1 10
> > 9 8 7 6 5 4 3 2 1 10
> > 9 8 7 6 5 4 3 2 1 10
> > 9 8 7 6 5 4 3 2 1 10
> > 9 8 7 6 5 4 3 2 1 10
> > 9 8 7 6 5 4 3 2 1 10
> > 9 8 7 6 5 4 3 2 1 10
> > 9 8 7 6 5 4 3 2 1 10
> > 9 8 7 6 5 4 3 2 1 10
> > 9 8 7 6 5 4 3 2 1 10
> > 9 8 7 6 5 4 3 2 1 10
> > Certainly, and according to the book, the first one is more
> > expectable.
> > I would like to know your opinions about this issue.
> > Besides with import("libsio") in place of import ("m3local") on the
> > m3makefile
> > you get the numbers in a distribution similar to the above but the
> > number of digits
> > in each line is more uniform (ten by line) on the pthread version
> > this time.
> >
> > Besides I know the Upthread.i3 interface on
> > m3-libs/m3core/src/unix/linux-libc6 has a the procedure
> >
> > PROCEDURE attr_setschedparam (VAR attr: pthread_attr_t;
> > READONLY param: struct_sched_param):
> > int;
> > that could be useful to change the scheduling policy, but certainly
> > I didn't find with grep in all the cm3 distro where it is used.
> > The Round Robin policy according to the documentation
> > of pthreads, is only available on process running with superuser
> > privileges.
> >
> > Thanks,
> > Daniel Benavides
> >
> > > Tony Hosking hosking at cs.purdue.edu wrote:
> > >
> > > A stack trace would be useful. Perhaps you can run again with
> > > @M3stackdump specified on the command line. Alternatively, if you
> > > run inside gdb you can show the stack dump at the point of the
> > > error
> > > by setting a breakpoint at line 168 in ThreadPThread.m3.
> > >
> > > I notice that you are using priority scheduling -- not sure what
> > > that
> > > will do to things. Can you try it with round robin scheduling?
> > >
> > > On Jan 31, 2007, at 12:05 PM, Daniel Alejandro Benavides D. wrote:
> > >
> > > > Hello:
> > > >
> > > > I have compiled the cm3 cvs updated with the Pthread support
> > > under
> > > > kubuntu 6.06 Linux. I have done this adding the value "PTHREAD"
> > > on
> > > > the array SYSTEM_LIBORDER
> > > >
> > > > SYSTEM_LIBORDER = [ "OPENGL", "DECPEX", "MOTIF", "X11", "TCP",
> > > "ODBC",> "POSTGRES95", "FLEX-BISON", "LEX-
> > > YACC", "LIBC",
> > > > "PTHREAD" ]
> > > >
> > > > and the variable "PTHREAD" : [ "-L/usr/lib", "-lpthread" ],
> > > > on the array SYSTEM_LIBS
> > > >
> > > > But when running a mentor animation I get this runtime error
> > > > consistently about a seconds later after began an animation,
> then
> > >
> > > > this is the out:
> > > >
> > > > root at sl11:/home/danielb/cm3-5.4-Rc2/cm3/scripts# mentor
> showthread
> > > >
> > > >
> > > > ***
> > > > *** runtime error:
> > > > *** Thread client error: attempt to release an unlocked mutex
> > > > *** file "ThreadPThread.m3", line 168
> > > > ***
> > > >
> > > > Cancelado
> > > > root at sl11:/home/danielb/cm3-5.4-Rc2/cm3/scripts#
> > > >
> > > > This system has
> > > > "POSIX version set to 200112,
> > > > including support for priority scheduling"
> > > >
> > > > Thanks,
> > > > Daniel Benavides
> > > >
>
>
>
> LLama Gratis a cualquier PC del Mundo.
> Llamadas a fijos y móviles desde 1 céntimo por minuto.
> http://es.voice.yahoo.com
More information about the M3devel
mailing list