Skip to content
This repository was archived by the owner on Nov 1, 2020. It is now read-only.
This repository was archived by the owner on Nov 1, 2020. It is now read-only.

[armel] GC fails #6021

@jkotas

Description

@jkotas

From @BredPet on June 27, 2018 12:20

When I run applications with a small memory consumption, about 5 mb, everything is fine. But when consumption increases at least to 15, everything falls.

Thread 1 "usage2" received signal SIGSEGV, Segmentation fault.
GcInfoDecoder::SetIsInterruptibleCB (startOffset=3204414512, stopOffset=2138451712, hCallback=0x1) at /corert/src/Native/Runtime/Full/../coreclr/gcinfodecoder.cpp:77
77      /corert/src/Native/Runtime/Full/../coreclr/gcinfodecoder.cpp: No such file or directory.
(gdb) bt
#0  GcInfoDecoder::SetIsInterruptibleCB (startOffset=3204414512, stopOffset=2138451712, hCallback=0x1) at /corert/src/Native/Runtime/Full/../coreclr/gcinfodecoder.cpp:77
#1  0x000227e6 in StackFrameIterator::NextInternal (this=0xbeff7c20) at /corert/src/Native/Runtime/StackFrameIterator.cpp:1319
#2  0x00022726 in StackFrameIterator::Next (this=0xbeff7c20) at /corert/src/Native/Runtime/StackFrameIterator.cpp:1291
#3  0x00023b4a in Thread::GcScanRootsWorker (this=0xb6ff9f38, pfnEnumCallback=0x38a01 <WKS::GCHeap::Promote(Object**, ScanContext*, unsigned int)>, pvCallbackData=0xbeff7db8, 
    frameIterator=...) at /corert/src/Native/Runtime/thread.cpp:539
#4  0x00023a02 in Thread::GcScanRoots (this=0xb6ff9f38, pfnEnumCallback=0x7f762f00, pvCallbackData=0x1) at /corert/src/Native/Runtime/thread.cpp:411
#5  0x0001e6f6 in GCToEEInterface::GcScanRoots (fn=0x38a01 <WKS::GCHeap::Promote(Object**, ScanContext*, unsigned int)>, condemned=<optimized out>, max_gen=<optimized out>, 
    sc=<optimized out>) at /corert/src/Native/Runtime/gcrhscan.cpp:85
#6  0x00031f8e in WKS::gc_heap::mark_phase (condemned_gen_number=0, mark_only_p=0) at /corert/src/Native/Runtime/Full/../../gc/gc.cpp:19600
#7  0x000307ac in WKS::gc_heap::gc1 () at /corert/src/Native/Runtime/Full/../../gc/gc.cpp:15270
#8  0x00035e10 in WKS::gc_heap::garbage_collect (n=<optimized out>) at /corert/src/Native/Runtime/Full/../../gc/gc.cpp:16817
#9  0x0002e0c0 in WKS::GCHeap::GarbageCollectGeneration (this=<optimized out>, gen=0, reason=<optimized out>) at /corert/src/Native/Runtime/Full/../../gc/gc.cpp:35196
#10 0x0002f658 in WKS::gc_heap::try_allocate_more_space (acontext=<optimized out>, size=<optimized out>, gen_number=0)
    at /corert/src/Native/Runtime/Full/../../gc/gc.cpp:13074
#11 0x00043d6e in WKS::gc_heap::allocate_more_space (acontext=<optimized out>, alloc_generation_number=0, size=<optimized out>)
    at /corert/src/Native/Runtime/Full/../../gc/gc.cpp:13370
#12 WKS::gc_heap::allocate (jsize=16, acontext=0xb6ff9f38) at /corert/src/Native/Runtime/Full/../../gc/gc.cpp:13401
#13 WKS::GCHeap::Alloc (this=<optimized out>, context=0xb6ff9f38, size=16, flags=0) at /corert/src/Native/Runtime/Full/../../gc/gc.cpp:34542
#14 0x00053e90 in RhpNewObject () at /corert/src/Native/Runtime/arm/AllocFast.S:78
#15 0xb4c9001c in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)



Thread 1 "Hello_spec" received signal SIGABRT, Aborted.
0xb6cba094 in raise () from /lib/libc.so.6
(gdb) bt
#0  0xb6cba094 in raise () from /lib/libc.so.6
#1  0xb6cbb3f0 in abort () from /lib/libc.so.6
#2  0x0001fee2 in Assert (expr=0x3f963e "ASSERT_UNCONDITIONALLY", file=0x40e513 "/corert/src/Native/Runtime/unix/UnwindHelpers.cpp", line_num=358, 
    message=0x40e562 "LocateUnwindSections") at /corert/src/Native/Runtime/rhassert.cpp:25
#3  0x000c8842 in LocateUnwindSections (pc=940973) at /corert/src/Native/Runtime/unix/UnwindHelpers.cpp:358
#4  0x000c886c in UnwindHelpers::StepFrame (regs=0xbefff078) at /corert/src/Native/Runtime/unix/UnwindHelpers.cpp:370
#5  0x000be9f2 in VirtualUnwind (pRegisterSet=0xbefff078) at /corert/src/Native/Runtime/unix/UnixContext.cpp:612
#6  0x000c358a in UnixNativeCodeManager::UnwindStackFrame (this=0x613640, pMethodInfo=0xbefff104, pRegisterSet=0xbefff078, ppPreviousTransitionFrame=0xbeffef80)
    at /corert/src/Native/Runtime/unix/UnixNativeCodeManager.cpp:222
#7  0x00030a52 in StackFrameIterator::NextInternal (this=0xbefff068) at /corert/src/Native/Runtime/StackFrameIterator.cpp:1319
#8  0x00030958 in StackFrameIterator::Next (this=0xbefff068) at /corert/src/Native/Runtime/StackFrameIterator.cpp:1291
#9  0x00033554 in Thread::GcScanRootsWorker (this=0xb6ff9f38, pfnEnumCallback=0x7c5b9 <WKS::GCHeap::Promote(Object**, ScanContext*, unsigned int)>, pvCallbackData=0xbefff4a0, 
    frameIterator=...) at /corert/src/Native/Runtime/thread.cpp:539
#10 0x00033386 in Thread::GcScanRoots (this=0xb6ff9f38, pfnEnumCallback=0x7c5b9 <WKS::GCHeap::Promote(Object**, ScanContext*, unsigned int)>, pvCallbackData=0xbefff4a0)
    at /corert/src/Native/Runtime/thread.cpp:411
#11 0x0002598a in GCToEEInterface::GcScanRoots (fn=0x7c5b9 <WKS::GCHeap::Promote(Object**, ScanContext*, unsigned int)>, condemned=0, max_gen=2, sc=0xbefff4a0)
    at /corert/src/Native/Runtime/gcrhscan.cpp:85
#12 0x000b3440 in GCScan::GcScanRoots (fn=0x7c5b9 <WKS::GCHeap::Promote(Object**, ScanContext*, unsigned int)>, condemned=0, max_gen=2, sc=0xbefff4a0)
    at /corert/src/Native/gc/gcscan.cpp:170
#13 0x00063422 in WKS::gc_heap::mark_phase (condemned_gen_number=0, mark_only_p=0) at /corert/src/Native/Runtime/Full/../../gc/gc.cpp:19600
#14 0x0005d0f4 in WKS::gc_heap::gc1 () at /corert/src/Native/Runtime/Full/../../gc/gc.cpp:15270
#15 0x00071ec2 in WKS::gc_heap::garbage_collect (n=0) at /corert/src/Native/Runtime/Full/../../gc/gc.cpp:16861
#16 0x0005385e in WKS::GCHeap::GarbageCollectGeneration (this=0x605020, gen=0, reason=reason_alloc_soh) at /corert/src/Native/Runtime/Full/../../gc/gc.cpp:35196
#17 0x00057550 in WKS::gc_heap::try_allocate_more_space (acontext=0xb6ff9f38, size=24012, gen_number=0) at /corert/src/Native/Runtime/Full/../../gc/gc.cpp:13074
#18 0x000576b8 in WKS::gc_heap::allocate_more_space (acontext=0xb6ff9f38, size=24012, alloc_generation_number=0) at /corert/src/Native/Runtime/Full/../../gc/gc.cpp:13370
#19 0x000a9d3c in WKS::gc_heap::allocate (jsize=24012, acontext=0xb6ff9f38) at /corert/src/Native/Runtime/Full/../../gc/gc.cpp:13401
#20 WKS::GCHeap::Alloc (this=0x605020, context=0xb6ff9f38, size=24012, flags=0) at /corert/src/Native/Runtime/Full/../../gc/gc.cpp:34542
#21 0x00023260 in RhpGcAlloc (pEEType=0x5e3f18, uFlags=0, cbSize=24012, pTransitionFrame=0xbefffb78) at /corert/src/Native/Runtime/gcrhenv.cpp:273
#22 0x000c8b96 in RhpNewArrayRare () at /corert/src/Native/Runtime/arm/AllocFast.S:324
#23 0x005e3f18 in vtable for __Array<Char> ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)


With portable c++ implementation of RhpNewArray, RhpNewFast, RhNewString and RhpNewFinalizable:
#0  0xb6cba094 in raise () from /lib/libc.so.6
#1  0xb6cbb3f0 in abort () from /lib/libc.so.6
#2  0x0001fee2 in Assert (expr=0x3fc61d "m_pHackPInvokeTunnel != NULL", file=0x3fc63a "/corert/src/Native/Runtime/thread.cpp", line_num=142, message=0x0)
    at /corert/src/Native/Runtime/rhassert.cpp:25
#3  0x000330d0 in Thread::EnablePreemptiveMode (this=0xb6ff9f38) at /corert/src/Native/Runtime/thread.cpp:142
#4  0x00023e9e in GCToEEInterface::EnablePreemptiveGC (pThread=0xb6ff9f38) at /corert/src/Native/Runtime/gcrhenv.cpp:1010
#5  0x00037816 in WKS::gc_heap::enable_preemptive (current_thread=0xb6ff9f38) at /corert/src/Native/Runtime/Full/../../gc/gc.cpp:1788
#6  0x00053ba2 in WKS::GCHeap::GarbageCollectGeneration (this=0x605020, gen=0, reason=reason_alloc_soh) at /corert/src/Native/Runtime/Full/../../gc/gc.cpp:35141
#7  0x00057988 in WKS::gc_heap::try_allocate_more_space (acontext=0xb6ff9f38, size=24012, gen_number=0) at /corert/src/Native/Runtime/Full/../../gc/gc.cpp:13074
#8  0x00057af0 in WKS::gc_heap::allocate_more_space (acontext=0xb6ff9f38, size=24012, alloc_generation_number=0) at /corert/src/Native/Runtime/Full/../../gc/gc.cpp:13370
#9  0x000aa174 in WKS::gc_heap::allocate (jsize=24012, acontext=0xb6ff9f38) at /corert/src/Native/Runtime/Full/../../gc/gc.cpp:13401
#10 WKS::GCHeap::Alloc (this=0x605020, context=0xb6ff9f38, size=24012, flags=0) at /corert/src/Native/Runtime/Full/../../gc/gc.cpp:34542
#11 0x00023260 in RhpGcAlloc (pEEType=0x5e3f18, uFlags=0, cbSize=24012, pTransitionFrame=0x0) at /corert/src/Native/Runtime/gcrhenv.cpp:273
#12 0x000296ca in RhpNewArray (pArrayEEType=0x5e3f18, numElements=3000) at /corert/src/Native/Runtime/portable.cpp:160
#13 0x000e5e54 in Hello_SpectralNorm__MultiplyAtAv (this=..., n=3000, v=..., AtAv=...) at /corert/tests/src/Simple/Hello/Hello.cs:128
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

@dotnet/arm32-corert-contrib

Copied from original issue: dotnet/coreclr#18669

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions