[M3devel] Assert failure in ThreadPThread.m3

Rodney M. Bates rodney.bates at wichita.edu
Sat Feb 21 00:36:07 CET 2009


I got an assertion failure in ThreadPThread.m3.

Here is a transcript.  Below that is a more helpful backtrace I got by
manually stopping it as quickly as I could after the assertion failure
messages.  I think the second backtrace is not on the relevant thread
however, because commenting out the Thread.Pause does not make the failure
go away, just makes it harder to catch.

Note: I have a lot of weakref cleanups registered.  Executing
RTCollector.Disable ( )  early in the program and leaving it
disabled makes the problem go away.


---------------------------------------------------------------------------------------------------------------------

rodney at yellowstone:~/proj/m3/cm3-new/cm3/m3-libs/m3core/tests/newtext/src$ m3gdb 
test
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-pc-linux-gnu"...Using host libthread_db library 
"/lib/tls/i686/cmov/libthread_db.so.1".

(m3gdb) run -nos
Starting program: 
/home/rodney/proj/m3/cm3-new/cm3/m3-libs/m3core/tests/newtext/src/test -nos
Signal        Stop      Print   Pass to program Description
SIG64         No        No      Yes             Real-time event 64
[Thread debugging using libthread_db enabled]
[New LWP 32595]
Estimating overhead of timing.
Generating initial leaf strings.
Generating initial leaf strings.

       0\
Garbage collection disabled for better timing.

      62[New Thread -1220703344 (LWP 32598)]
[New Thread -1220429104 (LWP 32595)]
....+....1....+....2....+....3....+....4....+....|
    5000....+....6....+....7....+....8....+....9....+....|
   10000....+....1....+....2....+....3....+....4....+....|
   15000....+....6....+....7....+....8....+....9....+....|
   20000....+....1....+....2....+....3....+....4....+....|
   25000....+....6....+....7....+....8....+....9....+....|
   30000....+....1....+....2....+....3....+....4....+....|
   35000....+....6....+....7....+....8....+....9....+....|
   40000....+....1....+....2....+....3....+....4....+....|
   45000....+....6....+....7....+....8....+....9....+....|
   50000

Garbage collection enabled and triggered ...

***
*** runtime error:
***    <*ASSERT*> failed.
***    file "../src/thread/PTHREAD/ThreadPThread.m3", line 1449
***

Garbage collection completed.

Program received signal SIGINT, Interrupt.
[Switching to Thread -1220429104 (LWP 32595)]
0xb7f7d410 in __kernel_vsyscall ()
(m3gdb) bt
#0  0xb7f7d410 in __kernel_vsyscall ()
#1  0xb7577589 in __lll_lock_wait () from /lib/tls/i686/cmov/libpthread.so.0
#2  0xb7572ba6 in _L_lock_95 () from /lib/tls/i686/cmov/libpthread.so.0
../../gdb/gdb/dwarf2-frame.c:490: internal-error: Unknown CFI encountered.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) y
../../gdb/gdb/dwarf2-frame.c:490: internal-error: Unknown CFI encountered.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Create a core file of GDB? (y or n) y
Aborted (core dumped)
---------------------------------------------------------------------------------------------------------------------
Garbage collection enabled and triggered ...

***
*** runtime error:
***    <*ASSERT*> failed.
***    file "../src/thread/PTHREAD/ThreadPThread.m3", line 1449
***


Program received signal SIGINT, Interrupt.
[Switching to Thread -1220732208 (LWP 32623)]
0xb7f33410 in __kernel_vsyscall ()
(m3gdb) bt
#0  0xb7f33410 in __kernel_vsyscall ()
#1  0xb752e196 in __nanosleep_nocancel () from /lib/tls/i686/cmov/libpthread.so.0
#2  0xb75cd016 in XPause (self=Invalid C/C++ type code 26 in symbol table.
) at ../src/thread/PTHREAD/ThreadPThread.m3:651
#3  0xb75cd193 in Pause (n=Invalid C/C++ type code 44 in symbol table.
) at ../src/thread/PTHREAD/ThreadPThread.m3:668
Can't find child block 1, at level 1, of parent procedure "Test__GetParams", for 
nested procedure "Test__GetParams__1__1__NumArg.778"
#4  0x08054c4c in ResumeCollection () at ../src/Test.m3:1354
#5  0x0805631b in FillBase (N=Invalid C/C++ type code 40 in symbol table.
) at ../src/Test.m3:1628
#6  0x0805b764 in Work () at ../src/Test.m3:2536
#7  0x0805d387 in Test (mode=Invalid C/C++ type code 39 in symbol table.
) at ../src/Test.m3:2658
#8  0xb75ba22c in RunMainBody (m=Invalid C/C++ type code 29 in symbol table.
) at ../src/runtime/common/RTLinker.m3:399
#9  0xb75b95e6 in AddUnitI (m=Invalid C/C++ type code 29 in symbol table.
) at ../src/runtime/common/RTLinker.m3:113
#10 0xb75b9674 in AddUnit (b=Invalid C/C++ type code 31 in symbol table.
) at ../src/runtime/common/RTLinker.m3:122
#11 0x08049f7e in main (argc=2, argv=0xbfdd4424, envp=0xbfdd4430) at _m3main.mc:4
#12 0xb73e8450 in __libc_start_main () from /lib/tls/i686/cmov/libc.so.6
#13 0x08049ed1 in _start ()
(m3gdb) frame 4
#4  0x08054c4c in ResumeCollection () at ../src/Test.m3:1354
1354        ; Thread . Pause ( 2.0D0 )
Current language:  auto; currently Modula-3
(m3gdb) down
#3  0xb75cd193 in Pause (n=Invalid C/C++ type code 44 in symbol table.
) at ../src/thread/PTHREAD/ThreadPThread.m3:668
668           XPause(self, n, alertable := FALSE);
(m3gdb) down
#2  0xb75cd016 in XPause (self=16_b66607ac, n=Invalid C/C++ type code 44 in 
symbol table.
) at ../src/thread/PTHREAD/ThreadPThread.m3:651
651           WITH r = Utime.nanosleep(amount, remaining) DO
(m3gdb) down
#1  0xb752e196 in __nanosleep_nocancel () from /lib/tls/i686/cmov/libpthread.so.0
(m3gdb) down
#0  0xb7f33410 in __kernel_vsyscall ()
(m3gdb)


---------------------------------------------------------------------------------------------------------------------



More information about the M3devel mailing list