Tags: VSS-DEV/mono
Tags
[mini] Add GC Unsafe transitions in mono_pmip (mono#21186) Add a new mono_pmip_u that doesn't do the transition. The intent is that Mono developers in the debugger can call still call mono_pmip_u if the thread state machine is in a broken state.
[2020-02] Fix memory leak during data registration (mono#21107) (mono… …#21116) Co-authored-by: Fan Yang <[email protected]>
[2020-02] Start a dedicated thread for MERP crash reporting (mono#21126) Related to mono#21009. There are two scenarios: 1. When someone force quits Mono (or just runs `kill -TERM <pid>`), the process can receive the signal on any thread, 2. or - if a thread in the process crashes, but the thread is not attached to the runtime, Mono's signal handlers still run. The crash reporter assumes that the crashing thread is either attached to the runtime, or at least `mono_thread_info_current` or the JIT TLS data are set for the thread. If the thread is truly foreign and it never interacted with Mono, and it crashes, both of those assumptions are false, but Mono's crash reporter signal handlers still run. The solution from this PR is: if crash reporting is enabled, start a dedicated thread at process startup that is a "crash report leader" - when a crash happens, the crashing thread (the crash originator) wakes the leader, and the leader collects the crash report. The crash originator does not do any work that requires being attached to the runtime or to the JIT such as iterating over thread IDs or stack walking. --- * Add a standalone test of crash on a foreign thread * Sketch out crash leader implementation At process startup, start a separate thread that is attached to the runtime and can collect crash reports. Crashing threads will wake it and wait for it to collect the crash reports * Start moving responsibilities to the crash leader * Watch for nil jit_tls data if crash is on a foreign thread * Start adding a state machine for the crash leader We need to coordinate the originator and the leader in a few places. The leader needs to pause to after collecting the thread ids before suspending the non-originator threads, and again while the originator is dumping its own stack. The originator needs to wait for the leader to collect the thread IDs and to tell it its assigned slot. Then it tells the leader to suspend the others, dumps its own memory, then tell the leader to dump the whole crash report and wait for it to reply when it's done. * Move remaining summarizer work to the summarizer leader thread * change some debug printfs * Successfully summarize a foreign thread crash * Add test to merp-crash-test.cs * delete standalone test * if the crash leader is the originator, collect the report synchronously either because the crash leader crashed, or because the process got a SIGTERM and it arrived on the crash leader thread * fixup comments * turn off crash leader printf debugging * Don't create leader thread if crash reporting is disabled * Fix test on win32 * Update mono/tests/libtest.c * fixup logging and comments around managed stack collection * Disable the merp dlopen crasher * Remove crash leader state machine It's straightline code with two early exits. State machine is overkill * remove remnants of leader state machine
sdks: Use https for xamjenkinsartifacts llvm archive download Accessing the storage account fails now when using plain http.
[MonoIO] Wrap calls to open() in EINTR handling (mono#21042) Related to mono#21040 and dotnet/runtime#48663 On MacOS Big Sur open() is much more likely to throw EINTR - and moreover if the thread receives a signal while doing an open() even if the signal handler is marked with SA_RESTART, the open call appears not to restart and to fail anyway. So wrap all the calls to open() in retry loops.
[2020-02][System.Native] Handle ReadDir EINTR (mono#21029) * [System.Native] Handle ReadDir EINTR Handle EINTR for opendir/readdir/closedir. Because of how thread aborts work, we must loop in managed. A thread abort will break syscalls and return EINTR, but mono will not raise a ThreadAbortException until a pinvoke returns. (Despite the documentation, opendir/readdir/closedir sometimes return EINTR on macOS Big Sur.) Related to mono#20799 * bump corefx * [System] on unix, include Interop.ReadDir.Mono.cs on mac it's in corlib, on unix and android it's in System, for some reason * Add newline Co-authored-by: Alexander Köplinger <[email protected]>
Bump corefx for credscan fixes (mono#21018) Bump to mono/corefx@38e9a93 Diff: mono/corefx@7c24bb0...38e9a93 Primarily CredScan fixes. Bump before we do a backport to 2020-02 of mono#21016 which will need one more corefx bump
[arm64] Fix wrong marshalling in gsharedvt transition (mono#21006) Transitioning from ArgVtypeByRefOnStack to ArgVtypeByRef requires no marshalling. The reference ends up being saved on stack the same way and the stack slot just needs to be copied (in mono_arm_start_gsharedvt_call).
Bump fsharp.py to get upstream nuget feed cleanup myget.org feeds were disabled recently. (cherry picked from commit dbc5d75)
PreviousNext