[M3devel] A RT failure in ThreadPThread.Alert

Rodney M. Bates rodney.bates at wichita.edu
Fri Sep 14 04:02:49 CEST 2007


I got a runtime failure in ThreadPThread.Alert, on this line:

----------------------------------------------------------------------------------
PROCEDURE Alert (t: T) =
   BEGIN
     WITH r = Upthread.mutex_lock(cm) DO <*ASSERT r=0*> END;
     t.alerted := TRUE;
--> WITH r = Upthread.cond_signal(t.waitCond^) DO <*ASSERT r=0*> END;
     WITH r = Upthread.mutex_unlock(cm) DO <*ASSERT r=0*> END;
   END Alert;
------------------------------------------------------------------------------------
Here, t.waitCond is NIL and being dereferenced.  Here is a bit of debugger output:
The display of t is at the bottom.
------------------------------------------------------------------------------------


***
*** runtime error:
***    Attempt to reference an illegal memory location.
***    file "../src/thread/PTHREAD/ThreadPThread.m3", line 304
***

------------------ EXCEPTION HANDLER STACK ---------------------
0xb5eb71dc TRY-EXCEPT  {0xa893a19c}
0xb5eb72bc LOCK  mutex = 0xb436e0e4
0xb5eb731c LOCK  mutex = 0xb6ebbc44
----------------------------------------------------------------
[Switching to Thread -1242858592 (LWP 8289)]

Breakpoint 2, 0x08126a38 in InnerRuntimeFailureDialog () at AssertDevel.m3:272
272     ; PROCEDURE InnerRuntimeFailureDialog ( )
(m3gdb) bt
#0  0x08126a38 in InnerRuntimeFailureDialog () at AssertDevel.m3:272
#1  0x08126c89 in RuntimeFailureDialog () at AssertDevel.m3:314
#2  0xb72e596f in InvokeExitors () at RTProcess.m3:40
#3  0xb72e59e3 in Crash (msg=NIL) at RTProcess.m3:61
#4  0xb72e3648 in EndError (crash=TRUE) at RTError.m3:115
#5  0xb72e3389 in MsgS (file=16_b731de58, line=304, msgA=16_b7318068, msgB=16_b73126d4,
     msgC=16_b7318068) at RTError.m3:40
#6  0xb72e3a46 in Crash (a=
     RECORD exception = 16_b73124c0; arg = 16_0000000c; module = 16_b731e020; line = 304; pc = NIL; 
info0 = NIL; info1 = NIL; un_except = 16_b73124c0; un_arg = 16_00000004;  END, raises=FALSE,
     rte=16_b73124c0) at RTException.m3:79
#7  0xb72e3770 in DefaultBackstop (a=
     RECORD exception = 16_b73124c0; arg = 16_0000000c; module = 16_b731e020; line = 304; pc = NIL; 
info0 = NIL; info1 = NIL; un_except = 16_b73124c0; un_arg = 16_00000004;  END, raises=FALSE)
     at RTException.m3:39
#8  0xb72e36d4 in InvokeBackstop (a=
     RECORD exception = 16_b73124c0; arg = 16_0000000c; module = 16_b731e020; line = 304; pc = NIL; 
info0 = NIL; info1 = NIL; un_except = 16_b73124c0; un_arg = 16_00000004;  END, raises=FALSE)
     at RTException.m3:25
#9  0xb72f3397 in Raise (act=
     RECORD exception = 16_b73124c0; arg = 16_0000000c; module = 16_b731e020; line = 304; pc = NIL; 
info0 = NIL; info1 = NIL; un_except = 16_b73124c0; un_arg = 16_00000004;  END) at RTExFrame.m3:29
#10 0xb72e3810 in DefaultBackstop (a=
     RECORD exception = 16_b73124c0; arg = 16_0000000c; module = 16_b731e020; line = 304; pc = NIL; 
info0 = NIL; info1 = NIL; un_except = 16_b73124c0; un_arg = 16_00000004;  END, raises=FALSE)
     at RTException.m3:47
#11 0xb72e36d4 in InvokeBackstop (a=
     RECORD exception = 16_b73124c0; arg = 16_0000000c; module = 16_b731e020; line = 304; pc = NIL; 
info0 = NIL; info1 = NIL; un_except = 16_b73124c0; un_arg = 16_00000004;  END, raises=FALSE)
     at RTException.m3:25
#12 0xb72f3397 in Raise (act=
     RECORD exception = 16_b73124c0; arg = 16_0000000c; module = 16_b731e020; line = 304; pc = NIL; 
info0 = NIL; info1 = NIL; un_except = 16_b73124c0; un_arg = 16_00000004;  END) at RTExFrame.m3:29
#13 0xb72cb223 in ReportFault (module=16_b731e020, info=9732) at RTHooks.m3:110
#14 0xb72fb697 in _m3_fault (arg=9732) from /usr/local/cm3/pkg/m3core/LINUXLIBC6/libm3core.so.5
#15 0xb72f5cd7 in Alert (t=16_b3a9bdc8) at ThreadPThread.m3:304
#16 0xb7df741d in DisplayDir (v=16_b436e004) at FileBrowserVBT.m3:496
#17 0xb7df4d83 in Refresh (v=16_b436e004) at FileBrowserVBT.m3:210
#18 0xb7df5413 in Watcher (cl=16_b6ebbc9c) at FileBrowserVBT.m3:254
#19 0xb72f76f5 in RunThread (me=16_08e1c518) at ThreadPThread.m3:538
#20 0xb72f7403 in ThreadBase (param=16_08e1c518) at ThreadPThread.m3:519
#21 0xb707c540 in start_thread () from /lib/i686/libpthread.so.0
#22 0xb6fef55e in clone () from /lib/i686/libc.so.6
(m3gdb) frame 5
#5  0xb72e3389 in MsgS (file=16_b731de58, line=304, msgA=16_b7318068, msgB=16_b73126d4,
     msgC=16_b7318068) at RTError.m3:40
40      RTError.m3: No such file or directory.
         in RTError.m3
(m3gdb) p msgA
$1 = (*16_b7318068*) ""
(m3gdb) p msgB
$2 = (*16_b73126d4*) "Attempt to reference an illegal memory location."
(m3gdb) p msgC
$3 = (*16_b7318068*) ""
(m3gdb) frame 15
#15 0xb72f5cd7 in Alert (t=16_b3a9bdc8) at ThreadPThread.m3:304
304     ThreadPThread.m3: No such file or directory.
         in ThreadPThread.m3
(m3gdb) p t
$4 = (*16_b3a9bdc8*) OBJECT act = 16_08e94678; closure = NIL; result = NIL; cond = 16_b3a9bdf4;
     waitingOn = NIL; nextWaiter = NIL; waitCond = NIL; alerted = TRUE; completed = TRUE;
     joined = FALSE; id = 73;  END
(m3gdb)
-- 
-------------------------------------------------------------
Rodney M. Bates, retired assistant professor
Dept. of Computer Science, Wichita State University
Wichita, KS 67260-0083
316-978-3922
rodney.bates at wichita.edu



More information about the M3devel mailing list