[Mono-dev] Assert in mini-arm.c
Zoltan Varga
vargaz at gmail.com
Wed Aug 14 23:51:44 UTC 2013
Yes.
Zoltan
On Thu, Aug 15, 2013 at 1:23 AM, Bassam Tabbara <bassam at symform.com> wrote:
> If I disable the assert the application continues to work and completes:
>
>
> https://github.com/symform/mono/commit/859aa7fcd0fcb9017f45d8bfb59cfe8907f413d3
>
> If I understand things correctly if the patching fails on the call-site
> the trampoline will remain in place and the code will have to get JITed
> again on the next invocation. This seems like a better outcome than
> asserting.
>
> Does this seem like a reasonable workaround until you find the root
> cause here?
>
> From: Bassam Tabbara <bassam at symform.com>
> Date: Wednesday, August 14, 2013 1:07 PM
>
> To: Zoltan Varga <vargaz at gmail.com>
> Cc: "mono-devel-list at lists.ximian.com" <mono-devel-list at lists.ximian.com>
> Subject: Re: [Mono-dev] Assert in mini-arm.c
>
> I tried increasing MIN_PAGES in mono-codeman.c to 32 and still didn't
> help.
>
> Is there another workaround that could help here?
>
> From: Bassam Tabbara <bassam at symform.com>
> Date: Wednesday, August 14, 2013 12:26 AM
> To: Zoltan Varga <vargaz at gmail.com>
> Cc: "mono-devel-list at lists.ximian.com" <mono-devel-list at lists.ximian.com>
> Subject: Re: [Mono-dev] Assert in mini-arm.c
>
> Here it is. Note that this run was compiled with BIND_ROOM set to 4 as
> you recommended.
>
> #2 0x00172c44 in arm_patch (code=0x407b05c8
> "\357\376\377\353\367\377\377\352\340A-\351\004\320M\342", target=0x5da1ebe0
> "\r\300\240\341\360_-\351(\320M\342$\311\377\353") at mini-arm.c:3530
>
> (gdb) x/10i code
> 0x407b05c8: bl 0x407b018c
> 0x407b05cc: b 0x407b05b0
> 0x407b05d0: push {r5, r6, r7, r8, lr}
> 0x407b05d4: sub sp, sp, #4
> 0x407b05d8: mov r5, r0
> 0x407b05dc: mov r6, r1
> 0x407b05e0: mov r7, r2
> 0x407b05e4: orr r0, r5, r6
> 0x407b05e8: and r0, r0, #3
> 0x407b05ec: cmp r0, #0
>
> (gdb) x/10i target
> 0x5da1ebe0: mov r12, sp
> 0x5da1ebe4: push {r4, r5, r6, r7, r8, r9, r10, r11, r12, lr}
> 0x5da1ebe8: sub sp, sp, #40 ; 0x28
> 0x5da1ebec: bl 0x5da11084
> 0x5da1ebf0: add r1, sp, #0
> 0x5da1ebf4: str r0, [r1, #4]
> 0x5da1ebf8: ldr r12, [r0]
> 0x5da1ebfc: str r12, [r1]
> 0x5da1ec00: str r1, [r0]
> 0x5da1ec04: str sp, [r1, #12]
>
> Let me know if there is anything else I can provide.
>
> From: Zoltan Varga <vargaz at gmail.com>
> Date: Tuesday, August 13, 2013 5:15 PM
> To: Bassam Tabbara <bassam at symform.com>
> Cc: "mono-devel-list at lists.ximian.com" <mono-devel-list at lists.ximian.com>
> Subject: Re: [Mono-dev] Assert in mini-arm.c
>
> I meant frame #2, i.e.
> #2 0x00172ca8 in arm_patch
>
> Zoltan
>
>
> On Wed, Aug 14, 2013 at 2:14 AM, Zoltan Varga <vargaz at gmail.com> wrote:
>
>> Hi,
>>
>> Can you see whats at 'code' and 'target' at frame #3, i.e.
>> x/10i code
>> x/10i target
>>
>> Zoltan
>>
>>
>> On Wed, Aug 14, 2013 at 1:48 AM, Bassam Tabbara <bassam at symform.com>wrote:
>>
>>> Unfortunately that did not help. Still seeing the problem. I'm still
>>> working on a test case but I'm not having much luck so far in getting an
>>> isolated repro.
>>>
>>> I was able to get a debugger attached to the process right when
>>> handle_thunk asserts, and there were 6 threads with the following call
>>> stack:
>>>
>>> Thread 5 (Thread 0x558ff460 (LWP 9201)):
>>> #0 handle_thunk (method=0x0, domain=0x4ce44e58, absolute=1,
>>> code=0x427f8f08 "Q\364\377\353\367\377\377\352",
>>> target=0x511f02a0 "\r\300\240\341\360_-\351(\320M\342k\323\377\353",
>>> dyn_code_mp=0x0) at mini-arm.c:3373
>>> #1 0x00172764 in arm_patch_general (method=0x0, domain=0x0,
>>> code=0x427f8f08 "Q\364\377\353\367\377\377\352",
>>> target=0x511f02a0 "\r\300\240\341\360_-\351(\320M\342k\323\377\353",
>>> dyn_code_mp=0x0) at mini-arm.c:3425
>>> #2 0x00172ca8 in arm_patch (code=0x427f8f08
>>> "Q\364\377\353\367\377\377\352", target=0x511f02a0
>>> "\r\300\240\341\360_-\351(\320M\342k\323\377\353") at mini-arm.c:3536
>>> #3 0x001830bc in mono_arch_patch_callsite (method_start=0x427f8e90
>>> "\r\300\240\341\360_-\351(\320M\342", code_ptr=0x427f8f0c
>>> "\367\377\377\352",
>>> addr=0x511f02a0 "\r\300\240\341\360_-\351(\320M\342k\323\377\353")
>>> at tramp-arm.c:87
>>> #4 0x0012c5c8 in common_call_trampoline (regs=0x558fd090,
>>> code=0x427f8f0c "\367\377\377\352", m=0x2a08a000, tramp=0x2e4bcd80
>>> "x\320\217U", vt=0x0, vtable_slot=0x0,
>>> need_rgctx_tramp=0) at mini-trampolines.c:673
>>> #5 0x0012c67c in mono_magic_trampoline (regs=0x558fd090,
>>> code=0x427f8f0c "\367\377\377\352", arg=0x2a08a000, tramp=0x2e4bcd80
>>> "x\320\217U") at mini-trampolines.c:690
>>> #6 0x403f5060 in ?? ()
>>> #7 0x403f5060 in ?? ()
>>>
>>> All 6 threads where in a trampoline. The method in frame 4 was
>>> "mono_thread_interruption_checkpoint" for all six threads.
>>>
>>> Does this give you any more clues into what is going on?
>>>
>>> This is blocking our upgrade to mono-3-0 unfortunately. Any help will
>>> be greatly appreciated.
>>>
>>> From: Zoltan Varga <vargaz at gmail.com>
>>> Date: Tuesday, August 13, 2013 3:20 AM
>>> To: Bassam Tabbara <bassam at symform.com>
>>> Cc: "mono-devel-list at lists.ximian.com" <mono-devel-list at lists.ximian.com
>>> >
>>> Subject: Re: [Mono-dev] Assert in mini-arm.c
>>>
>>> Hi,
>>>
>>> This is a JIT problem, it will be hard to track down without a
>>> testcase. You can try changing this line in mono/utils/mono-codeman.c:
>>>
>>> #define BIND_ROOM 8
>>>
>>> to
>>>
>>> #define BIND_ROOM 4
>>>
>>> It might fix the issue.
>>>
>>> Zoltan
>>>
>>>
>>> On Tue, Aug 13, 2013 at 7:44 AM, Bassam Tabbara <bassam at symform.com>wrote:
>>>
>>>> Folks,
>>>>
>>>> Any insights into why the assert would trigger? Is this a resource
>>>> exhaustion issue, or is specific to certain code that is being JITed? I
>>>> need someone to point me in the right direction. I'm able to reproduce this
>>>> but only in the context of our application. This did not happen with the
>>>> mono-2-10 branch.
>>>>
>>>> Thanks!
>>>> Bassam
>>>>
>>>> From: Bassam Tabbara <bassam at symform.com>
>>>> Date: Friday, August 9, 2013 10:36 AM
>>>> To: "mono-devel-list at lists.ximian.com" <
>>>> mono-devel-list at lists.ximian.com>
>>>> Subject: [Mono-dev] Assert in mini-arm.c
>>>>
>>>> Hello,
>>>>
>>>> I'm seeing the following assert on an armv5tel using latest from
>>>> master:
>>>>
>>>> http://pastebin.com/raw.php?i=CLDXxiPy
>>>>
>>>> I'm trying to get an isolated repro but it proving to be elusive. In
>>>> our full test runs we see this all the time.
>>>>
>>>> Any tips on how to debug this further?
>>>>
>>>> Thanks!
>>>> Bassam
>>>>
>>>> _______________________________________________
>>>> Mono-devel-list mailing list
>>>> Mono-devel-list at lists.ximian.com
>>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-devel-list/attachments/20130815/ed8fe271/attachment-0001.html>
More information about the Mono-devel-list
mailing list