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 <bas...@symform.com<mailto:bas...@symform.com>> Date: Wednesday, August 14, 2013 1:07 PM To: Zoltan Varga <var...@gmail.com<mailto:var...@gmail.com>> Cc: "mono-devel-list@lists.ximian.com<mailto:mono-devel-list@lists.ximian.com>" <mono-devel-list@lists.ximian.com<mailto:mono-devel-list@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 <bas...@symform.com<mailto:bas...@symform.com>> Date: Wednesday, August 14, 2013 12:26 AM To: Zoltan Varga <var...@gmail.com<mailto:var...@gmail.com>> Cc: "mono-devel-list@lists.ximian.com<mailto:mono-devel-list@lists.ximian.com>" <mono-devel-list@lists.ximian.com<mailto:mono-devel-list@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 <var...@gmail.com<mailto:var...@gmail.com>> Date: Tuesday, August 13, 2013 5:15 PM To: Bassam Tabbara <bas...@symform.com<mailto:bas...@symform.com>> Cc: "mono-devel-list@lists.ximian.com<mailto:mono-devel-list@lists.ximian.com>" <mono-devel-list@lists.ximian.com<mailto:mono-devel-list@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 <var...@gmail.com<mailto:var...@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 <bas...@symform.com<mailto:bas...@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 <var...@gmail.com<mailto:var...@gmail.com>> Date: Tuesday, August 13, 2013 3:20 AM To: Bassam Tabbara <bas...@symform.com<mailto:bas...@symform.com>> Cc: "mono-devel-list@lists.ximian.com<mailto:mono-devel-list@lists.ximian.com>" <mono-devel-list@lists.ximian.com<mailto:mono-devel-list@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 <bas...@symform.com<mailto:bas...@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 <bas...@symform.com<mailto:bas...@symform.com>> Date: Friday, August 9, 2013 10:36 AM To: "mono-devel-list@lists.ximian.com<mailto:mono-devel-list@lists.ximian.com>" <mono-devel-list@lists.ximian.com<mailto:mono-devel-list@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@lists.ximian.com<mailto:Mono-devel-list@lists.ximian.com> http://lists.ximian.com/mailman/listinfo/mono-devel-list
_______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list