[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