[M3devel] Mika's thread test, -tests read

Dragiša Durić dragisha at m3w.org
Sat Apr 28 08:49:25 CEST 2012


What is stack redzone? Undetected stack overflows or almost overflows?

It's not only AMD64_* if it's any consolation: :)

frodo:dragisha/pts/0: m3/thread/src% ../LINUXLIBC6/threadtest -tests read,alloc
Writing file...done
Creating read threads...done
Creating alloc threads...done
running...printing oldest/median age/newest
.

***
*** runtime error:
***    Segmentation violation - possible attempt to dereference NIL
***    pc = 0x80792f0 = Move + 0x54 in ../src/runtime/common/RTCollector.m3
***


On Apr 27, 2012, at 11:34 PM, Antony Hosking wrote:

> I wonder if we are not seeing the stack redzone on x86-64 and so losing references.
> 
> On Apr 27, 2012, at 5:11 PM, Dragiša Durić wrote:
> 
>> Yes. 
>> [New Thread 0x7ffff7fd1700 (LWP 24695)]
>> [New Thread 0x7ffff77d0700 (LWP 24696)]
>> [New Thread 0x7ffff6fcf700 (LWP 24697)]
>> done
>> running...printing oldest/median age/newest
>> .
>> Program received signal SIGSEGV, Segmentation fault.
>> [Switching to Thread 0x7ffff77d0700 (LWP 24696)]
>> 0x00000000004374e5 in RTCollector__Move (self=<error reading variable>, cp=<error reading variable>)
>>   at ../src/runtime/common/RTCollector.m3:409
>> 409	    IF hdr.typecode = RT0.TextLitTypecode THEN RETURN END;
>> (gdb) bt
>> ...
>> 
>> I am using unchanged thread test from m3core/tests/thread with only -tests nxread as argument. On AMD64_LINUX, mostly, although I had breaks on AMD64_DARWIN too.
>> 
>> I'll print future breaks with C stacks.
>> 
>> dd
>> 
>> On Apr 27, 2012, at 11:03 PM, Antony Hosking wrote:
>> 
>>> Is this one a SIGSEGV?
>>> 
>>> On Apr 27, 2012, at 3:30 PM, Dragiša Durić wrote:
>>> 
>>>> Interesting one.. RTCollector.Move. Thread suspension went well, looks like all problem is with AllocTraced() trigerring a collection.
>>>> 
>>>> dd
>>>> ===
>>>> (gdb) bt
>>>> #0  0x00000000004374e5 in RTCollector__Move (self=<error reading variable>, cp=<error reading variable>)
>>>> at ../src/runtime/common/RTCollector.m3:409
>>>> #1  0x000000000046c320 in RTHeapMap__Walk (x=<error reading variable>, pc=<error reading variable>, v=<error reading variable>)
>>>> at ../src/runtime/common/RTHeapMap.m3:202
>>>> #2  0x000000000046b9b7 in RTHeapMap__DoWalkRef (t=<error reading variable>, a=<error reading variable>, v=<error reading variable>)
>>>> at ../src/runtime/common/RTHeapMap.m3:62
>>>> #3  0x000000000046b979 in RTHeapMap__DoWalkRef (t=<error reading variable>, a=<error reading variable>, v=<error reading variable>)
>>>> at ../src/runtime/common/RTHeapMap.m3:57
>>>> #4  0x000000000046b979 in RTHeapMap__DoWalkRef (t=<error reading variable>, a=<error reading variable>, v=<error reading variable>)
>>>> at ../src/runtime/common/RTHeapMap.m3:57
>>>> #5  0x000000000046b90b in RTHeapMap__WalkRef (h=<error reading variable>, v=<error reading variable>) at ../src/runtime/common/RTHeapMap.m3:47
>>>> #6  0x0000000000439b8d in RTCollector__CleanBetween (h=<error reading variable>, he=<error reading variable>, clean=<error reading variable>)
>>>> at ../src/runtime/common/RTCollector.m3:1091
>>>> #7  0x0000000000439995 in RTCollector__CleanPage (page=<error reading variable>) at ../src/runtime/common/RTCollector.m3:1064
>>>> #8  0x0000000000439065 in RTCollector__CollectSomeInStateZero () at ../src/runtime/common/RTCollector.m3:885
>>>> #9  0x000000000043875b in RTCollector__CollectSome () at ../src/runtime/common/RTCollector.m3:720
>>>> #10 0x0000000000438438 in RTHeapRep__CollectEnough () at ../src/runtime/common/RTCollector.m3:654
>>>> #11 0x00000000004355c7 in RTAllocator__AllocTraced (dataSize=<error reading variable>, dataAlignment=<error reading variable>, 
>>>> thread=<error reading variable>) at ../src/runtime/common/RTAllocator.m3:367
>>>> #12 0x00000000004345f8 in RTAllocator__GetTracedObj (def=<error reading variable>) at ../src/runtime/common/RTAllocator.m3:224
>>>> #13 0x0000000000433efb in RTHooks__AllocateTracedObj (defn=<error reading variable>) at ../src/runtime/common/RTAllocator.m3:122
>>>> #14 0x000000000042a4eb in FilePosix__New (fd=<error reading variable>, ds=<error reading variable>) at ../src/os/POSIX/FilePosix.m3:63
>>>> #15 0x000000000042c286 in FS__OpenFileReadonly (pn=<error reading variable>) at ../src/os/POSIX/FSPosix.m3:182
>>>> #16 0x00000000004182f3 in FileRd__Open (p=<error reading variable>) at ../src/rw/FileRd.m3:16
>>>> #17 0x00000000004051c4 in Main__NApply (cl=<error reading variable>) at ../src/Main.m3:208
>>>> #18 0x0000000000451424 in ThreadPThread__RunThread (me=<error reading variable>) at ../src/thread/PTHREAD/ThreadPThread.m3:450
>>>> #19 0x00000000004510df in ThreadPThread__ThreadBase (param=<error reading variable>) at ../src/thread/PTHREAD/ThreadPThread.m3:422
>>>> #20 0x0000003bed807d90 in start_thread (arg=0x7ffff6fcf700) at pthread_create.c:309
>>>> #21 0x0000003bed4f0f5d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115
>>>> (gdb) info threads
>>>> Id   Target Id         Frame 
>>>> * 4    Thread 0x7ffff6fcf700 (LWP 24429) "threadtest" 0x00000000004374e5 in RTCollector__Move (self=<error reading variable>, 
>>>> cp=<error reading variable>) at ../src/runtime/common/RTCollector.m3:409
>>>> 3    Thread 0x7ffff77d0700 (LWP 24428) "threadtest" 0x0000003bed436604 in do_sigsuspend (set=0xeb41a0)
>>>> at ../sysdeps/unix/sysv/linux/sigsuspend.c:63
>>>> 2    Thread 0x7ffff7fd1700 (LWP 24427) "threadtest" 0x0000003bed436604 in do_sigsuspend (set=0xeb41a0)
>>>> at ../sysdeps/unix/sysv/linux/sigsuspend.c:63
>>>> 1    Thread 0x7ffff7fd3700 (LWP 24423) "threadtest" 0x0000003bed436604 in do_sigsuspend (set=0xeb41a0)
>>>> at ../sysdeps/unix/sysv/linux/sigsuspend.c:63
>>>> (gdb) thr 3
>>>> 
>>> 
>> 
> 




More information about the M3devel mailing list