[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