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.

[RyuJIT/ARM32] GC fails with FindProcInfo #4626

@BredPet

Description

@BredPet

After I compile under Tizen ARM with RyuJIT and run some sample, that starts consuming more memory than usual the next crash occurs in GC:

Hello: CoreRT/src/Native/Runtime/unix/UnixContext.cpp:520: bool FindProcInfo(UIntNative, UIntNative *, UIntNative *): Assertion `(procInfo.start_ip <= controlPC) && (controlPC < procInfo.end_ip)' failed.
...
#0  0xb69f2094 in raise () from /lib/libc.so.6
#1  0xb69f33f0 in abort () from /lib/libc.so.6
#2  0xb69eaf0c in ?? () from /lib/libc.so.6
#3  0xb69eafe8 in __assert_fail () from /lib/libc.so.6
#4  0x001590d4 in FindProcInfo (controlPC=1659907, startAddress=0xbeffed58, lsda=0xbeffed54) at CoreRT/src/Native/Runtime/unix/UnixContext.cpp:520
#5  0x0015db56 in UnixNativeCodeManager::FindMethodInfo (this=0x509650, ControlPC=0x195403 <Hello_BinaryTrees_TreeNode___ctor+22>, pMethodInfoOut=0xbeffeef4) at CoreRT/src/Native/Runtime/unix/UnixNativeCodeManager.cpp:61
#6  0x00037d14 in StackFrameIterator::CalculateCurrentMethodState (this=0xbeffee58) at CoreRT/src/Native/Runtime/StackFrameIterator.cpp:1508
#7  0x0003ae48 in Thread::GcScanRootsWorker (this=0xb6ff74c8, pfnEnumCallback=0x85de1 <WKS::GCHeap::Promote(Object**, ScanContext*, unsigned int)>, pvCallbackData=0xbefff2b0, frameIterator=...) at CoreRT/src/Native/Runtime/thread.cpp:485
#8  0x0003ad32 in Thread::GcScanRoots (this=0xb6ff74c8, pfnEnumCallback=0x85de1 <WKS::GCHeap::Promote(Object**, ScanContext*, unsigned int)>, pvCallbackData=0xbefff2b0) at CoreRT/src/Native/Runtime/thread.cpp:408
#9  0x000264a8 in GCToEEInterface::GcScanRoots (fn=0x85de1 <WKS::GCHeap::Promote(Object**, ScanContext*, unsigned int)>, condemned=0, max_gen=2, sc=0xbefff2b0) at CoreRT/src/Native/Runtime/gcrhscan.cpp:85
#10 0x0014dd16 in GCScan::GcScanRoots (fn=0x85de1 <WKS::GCHeap::Promote(Object**, ScanContext*, unsigned int)>, condemned=0, max_gen=2, sc=0xbefff2b0) at CoreRT/src/Native/gc/gcscan.cpp:170
#11 0x0006c012 in WKS::gc_heap::mark_phase (condemned_gen_number=0, mark_only_p=0) at CoreRT/src/Native/Runtime/Full/../../gc/gc.cpp:19566
#12 0x000655e8 in WKS::gc_heap::gc1 () at CoreRT/src/Native/Runtime/Full/../../gc/gc.cpp:15262
#13 0x0007b068 in WKS::gc_heap::garbage_collect (n=0) at CoreRT/src/Native/Runtime/Full/../../gc/gc.cpp:16827
#14 0x0005b8e6 in WKS::GCHeap::GarbageCollectGeneration (this=0x4fb060, gen=0, reason=reason_alloc_soh) at CoreRT/src/Native/Runtime/Full/../../gc/gc.cpp:35162
#15 0x0005f848 in WKS::gc_heap::try_allocate_more_space (acontext=0xb6ff74c8, size=16, gen_number=0) at CoreRT/src/Native/Runtime/Full/../../gc/gc.cpp:13066
#16 0x0005f9d0 in WKS::gc_heap::allocate_more_space (acontext=0xb6ff74c8, size=16, alloc_generation_number=0) at CoreRT/src/Native/Runtime/Full/../../gc/gc.cpp:13362
#17 0x000b47c8 in WKS::gc_heap::allocate (jsize=16, acontext=0xb6ff74c8) at CoreRT/src/Native/Runtime/Full/../../gc/gc.cpp:13393
#18 WKS::GCHeap::Alloc (this=0x4fb060, context=0xb6ff74c8, size=16, flags=0) at CoreRT/src/Native/Runtime/Full/../../gc/gc.cpp:34508
#19 0x00023d4a in RhpGcAlloc (pEEType=0x494ffc, uFlags=0, cbSize=16, pTransitionFrame=0xbefffa10) at CoreRT/src/Native/Runtime/gcrhenv.cpp:273
#20 0x0016327c in RhpNewObject () at CoreRT/src/Native/Runtime/arm/AllocFast.S:78
#21 0x00494ffc in vtable for Boxed_Hello_BinaryTrees_TreeNode ()

It seems that libunwind returned wrong proc info for PC. Can anyone say something about this?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions