Skip to content
Snippets Groups Projects
  1. Feb 10, 2020
  2. Feb 07, 2020
  3. Feb 06, 2020
  4. Feb 04, 2020
  5. Jan 31, 2020
  6. Jan 29, 2020
  7. Jan 28, 2020
  8. Jan 27, 2020
  9. Jan 25, 2020
  10. Jan 23, 2020
    • monojenkins's avatar
      [2019-12] [debugger] Native thread not executing managed code considered as terminated (#18504) · a979811c
      monojenkins authored
      
      * If a thread was suspended and doesn't have any managed stack, it was considered as terminated, but it wasn't really terminated because it can execute managed code again, and stop in a breakpoint so if the execution arrives in debugger_agent_breakpoint_from_context we reset the flag terminated to FALSE.
      
      * Adding terminated = FALSE in single_step_from_context.
      
      Co-authored-by: default avatarThays Grazia <thaystg@gmail.com>
      a979811c
    • monojenkins's avatar
      [interp] context can be uninitialized for get_resume_state callback (#18535) · 455cf7d3
      monojenkins authored
      `jit_tls->interp_context` gets initialized lazily, that is, upon the first interpreter execution on a specific thread (e.g. via interp_runtime_invoke). However, with mixed mode the execution can purely happen in AOT code upon the first interaction with the managed debugger.
      
      Stack trace:
      
      ```
        thread #1, name = 'tid_407', queue = 'com.apple.main-thread'
          frame #0: 0x0000000190aedc94 libsystem_kernel.dylib`__psynch_cvwait + 8
          frame #1: 0x0000000190a0f094 libsystem_pthread.dylib`_pthread_cond_wait$VARIANT$armv81 + 672
          frame #2: 0x000000010431318c reloadcontext.iOS`mono_os_cond_wait(cond=0x0000000104b9ba78, mutex=0x0000000104b9ba30) at mono-os-mutex.h:219:8
          frame #3: 0x0000000104312a68 reloadcontext.iOS`mono_coop_cond_wait(cond=0x0000000104b9ba78, mutex=0x0000000104b9ba30) at mono-coop-mutex.h:91:2
          frame #4: 0x0000000104312858 reloadcontext.iOS`suspend_current at debugger-agent.c:3021:4
          frame #5: 0x000000010431be18 reloadcontext.iOS`process_event(event=EVENT_KIND_BREAKPOINT, arg=0x0000000145d09ae8, il_offset=0, ctx=0x0000000149015c20, events=0x0000000000000000, suspend_policy=2) at debugger-agent.c:4058:3
          frame #6: 0x0000000104310cf4 reloadcontext.iOS`process_breakpoint_events(_evts=0x000000028351a680, method=0x0000000145d09ae8, ctx=0x0000000149015c20, il_offset=0) at debugger-agent.c:4722:3
          frame #7: 0x000000010432f1c8 reloadcontext.iOS`mono_de_process_breakpoint(void_tls=0x0000000149014e00, from_signal=0) at debugger-engine.c:1141:2
          frame #8: 0x000000010430f238 reloadcontext.iOS`debugger_agent_breakpoint_from_context(ctx=0x000000016f656790) at debugger-agent.c:4938:2
          frame #9: 0x00000001011b73a4 reloadcontext.iOS`sdb_breakpoint_trampoline + 148
          frame #10: 0x00000001008511b4 reloadcontext.iOS`reloadcontext_iOS_Application_Main_string__(args=0x000000010703a030) at Main.cs:14
          frame #11: 0x00000001010f9730 reloadcontext.iOS`wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr + 272
          frame #12: 0x00000001042fd8b8 reloadcontext.iOS`mono_jit_runtime_invoke(method=0x0000000145d09ae8, obj=0x0000000000000000, params=0x000000016f656f20, exc=0x0000000000000000, error=0x000000016f656ff8) at mini-runtime.c:3162:3
          frame #13: 0x0000000104411950 reloadcontext.iOS`do_runtime_invoke(method=0x0000000145d09ae8, obj=0x0000000000000000, params=0x000000016f656f20, exc=0x0000000000000000, error=0x000000016f656ff8) at object.c:3052:11
          frame #14: 0x000000010440c4dc reloadcontext.iOS`mono_runtime_invoke_checked(method=0x0000000145d09ae8, obj=0x0000000000000000, params=0x000000016f656f20, error=0x000000016f656ff8) at object.c:3220:9
          frame #15: 0x0000000104415ae0 reloadcontext.iOS`do_exec_main_checked(method=0x0000000145d09ae8, args=0x000000010703a030, error=0x000000016f656ff8) at object.c:5184:3
          frame #16: 0x00000001044144ac reloadcontext.iOS`mono_runtime_exec_main_checked(method=0x0000000145d09ae8, args=0x000000010703a030, error=0x000000016f656ff8) at object.c:5281:9
          frame #17: 0x0000000104414500 reloadcontext.iOS`mono_runtime_run_main_checked(method=0x0000000145d09ae8, argc=1, argv=0x000000016f6570d0, error=0x000000016f656ff8) at object.c:4734:9
          frame #18: 0x00000001042d3b54 reloadcontext.iOS`mono_jit_exec_internal(domain=0x0000000145f00130, assembly=0x0000000281ba2900, argc=1, argv=0x000000016f6570d0) at driver.c:1320:13
          frame #19: 0x00000001042d39a4 reloadcontext.iOS`mono_jit_exec(domain=0x0000000145f00130, assembly=0x0000000281ba2900, argc=1, argv=0x000000016f6570d0) at driver.c:1265:7
          frame #20: 0x0000000104597994 reloadcontext.iOS`::xamarin_main(argc=5, argv=0x000000016f657a80, launch_mode=XamarinLaunchModeApp) at monotouch-main.m:483:8
          frame #21: 0x00000001008510dc reloadcontext.iOS`main(argc=5, argv=0x000000016f657a80) at main.m:104:11
          frame #22: 0x0000000190af8360 libdyld.dylib`start + 4
      [...]
      * thread #5, name = 'Debugger agent', stop reason = signal SIGABRT
        * frame #0: 0x0000000190aedec4 libsystem_kernel.dylib`__pthread_kill + 8
          frame #1: 0x0000000190a0d724 libsystem_pthread.dylib`pthread_kill$VARIANT$armv81 + 216
          frame #2: 0x000000019095d844 libsystem_c.dylib`abort + 100
          frame #3: 0x00000001045871b4 reloadcontext.iOS`log_callback(log_domain=0x0000000000000000, log_level="error", message="* Assertion at ../../../../../mono/mini/interp/interp.c:7176, condition `context' not met\n", fatal=4, user_data=0x0000000000000000) at runtime.m:1213:3
          frame #4: 0x0000000104544fc8 reloadcontext.iOS`eglib_log_adapter(log_domain=0x0000000000000000, log_level=G_LOG_LEVEL_ERROR, message="* Assertion at ../../../../../mono/mini/interp/interp.c:7176, condition `context' not met\n", user_data=0x0000000000000000) at mono-logger.c:405:2
          frame #5: 0x000000010456093c reloadcontext.iOS`monoeg_g_logstr(log_domain=0x0000000000000000, log_level=G_LOG_LEVEL_ERROR, msg="* Assertion at ../../../../../mono/mini/interp/interp.c:7176, condition `context' not met\n") at goutput.c:134:2
          frame #6: 0x0000000104560598 reloadcontext.iOS`monoeg_g_logv_nofree(log_domain=0x0000000000000000, log_level=G_LOG_LEVEL_ERROR, format="* Assertion at %s:%d, condition `%s' not met\n", args="e\x12z\x04\x01") at goutput.c:149:2
          frame #7: 0x000000010456061c reloadcontext.iOS`monoeg_assertion_message(format="* Assertion at %s:%d, condition `%s' not met\n") at goutput.c:184:22
          frame #8: 0x0000000104560674 reloadcontext.iOS`mono_assertion_message(file="../../../../../mono/mini/interp/interp.c", line=7176, condition="context") at goutput.c:203:2
          frame #9: 0x000000010459b570 reloadcontext.iOS`interp_get_resume_state(jit_tls=0x000000014900d000, has_resume_state=0x000000016fc7a9f4, interp_frame=0x000000016fc7a9e8, handler_ip=0x000000016fc7a9e0) at interp.c:7176:2
          frame #10: 0x0000000104319420 reloadcontext.iOS`compute_frame_info(thread=0x0000000104fe4130, tls=0x0000000149014e00, force_update=1) at debugger-agent.c:3422:3
          frame #11: 0x0000000104320d40 reloadcontext.iOS`thread_commands(command=1, p="", end="", buf=0x000000016fc7acf8) at debugger-agent.c:9048:3
          frame #12: 0x000000010431cca0 reloadcontext.iOS`debugger_thread(arg=0x0000000000000000) at debugger-agent.c:10132:10
          frame #13: 0x000000010447eb04 reloadcontext.iOS`start_wrapper_internal(start_info=0x0000000000000000, stack_ptr=0x000000016fc7b000) at threads.c:1232:3
          frame #14: 0x000000010447e788 reloadcontext.iOS`start_wrapper(data=0x000000028203ef40) at threads.c:1305:8
          frame #15: 0x0000000190a11d8c libsystem_pthread.dylib`_pthread_start + 15
      [...]
      ```
      
      Thanks to @drasticactions for helping me to reproduce.
      
      Fixes https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1050615
      
      
      
      Co-authored-by: default avatarBernhard Urban-Forster <bernhard.urban@xamarin.com>
      455cf7d3
  11. Jan 21, 2020
  12. Jan 16, 2020
  13. Jan 15, 2020
  14. Jan 12, 2020
  15. Jan 10, 2020
  16. Jan 09, 2020
  17. Jan 08, 2020
  18. Jan 07, 2020
  19. Jan 06, 2020
    • monojenkins's avatar
      [2019-12] [metadata] Size 0 Blob heap is ok when resolving assembly refs (#18337) · 1ff24a77
      monojenkins authored
      * [metadata] Size 0 Blob heap is ok when resolving assembly refs
      
      Sometimes ILasm can produce images with a Blob heap of size 0.  In cases where
      we're loading assembly references from such an image, the hash (which is
      optional) can be at index = 0 and the Blob heap size is also 0.
      
      Also: add the hash value to the output of `monodis --assemblyref`
      
      * [metadata] Add a separate assertion for the index == size == 0 case
      
      And a comment explaining how it is likely to be triggered.  If the assembly is
      reasonable the caller of mono_metadata_blob_heap should be updated to use
      mono_metadata_blob_heap_null_ok instead
      
      * [bcl] Allow Mono's ILASM to produce a size 0 Blob heap
      
      ECMA 335 II.24.2.4 says that the user string and blob heaps should have an
      entry at index 0 consisting of the single byte 0.  However .NET Framework (and
      .NET Core) ilasm will entirely omit the Blob heap (that is, create a blob heap
      entry of size 0) if it is not needed.  This PR changes Mono's ILASM to emit the
      initial byte on demand only if one of the MetaDataStream.Add() methods is
      called. Otherwise we will also emit a stream of size 0.
      
      This is needed to compile some test cases.
      
      * [tests] Add regression test for loading assemblies with size 0 Blob heap
      
      Depends on ILASM that can emit a size 0 Blob heap
      1ff24a77
  20. Jan 03, 2020
  21. Jan 02, 2020
  22. Jan 01, 2020
Loading