Jay Krell [Mon, 17 Jun 2019 08:24:00 +0000 (01:24 -0700)]
Replace MONO_PATCH_INFO_GET_TLS_TRAMP with MONO_PATCH_INFO_JIT_ICALL_ADDR_NOCALL.
Commit migrated from https://github.com/mono/mono/commit/
8d6feabf0de4258bff8fffcb4d13ee3ff04a700f
Vlad Brezae [Tue, 25 Jun 2019 08:24:06 +0000 (11:24 +0300)]
[sgen] Fix crashes in sgen due to xdomain refs
CADMessages are passed directly between appdomains. When using contained data, we need to make sure we don't create any cross domain references.
When domains are unloaded, all threads executing code in that appdomain are aborted and the entire heap is traversed and objects in that appdomain are cleared. If any objects in other domains are directly referencing objects in the unloaded domain, they will reference junk. If any, cross domain refs should only be allowed when the referenced object is in the root domain which is never unloaded.
Commit migrated from https://github.com/mono/mono/commit/
6359520633d2ba1d2032892fe562cf14d4f1c540
Vlad Brezae [Tue, 25 Jun 2019 15:43:25 +0000 (18:43 +0300)]
[interp] Reduce computation under calc_section mutex
Calc_section mutex is meant to be a lower level mutex used only for synchronization on InterpMethod contents. Before this commit we were taking the loader mutex which was leading to deadlocks.
Commit migrated from https://github.com/mono/mono/commit/
aa05d4f43c127a3d34aeb5e7b8ece58a452aa7e3
Egor Bogatov [Wed, 26 Jun 2019 09:49:24 +0000 (12:49 +0300)]
Add xunit-summary.py (mono/mono#15373)
Commit migrated from https://github.com/mono/mono/commit/
78b9c66501113469e081066ad6b500595a727b66
Alexander Köplinger [Wed, 26 Jun 2019 08:41:38 +0000 (10:41 +0200)]
[profiler] Add helper.h to tarball
Commit migrated from https://github.com/mono/mono/commit/
6307f0156c4bb85b64bd3d48a7f9e7832fc1cd2c
Ryan Lucia [Wed, 26 Jun 2019 03:58:41 +0000 (23:58 -0400)]
[netcore] Fix build.sh (mono/mono#15380)
* [netcore] Revert changes to build.sh
It appears to have accidentally been changed in mono/mono#15215, and the script no longer works correctly as a result, so revert
* Strip call to make
Commit migrated from https://github.com/mono/mono/commit/
a2a28b94c1316db37a254256907765eecf8de789
Zoltan Varga [Tue, 25 Jun 2019 17:26:17 +0000 (13:26 -0400)]
[aot] Save the number of locals into the aot debug info so the method header doesn't have to be decoded when its loaded.
Commit migrated from https://github.com/mono/mono/commit/
dc321b06a204d091f09166c5d1bedf41c1020fd4
Jay Krell [Tue, 25 Jun 2019 20:14:42 +0000 (13:14 -0700)]
Fix tarball build and refresh monolite due to memory model change (mono/mono#15370)
* Revise monolite due to memory model change.
* Fix tarball builds wrt netcore/config.make.
* Remove System.Private.CoreLib from mcs/class/Makefile, it was moved to netcore/
* Bump min_mono_version in basic-profile-check
The new MONO_DEBUG=clr-memory-model runtime option isn't available in earlier Mono versions.
Commit migrated from https://github.com/mono/mono/commit/
1c09e4de62b3bb69ed82af9d3ddbb941f7c0ed0f
Jay Krell [Tue, 25 Jun 2019 18:56:38 +0000 (11:56 -0700)]
[threads] Define interlocked_mutex as non-recursive and on 32bit platforms only (mono/mono#15393)
Commit migrated from https://github.com/mono/mono/commit/
3e270ffe20bfd0fa056bfb2e3ba8ebf07c441ead
Radek Doulik [Tue, 25 Jun 2019 18:04:16 +0000 (11:04 -0700)]
[profiler] Add helper.c to static sources where needed (mono/mono#15400)
This should fix broken `OS X x64 iOS SDK` build.
Commit migrated from https://github.com/mono/mono/commit/
3efc0959fed108cd069c41d53071352238004523
Johan Lorensson [Tue, 25 Jun 2019 15:40:39 +0000 (17:40 +0200)]
Add cooperative suspend aware threads for hybrid suspend. (mono/mono#15204)
* Add cooperative suspend aware threads for hybrid suspend.
When running in hybrid suspend and having threads in blocking mode, GC Safe
mode, threads will still be preemptive suspended. This is done to make sure
compatibility is kept with embedders since current embedding API is not coop
aware. If, however the external attached threads promise to follow the coop
rules for a thread in Safe mode, it could still be possible to have them
running, making sure they won't be preempted when running STW. Unlocking this
possibility could have large performance wins if embedding threads runs a lot
of native code on threads attached to runtime.
This commit adds support for a new pair of API's where an external thread can
mark itself as cooperative suspend aware. Doing that guarantees the runtime
that it will follow all rules as dictated by cooperative suspend when a thread
is in safe mode. The change only goes one way since this is a lifetime commitment
for a thread. Once’s set, thread will be kept running when in safe mode.
Commit migrated from https://github.com/mono/mono/commit/
5ca92bdbe8fc2f151c44b21b09ce53c4ad6ec379
Zoltan Varga [Tue, 25 Jun 2019 13:35:21 +0000 (09:35 -0400)]
[runtime] Refactor mono-debug.c. (mono/mono#15381)
* [debug] Refactor the code in mono-debug.c.
Store the domain->debug info table mapping in MonoDomain to avoid a hashtable lookup.
Rename MonoDebugDataTable to DebugDomainInfo to better reflect its meaning.
* Remove some mono_ prefixes from static functions, along with the full/internal prefixes.
Commit migrated from https://github.com/mono/mono/commit/
9ace0a3b9c9b7b608d2911e464914eb6e6b70783
Radek Doulik [Tue, 25 Jun 2019 10:17:45 +0000 (03:17 -0700)]
[aot profiler] Listen for commands on given port (mono/mono#14936)
* [aot profiler] Listen for commands on given port
Extended the aot profiler so, that it can receive commands over the network.
Added new option `port=PORT`, which enables command server and specifies
the port the server should listen at.
We have 2 commands so far.
save ... save the profile data to socket and close it
quit ... quit the profiler. it also saves the profile to the file
in case the output option was specified.
It makes the aot profiling much easier to use on Android as we don't need to
save the profile to a file on the device. That means we don't need to set
`<application android:debuggable="true"/>` flag, which changes the Android
app behavior and thus influence the profile itself. It is also convenient way
for IDEs to retrieve the aot profiles.
Example use for Xamarin.Android. Save and receive the profile data:
adb shell setprop debug.mono.profile aot:verbose,port=9999
adb forward tcp:9999 tcp:9999
nc -v 127.0.0.1 9999 > profile.aotprof
found 0 associations
found 1 connections:
1: flags=82<CONNECTED,PREFERRED>
outif lo0
src 127.0.0.1 port 50398
dst 127.0.0.1 port 9999
rank info not available
TCP aux info available
Connection to 127.0.0.1 port 9999 [tcp/distinct] succeeded!
save
Check what we received:
aotprofile-tool -sd profile.aotprof
Modules:
132475FF-85AA-430D-913C-
7642CBD8587E mscorlib
F7BDCAB5-83D3-4A0A-A33D-
BBE94284667D Mono.Android
22897151-27C9-4064-B001-
8A04F5847812 System
AA3FC224-D486-4304-A8C9-
EBF316556B26 Java.Interop
00D98403-051B-4168-A391-
F3F601637CBD System.Core
FD06519A-C321-426C-BDD8-
C97777452057 xat_latests_and_greatest_vsmac_8._1
9ECB003E-D449-438B-BE35-
58810DCBC917 Xamarin.Android.Support.v7.AppCompat
11659962-EFAC-400D-9F8D-
AF925B26AE41 Xamarin.Android.Support.Fragment
48C436F7-611D-470D-9949-
AC13FFDCF613 Xamarin.Essentials
2792D10D-7E13-46E6-BB4A-
933C25635F48 Xamarin.Android.Support.Design
Summary:
Modules: 10
Types: 221
Methods: 932
* Try to fix WIN32 compilation
* Add helper.c to mono-profiler-log.vcxproj
* Add helper.c to mono-profiler-log.vcxproj.filters as well
Commit migrated from https://github.com/mono/mono/commit/
858b2b8405407770c131c1519a2fa889f796577f
Johan Lorensson [Tue, 25 Jun 2019 08:46:33 +0000 (10:46 +0200)]
Increase max size of localloc and localloc_imm on amd64. (mono/mono#15374)
We hit the following assert when doing full AOT of some assemblies:
wrong maximal instruction length of instruction localloc (expected 96, got 99)
Assertion: should not be reached at mono\mono\mini\mini-amd64.c:6801
Turns out that that size could be hit when a couple of things happens as part
of lowering OP_LOCALLOC and OP_LOCALLOC_IMM:
sreg1 is not RAX, RCX or RDI
dreg is not RAX, RCX or RDI
cfg->param_area is bigger than 127
Fix is to increase max size of the instruction, from 96 -> 120 (same as x86).
Commit migrated from https://github.com/mono/mono/commit/
f8fbbcf280ca9a55ffe573681ad44abadf804592
Johan Lorensson [Tue, 25 Jun 2019 06:20:25 +0000 (08:20 +0200)]
Add support for Windows x64 Full AOT + LLVM + Interpreter on CI. (mono/mono#15276)
Commit migrated from https://github.com/mono/mono/commit/
b181dbc50dd4045b1a23ac53c7fb4337fe1df190
Marek Safar [Mon, 24 Jun 2019 18:09:35 +0000 (20:09 +0200)]
[System.Private.CoreLib] Add new shared string resource
Commit migrated from https://github.com/mono/mono/commit/
7066c05c3931c2cfea3c8db4b1d56fc448060eeb
Zoltan Varga [Mon, 24 Jun 2019 18:47:00 +0000 (14:47 -0400)]
[netcore] Disable more runtime functionality. (mono/mono#15369)
Commit migrated from https://github.com/mono/mono/commit/
1150d4a3e97bdc2a8dbd509db79046e59c0bc08c
Thays Grazia [Mon, 24 Jun 2019 13:34:42 +0000 (10:34 -0300)]
[wasm][debugger] Adding support to debug local vars in async methods (mono/mono#15357)
- Improving performance calling only once mono_wasm_get_var_info.
- Adding support to debug local vars in async methods. They are special in the way that local variables can be lifted to generated class fields.
Commit migrated from https://github.com/mono/mono/commit/
057f51d833f3d103730ad88a427407e3de251f6d
Johan Lorensson [Mon, 24 Jun 2019 08:56:21 +0000 (10:56 +0200)]
Fix race related to final event signaling in RegisteredWaitHandle. (mono/mono#15280)
We have seen sporadic failures in thread pool tests on CI related to
test case:
System.Threading.ThreadPools.Tests.ThreadPoolTests.QueueRegisterPositiveAndFlowTest [FAIL]
Assert.Equal() Failure
Expected: 0
Actual: 1
Stack Trace:
at System.Threading.ThreadPools.Tests.ThreadPoolTests.QueueRegisterPositiveAndFlowTest () [0x00143] in D:\j\workspace\z3\label\w64\external\corefx\src\System.Threading.ThreadPool\tests\ThreadPoolTests.cs:337
at (wrapper managed-to-native) System.Reflection.RuntimeMethodInfo.InternalInvoke(System.Reflection.RuntimeMethodInfo,object,object[],System.Exception&)
at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0006a] in D:\j\workspace\z3\label\w64\mcs\class\corlib\System.Reflection\RuntimeMethodInfo.cs:395
Finally managed to track down the issue to a race when using the same final
event in sequential calls to RegisterWaitForSingleObject. The event could, depending on
timing, get signaled multiple times for the same RegisterWaitHandle instance
causing a thread waiting for completion on another RegisterWaitHandle using same event
to be signaled before that callback was completed. That will cause the race seen in the
failing test above.
Fix make sure we only signal the final event one time per RegisterWaitHandle
instance.
Commit migrated from https://github.com/mono/mono/commit/
de90561fbd552d06e68c6ecbafd3a417f1ffae1a
Bernhard Urban [Fri, 21 Jun 2019 14:26:24 +0000 (16:26 +0200)]
[arm] set exception handling model to dwarf for iOS
We recently switched the AOT compiler for iOS armv7 from 32bit host to 64bit host. At the same time we _also_ switched from LLVM 3.6 to the newer LLVM 6.0 fork we support.
In a Xamarin.iOS Release build for iOS armv7 exception handling would crash. Specifically the problem was that the exception object wasn't properly injected into the handler block. The way it works is, that the exception handler machinery passes the pointer to the exception object via `r0`.
With the newer LLVM the generated code of the exception handling block
looks like this:
```
LBB1_15: @ %EH_CLAUSE0_BB3
Ltmp8:
ldr r0, [sp, mono/mono#24]
str r0, [sp, mono/mono#4]
ldr r0, [sp, mono/mono#28]
ldr r0, [sp, mono/mono#12]
ldr r0, [r0]
cmp r0, mono/mono#0
beq LBB1_17
```
thus overwriting `r0`, so that the pointer to the exception object is lost. With the older LLVM 3.6 the generated code looks like this:
```
LBB1_8: @ %EH_CLAUSE0_BB3
Ltmp8:
str r0, [sp, mono/mono#4]
ldr r0, [r6]
cmp r0, mono/mono#0
beq LBB1_10
```
correctly storing the exception object into a stack slot for later usage.
After some time I figured out that there are _different_ exception handling models. Depending on the model, the exception pointer is passed in `r0` or not:
https://github.com/mono/llvm/blob/mono/mono@
2bd2f1db1803f7b36687e5abf912c69baa848305/lib/Target/ARM/ARMISelLowering.cpp#L14416-L14428
`SjLj` stands for "SetJump / LongJump" and means that exception handling is implemented with this. On iOS this is the default model that is used. We want `dwarf` instead, so we tell this `llc` now and the generated code handles it correctly.
So why was it working before? In our older LLVM 3.6 fork we hardcoded it:
https://github.com/mono/llvm/blob/mono/mono@
f80899cb3eb75f7f5640b4519e83bd96991bffb8/lib/Target/ARM/ARMISelLowering.cpp#L756-L762
The `-exception-model=` option is also not available in LLVM 3.6.
Contributes to https://github.com/mono/mono/issues/15058 and https://github.com/mono/mono/issues/9621
Commit migrated from https://github.com/mono/mono/commit/
7d5daa2f77246a036f19ddb34ac4715c5ca58f36
Zoltan Varga [Sat, 22 Jun 2019 06:39:32 +0000 (02:39 -0400)]
[netcore] Remove unused icalls.
Commit migrated from https://github.com/mono/mono/commit/
bbfce0087817d135c32d96a5284b52d1e485da72
Zebediah Figura [Sat, 22 Jun 2019 16:57:49 +0000 (11:57 -0500)]
[mini] Support tracing pointer return values. (mono/mono#15356)
Commit migrated from https://github.com/mono/mono/commit/
9f49cc85af18aad607c8951e3a9103681696d0dd
Zoltan Varga [Sat, 22 Jun 2019 03:35:57 +0000 (23:35 -0400)]
[aot] Fix a deadlock in init_plt () by calling create_trampoline () outside the lock. (mono/mono#15332)
Fixes https://github.com/mono/mono/issues/15330.
Commit migrated from https://github.com/mono/mono/commit/
c3161826e3c10cf32909fb5592ba2b3b9c15934f
Vlad Brezae [Thu, 20 Jun 2019 12:35:43 +0000 (15:35 +0300)]
[arm64] Add location of this and rgctx arg
Used to fetch the value from async suspend stack frame, during exception handling.
Commit migrated from https://github.com/mono/mono/commit/
0cf363c4db217f90fa9b2a78580d494843dc8ae4
Vlad Brezae [Thu, 20 Jun 2019 12:17:19 +0000 (15:17 +0300)]
[arm] Add location of this and rgctx arg
Used to fetch the value from async suspend stack frame, during exception handling.
Commit migrated from https://github.com/mono/mono/commit/
a7a884e19eb80e68f44a48ab737974f01c461368
Vlad Brezae [Thu, 20 Jun 2019 11:57:31 +0000 (14:57 +0300)]
[amd64] Fix location saving for *this*
With static methods we were saving location for irrelevant argument.
Commit migrated from https://github.com/mono/mono/commit/
e1e26b87b503cc39a45ee88049847701c8e2d76e
Jay Krell [Sat, 13 Apr 2019 09:21:40 +0000 (02:21 -0700)]
Remove three seemingly unused functions:
mono_aot_init_gshared_method_this
mono_aot_init_gshared_method_mrgctx
mono_aot_init_gshared_method_vtable
Update comments that refer to them, to refer to the renames.
mini_llvm_init instead of mono_aot_init.
See mono/mono@
80bc0069e494db1a67480ed25db8f6f6ad9fc605 and mono/mono@
04d65f29866cc7cfdcfced9a04ec54b4d7e2637e.
I'm here because I broke something nearby in a work-in-progress PR
and the existance of these functions made me look into them.
Commit migrated from https://github.com/mono/mono/commit/
ab16b39a65993366af73075f2b4240eeb3ddca57
Filip Navara [Fri, 21 Jun 2019 16:52:13 +0000 (18:52 +0200)]
Add basic implementation of Environment.FailFast (mono/mono#15279)
* Add basic implementation of Environment.FailFast
* Add comment about __failfast on Windows 8+
* Re-add some test exclusions and clarify the comment around them
* Update icall.c
Commit migrated from https://github.com/mono/mono/commit/
42eb919d529b99a98a8adce220c27dfc9c2756ba
Aleksey Kliger (λgeek) [Fri, 21 Jun 2019 16:47:26 +0000 (12:47 -0400)]
[api] Add a mono/metadata/profiler-legacy.h header (mono/mono#15098)
* [api] Add mono/metadata/profiler-legacy.h header
Add a header with the legacy Mono profiler API. New code should use the API
from mono/metadata/profiler.h.
* [profiler] Mark the legacy profiler API with MONO_DEPRECATED
* [runtime] Don't install the profiler-legacy.h header
Make the decision later whether these should be in the set of public API headers
Commit migrated from https://github.com/mono/mono/commit/
71ceefccf68a0dbcf2a2fe6aa4064e831dbdb413
Egor Bogatov [Fri, 21 Jun 2019 10:28:20 +0000 (13:28 +0300)]
Update Makefile
Commit migrated from https://github.com/mono/mono/commit/
9eb1f199094211fd869c8b2fa0a19c150695ec0f
EgorBo [Fri, 21 Jun 2019 08:18:35 +0000 (11:18 +0300)]
fix build-test-corefx command
Commit migrated from https://github.com/mono/mono/commit/
44cba4e4423cdd2d15c63452c1bd63b11c1aadeb
lateralusX [Fri, 17 May 2019 16:33:09 +0000 (18:33 +0200)]
Make copy_stack_data support configurable.
By default when called through macros like MONO_ENTER_GC_UNSAFE
code will always dump current registers into stack space on hybrid/coop.
The registers will be scanned but only when hitting a GC and when running
in GC unsafe, that will only happen when we block in the enter or hit a safe
point at a later point in time. There are currently a couple of frequent
scenarios where we go into GC safe when thread won't be suspended and in
that case the copy of the registers will only reflect the state when
entering GC unsafe.
Commits add option to enable/disable copy_stack_data support in configure step:
--enable-copy-stack-data, --disable-copy-stack-data.
copy_stack_data is enabled by default on all platforms except desktop platforms
macos, linux and windows (both 32/64-bit), since these platforms already support
full context as well as capabilities to scan the stack of a running thread.
Commit migrated from https://github.com/mono/mono/commit/
ad90ebd3abf06a33174ebf0979950025e7381f50
Larry Ewing [Fri, 21 Jun 2019 03:21:08 +0000 (22:21 -0500)]
Merge pull request mono/mono#15293 from lewing/wasm-clean
[wasm] Add some missing directories to the clean target
Commit migrated from https://github.com/mono/mono/commit/
7af0e36db3e5baab73e2d0ba0cf4685ac571b3d9
Larry Ewing [Fri, 21 Jun 2019 01:46:39 +0000 (20:46 -0500)]
Merge pull request mono/mono#15291 from lewing/doublecheck-290
[wasm] Add an explicit test for https://github.com/dotnet/try/issues/290
Commit migrated from https://github.com/mono/mono/commit/
efa06b3ecd273e43f8cbedfaf62c92576bbbe9b6
Aleksey Kliger (λgeek) [Thu, 20 Jun 2019 23:25:44 +0000 (19:25 -0400)]
[loader] remap only System.Threading.Tasks.Dataflow older than 4.0.0.0 (mono/mono#15266)
[loader] remap only System.Threading.Tasks.Dataflow older than 4.0.0.0
Allow through requests for newer versions unchanged.
Commit migrated from https://github.com/mono/mono/commit/
18ce65575142cc10c3313f3a8cb281e5c5c17d61
Thays Grazia [Thu, 20 Jun 2019 22:48:13 +0000 (19:48 -0300)]
[debugger] Debugger doesn't break on unhandled exceptions (mono/mono#15234)
* When the catch found is in a MONO_WRAPPER_RUNTIME_INVOKE the exception should be treated as an UNHANDLED by the debugger.
* Adding unit test.
* trying to fix side effect.
* I've tested the MonoTests.DebuggerTests.UnhandledException_2 test on VsWin using .net Framework and I think the test is wrong because the first break is in throw and the next break will be on breakpoint.
In our implementation we were ignoring the unhandled exception and stopping only on breakpoint.
Commit migrated from https://github.com/mono/mono/commit/
405d521149b8fe4caef2eaa3665e5f6020ef298b
Vlad Brezae [Thu, 20 Jun 2019 18:35:18 +0000 (21:35 +0300)]
[jit] Make alias analysis properly handle alias cloberring (mono/mono#15255)
Alias analysis attempts to remove indirection when using OP_LDADDR (which fetches the address of a variable). For example :
ldaddr r1 <- r0
load_mem r2 <- r1
is equivalent to
mov r2 <- r0
The remembered r1 alias needs to be forgotten in case r1 is changed. We were handling this for direct assignment with MOV, but not for the more subtle case where an alias to r1 would be passed to a call, which could lead to changing r1.
https://github.com/mono/mono/issues/14872
Commit migrated from https://github.com/mono/mono/commit/
b4e43abbcc328a932ff9c5b71203ce5d35f794b8
Vlad Brezae [Thu, 20 Jun 2019 16:18:26 +0000 (19:18 +0300)]
[jit] Add debug option for using clr memory model (mono/mono#15019)
* [jit] Move value storing in a new write barrier emitting method
Brings together ref storing and the write barrier generation.
* [jit] Add debug option to attempt using the CLR memory model
Which prevents reordering of stores. Part of the way this is done on CoreCLR is by adding memory barriers to the write barrier, so we attempt a similar behavior.
This is not a complete implementation.
* [build] Add memory model flag to csc when building the bcl
This should prevent random crashes during the build
* [build] Add memory model flag to compiler server
* [build] Add memory model flag to test building
Commit migrated from https://github.com/mono/mono/commit/
1120e823123d76a4c2a04fe06612f377978dc866
Jay Krell [Thu, 20 Jun 2019 15:00:37 +0000 (08:00 -0700)]
[Coop] Establish handle frame in reflection_setup_internal_class. (mono/mono#15248)
It is called in a loop by ves_icall_TypeBuilder_create_runtime_class.
See https://github.com/mono/mono/issues/15247.
Commit migrated from https://github.com/mono/mono/commit/
fb6ce0df91641a83b891c1ca939b6bc3e56fac35
Jay Krell [Thu, 20 Jun 2019 14:57:04 +0000 (07:57 -0700)]
Write to the same union member that is later read. (mono/mono#15269)
It should not matter in this case, but it is the usual practise,
and not strictly valid otherwise.
Commit migrated from https://github.com/mono/mono/commit/
2104d1d957b95eca2793d2bb2e89083b0104d236
Jay Krell [Thu, 20 Jun 2019 13:39:20 +0000 (06:39 -0700)]
[interp] Optimize CEE_MONO_TLS due their being only one live producer. (mono/mono#15245)
There is a dead producer in Boehm. (see https://github.com/mono/mono/pull/15241)
This combined with https://github.com/mono/mono/pull/15226
will leave no remaining uses of mono_tls_get_tls_getter.
If there were really multiple values of the enum, consider
doing the switch in transform instead of interp.
Commit migrated from https://github.com/mono/mono/commit/
e24f1ed945a940fdef5dbf972b8d59bbc6f6e49d
Egor Bogatov [Thu, 20 Jun 2019 09:32:04 +0000 (12:32 +0300)]
Fix arcade stuff
Commit migrated from https://github.com/mono/mono/commit/
5a21eb42880b2f5e12c5669d0e1704d1db77524c
Johan Lorensson [Thu, 20 Jun 2019 07:23:39 +0000 (09:23 +0200)]
Add Windows x64 Full AOT Interpreter support on CI. (mono/mono#15127)
Add support to run full interpreter test suite on CI for Windows x64 Full AOT.
Since Windows x64 Full AOT uses a different full AOT profile WinAOT a separate
testing profile was setup for the interpreter testing. NOTE, this profile is
pure for testing, inline with the other testing profiles. It is also reusing
most of its sources from other sources files (mainly WinAOT) to reduce maintenance
of the profile.
Commit also includes some smaller adjustments needed in order to get full
pass rate for Windows x64 Full AOT + Interpreter on CI.
Commit migrated from https://github.com/mono/mono/commit/
dfb46dad7d0a2e0611cf01bb7ebc4ac1b65b66bd
Aleksey Kliger [Mon, 17 Jun 2019 22:10:34 +0000 (18:10 -0400)]
[coop] Mark a few functions with MONO_PROFILER_API
Commit migrated from https://github.com/mono/mono/commit/
b2a860c94914b87db5f01be0a1ab0d5fdaf43579
Aleksey Kliger [Mon, 17 Jun 2019 17:50:21 +0000 (13:50 -0400)]
[runtime] Don't do GC Unsafe transition in mono_gchandle_free
Xamarin.Mac can call back here from a native thread that isn't attached to the
runtime. SGen gchandle code is lockfree, and the profiler event can fire
without involving Mono.
Commit migrated from https://github.com/mono/mono/commit/
cf3bb20575e664c91410c9e838c2e71ffd04a862
Aleksey Kliger [Mon, 17 Jun 2019 17:47:42 +0000 (13:47 -0400)]
[profiler] Don't switch to GC Safe when locking if thread isn't attached to the
runtime.
Some profiler events (for example gc_handle_deleted) could be raised on threads
that aren't attached to the runtime. Since the thread won't participate in
Mono's stop the world (since the runtime can't see it), there's no need to do
the transition to GC Safe while the thread is trying to grab the profiler
buffer lock.
Commit migrated from https://github.com/mono/mono/commit/
ee74ee90b32867e0fdef729fb8eb942e0d39b14d
Jay Krell [Wed, 19 Jun 2019 22:18:32 +0000 (15:18 -0700)]
Fix compiler warnings. (mono/mono#15196)
* Fix compiler warnings.
unused variable: save_sigint
unused variable: mono_environ
uprototyed function: mono_marshal_xdomain_copy_value
* add static
Commit migrated from https://github.com/mono/mono/commit/
09869a9c8b6d2e78dffc7bab8d7845ff5c19cd0b
Jay Krell [Wed, 19 Jun 2019 20:25:35 +0000 (13:25 -0700)]
Remove unused MONO_PATCH_INFO_SET_TLS_TRAMP, corresponding unused JIT icalls, etc. (mono/mono#15201)
Commit migrated from https://github.com/mono/mono/commit/
6e1cc91d8d3bf60ea50dce2e3a12d084640e1788
Ryan Lucia [Wed, 19 Jun 2019 17:08:39 +0000 (13:08 -0400)]
Correctly set ReflectionType with inherited generic methods (mono/mono#15233)
* Correctly set ReflectionType with inherited generic methods
* Allow ValueType
* Re-enable relevant test
* Switch to mono_class_from_mono_type_internal
Commit migrated from https://github.com/mono/mono/commit/
2a82614f984ec9574b1724bc4d2c4eac092424b8
Zoltan Varga [Wed, 19 Jun 2019 14:52:27 +0000 (10:52 -0400)]
[jit] Avoid calling mini_jit_info_table_find () in mini_add_method_trampoline () unless needed. (mono/mono#15239)
Commit migrated from https://github.com/mono/mono/commit/
7341c9f6362bd9804507a72a2738ecc5f531e3f8
Filip Navara [Wed, 19 Jun 2019 06:51:44 +0000 (08:51 +0200)]
[netcore] Update the checks for ByRef return type in reflection invocation (mono/mono#14967)
* Update the checks for ByRef return type in reflection invocation to also check for IsByRefLike types. This was missed as part of mono/mono#13901 and noted in the description.
Fixes mono/mono#14959, mono/mono#14960, mono/mono#14961, mono/mono#14963
* Modify the reflection checks for IsByRef/IsByRefLike to check for same conditions as CoreCLR
* Handle reflection invocation with ref void return type
* Update test-ref-07 to have Main method that is valid to invoke through reflection (as the test runner does)
* Update expected IL
Commit migrated from https://github.com/mono/mono/commit/
c1068f9db5d9d5891e906447d4ed3b262182a388
Zoltan Varga [Wed, 19 Jun 2019 03:03:13 +0000 (23:03 -0400)]
[interp] Implement tracing of return values. Improve printing of arrays. (mono/mono#15217)
Commit migrated from https://github.com/mono/mono/commit/
611ba9a0180ed40c161245c7e82e00063ef58d08
Alexis Christoforides [Fri, 25 Jan 2019 22:02:25 +0000 (17:02 -0500)]
[filewatcher] Fall back to default if a new instance cannot be created
Commit migrated from https://github.com/mono/mono/commit/
7c4300aa7ffc530ce330ce1654179d06f66ae611
Bernhard Urban [Tue, 18 Jun 2019 21:46:00 +0000 (23:46 +0200)]
[arm] fix some more host/target pointer size issues (mono/mono#15223)
[arm] fix some more host/target pointer size issues
As suggested by Jay in https://github.com/mono/mono/issues/15058#issuecomment-
501995400
I haven't seen fixing it any specific issue, but we should still backport it to `2019-06` in order to avoid hard-to-debug regressions.
Contributes to https://github.com/mono/mono/issues/9621
Commit migrated from https://github.com/mono/mono/commit/
e3f8596156003c0c74b10f75ea9a8657e767afb3
Bernhard Urban [Tue, 18 Jun 2019 21:06:55 +0000 (23:06 +0200)]
[mini] fix OP_SEQ_POINT of other backends regarding target pointer size (mono/mono#15222)
See https://github.com/mono/mono/pull/15205#issuecomment-
502925368
Theoretically fixes cross compilation on a 32bit host to a 64bit target.
Commit migrated from https://github.com/mono/mono/commit/
fe7027935ba367446e490d27bb8ee2fc746722d8
Ryan Lucia [Mon, 17 Jun 2019 17:44:44 +0000 (13:44 -0400)]
[netcore] Don't default to an empty array for a null publicKey
Commit migrated from https://github.com/mono/mono/commit/
7a1605cb0703095fba9e13dcd2739dd90915f266
Ryan Lucia [Tue, 18 Jun 2019 17:30:31 +0000 (13:30 -0400)]
[eglib] Don't escape chars in argv parsing enclosed in single quotes (mono/mono#15047)
Fixes mono/mono#14724
This may need to be reverted if customers are relying on the existing behavior, but we can cross that bridge when we come to it.
The larger issue of incompatibility with .NET Core should be addressed later.
Commit migrated from https://github.com/mono/mono/commit/
6c5bbbd757344fa1a39922917c85091ee35dbe1e
Marek Safar [Tue, 18 Jun 2019 10:44:36 +0000 (12:44 +0200)]
Mirror changes from mono/corefx,corert,coreclr (mono/mono#15221)
Mirror changes from mono/corefx,corert,coreclr
Commit migrated from https://github.com/mono/mono/commit/
3428cec00312570613ff8f8467ff2e6e6cd4e666
Marek Safar [Tue, 18 Jun 2019 09:25:51 +0000 (11:25 +0200)]
[netcore] Excluded tests update
Commit migrated from https://github.com/mono/mono/commit/
7052e60600c9df87bab11574723673bd3a31a1c5
Marek Safar [Tue, 18 Jun 2019 09:10:59 +0000 (11:10 +0200)]
[System.Private.CoreLib] Merge fixes
Commit migrated from https://github.com/mono/mono/commit/
d44da802a9cc7317218bce4dd1565470f4fc3431
Marek Safar [Tue, 18 Jun 2019 08:54:06 +0000 (10:54 +0200)]
Merge remote-tracking branch 'upstream/master' into mirror-merge-
10235436
Commit migrated from https://github.com/mono/mono/commit/
e29f79e68ee40e880b17a77d669556db9bd5e2bd
Marek Safar [Tue, 18 Jun 2019 08:52:05 +0000 (10:52 +0200)]
[netcore] Reflect shared partition changes
Commit migrated from https://github.com/mono/mono/commit/
3d311876d2066420b5b3cf3e2cfcd75a509fdc61
Marek Safar [Mon, 17 Jun 2019 18:19:40 +0000 (20:19 +0200)]
[System.Private.CoreLib] Align on CA naming for easier sharing
Commit migrated from https://github.com/mono/mono/commit/
879c8501c946571d4c9e0bdfa70662d1aa2c249a
naricc [Tue, 18 Jun 2019 07:08:21 +0000 (03:08 -0400)]
Implement GC.GetAllocatedBytes (mono/mono#14779)
Commit migrated from https://github.com/mono/mono/commit/
ac2894920ac4b6f7b384ac73756b744215dc05a5
Bernhard Urban [Tue, 18 Jun 2019 06:46:01 +0000 (08:46 +0200)]
[arm] use target_mgreg_t instead of plain pointer type in sdb breakpoint (mono/mono#15205)
[arm] use target_mgreg_t instead of plain pointer type in sdb breakpoint
Fixes Debug mode for iOS 32bit.
Contributes to https://github.com/mono/mono/issues/15058 & https://github.com/mono/mono/issues/9621
Diff before (left old cross32, right new cross32 running on amd64 host _before_ this fix):
<img width="1257" alt="Screenshot 2019-06-17 at 14 09 51" src="https://user-images.githubusercontent.com/75403/
59603413-
a9bd4f00-9109-11e9-8f18-
aa7b4ca5817f.png">
/cc @mandel-macaque
Commit migrated from https://github.com/mono/mono/commit/
d5a35798c620ebd47d7a317014c4f32974d0a748
Jay Krell [Mon, 17 Jun 2019 08:09:57 +0000 (01:09 -0700)]
Allocate MonoJumpInfo instead of MonoAotCompile.
Commit migrated from https://github.com/mono/mono/commit/
fc74334e20ac1149959aaffe8a6befa8a671e48f
Jay Krell [Fri, 14 Jun 2019 04:38:43 +0000 (21:38 -0700)]
Revert "threads.c:6403:6: warning: 'current_idx' may be used uninitialized in this function [-Wmaybe-uninitialized]"
This reverts commit mono/mono@
bf2f1abe01978102c22d76b4a10996e8d8b50b0f.
The logic is not clear as to if there is a bug, so leave the warning.
There are two uses of the possibly uninitialized variable.
One is guarded and not a bug.
The other is not clear, and don't want to blindly use 0.
Commit migrated from https://github.com/mono/mono/commit/
a97408ac1e9b1e0dedbd67424ca0b0a6fc7b73b6
Jay Krell [Fri, 14 Jun 2019 04:36:41 +0000 (21:36 -0700)]
PR: Restore nearby unusual formatting.
Commit migrated from https://github.com/mono/mono/commit/
af2c235f318999b820fee48208916ce3e9de75c4
Jay Krell [Thu, 13 Jun 2019 09:09:58 +0000 (02:09 -0700)]
intrinsics.c: In function 'mini_emit_inst_for_method':
intrinsics.c:1580:11: warning: 'result' may be used uninitialized in this function [-Wmaybe-uninitialized]
*dest = result;
~~~~~~^~~~~~~~
Commit migrated from https://github.com/mono/mono/commit/
9c70b53cc39bd1347ed714e7a2e567a0c761246a
Jay Krell [Thu, 13 Jun 2019 09:05:18 +0000 (02:05 -0700)]
debugger-engine.c: In function 'set_bp_in_method':
debugger-engine.c:354:11: warning: variable 'code' set but not used [-Wunused-but-set-variable]
gpointer code;
^~~~
Commit migrated from https://github.com/mono/mono/commit/
6e19637797f6b30087d945b87df3248a8fc65daa
Jay Krell [Thu, 13 Jun 2019 09:04:24 +0000 (02:04 -0700)]
tramp-arm64-gsharedvt.c: In function 'mono_arch_get_gsharedvt_trampoline':
tramp-arm64-gsharedvt.c:217:54: warning: variable 'callee_stack_area_offset' set but not used [-Wunused-but-set-variable]
int caller_reg_area_offset, callee_reg_area_offset, callee_stack_area_offset;
^~~~~~~~~~~~~~~~~~~~~~~~
Commit migrated from https://github.com/mono/mono/commit/
496cb4cfce595d13cb333f09e47ceb710c4f7c06
Jay Krell [Thu, 13 Jun 2019 09:01:57 +0000 (02:01 -0700)]
mini-arm64-gsharedvt.c: In function 'mono_arch_get_gsharedvt_call_info':
mini-arm64-gsharedvt.c:142:29: warning: variable 'gsig' set but not used [-Wunused-but-set-variable]
MonoMethodSignature *sig, *gsig;
^~~~
Commit migrated from https://github.com/mono/mono/commit/
179b5e85cf58c6f6653c2e184706a9515c3216af
Jay Krell [Thu, 13 Jun 2019 08:59:35 +0000 (01:59 -0700)]
interp/mintops.c: In function 'mono_interp_dis_mintop':
interp/mintops.c:87:37: warning: format '%lld' expects argument of type 'long long int', but argument 3 has type 'long int' [-Wformat=]
g_string_append_printf (str, " %lld", (gint64)READ64 (ip + 1));
Commit migrated from https://github.com/mono/mono/commit/
b504d7e6d89c94ae7b00145afd3ff0b06813553b
Jay Krell [Thu, 13 Jun 2019 08:58:12 +0000 (01:58 -0700)]
In file included from object.c:40:0:
object.c: In function 'mono_class_proxy_vtable':
../../mono/metadata/profiler-private.h:191:4: warning: 'pvt' may be used uninitialized in this function [-Wmaybe-uninitialized]
mono_profiler_raise_ ## name args; \
^~~~~~~~~~~~~~~~~~~~
object.c:2338:19: note: 'pvt' was declared here
MonoVTable *vt, *pvt;
^~~
Commit migrated from https://github.com/mono/mono/commit/
452209414ea9f9863758e63c4d0307572e45f755
Jay Krell [Thu, 13 Jun 2019 08:56:33 +0000 (01:56 -0700)]
w32file-unix.c: In function 'mono_w32file_get_file_size':
w32file-unix.c:4994:19: warning: 'length_hi' may be used uninitialized in this function [-Wmaybe-uninitialized]
return length | ((gint64)length_hi << 32);
^~~~~~~~~~~~~~~~~
Commit migrated from https://github.com/mono/mono/commit/
bdb20ebd803c4ffa2317cdae949a4259e77ebbfd
Jay Krell [Thu, 13 Jun 2019 08:54:40 +0000 (01:54 -0700)]
interp/interp.c: In function 'interp_entry.constprop':
interp/interp.c:1847:3: warning: 'orig_domain' may be used uninitialized in this function [-Wmaybe-uninitialized]
mono_threads_detach_coop (orig_domain, &attach_cookie);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Commit migrated from https://github.com/mono/mono/commit/
457d0f02c5a39c268394f09d8f545db6123d4ae7
Jay Krell [Thu, 13 Jun 2019 08:52:20 +0000 (01:52 -0700)]
image.c:1351:20: warning: variable 'header' set but not used [-Wunused-but-set-variable]
MonoDotNetHeader *header;
^~~~~~
Commit migrated from https://github.com/mono/mono/commit/
3357a1a6119ddf1bed961d8ac5b578ec08c2015d
Jay Krell [Thu, 13 Jun 2019 08:50:36 +0000 (01:50 -0700)]
exception.c:747:1: warning: 'mono_new_exception_argument_out_of_range' defined but not used [-Wunused-function]
mono_new_exception_argument_out_of_range (const char *arg, MonoError *error)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Commit migrated from https://github.com/mono/mono/commit/
00570db6a4d7bf5c87e5508c0e4f097fde6c04aa
Jay Krell [Thu, 13 Jun 2019 08:49:29 +0000 (01:49 -0700)]
os-event-unix.c: In function 'mono_os_event_wait_multiple':
os-event-unix.c:195:12: warning: 'start' may be used uninitialized in this function [-Wmaybe-uninitialized]
elapsed = mono_msec_ticks () - start;
~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
Commit migrated from https://github.com/mono/mono/commit/
bc5d1a48d802fff39383f54b601d9e5fdab6a1df
Jay Krell [Thu, 13 Jun 2019 08:47:52 +0000 (01:47 -0700)]
In file included from ../../mono/eglib/glib.h:45:0,
from os-event.h:9,
from os-event-unix.c:11:
../../mono/eglib/eglib-remap.h:146:25: warning: 'data' may be used uninitialized in this function [-Wmaybe-uninitialized]
#define g_ptr_array_add monoeg_g_ptr_array_add
^~~~~~~~~~~~~~~~~~~~~~
os-event-unix.c:121:19: note: 'data' was declared here
OSEventWaitData *data;
^~~~
Commit migrated from https://github.com/mono/mono/commit/
96129ba873ef4a31212a90be8f3137f39f9ead56
Jay Krell [Thu, 13 Jun 2019 08:46:19 +0000 (01:46 -0700)]
marshal.c: In function 'mono_marshal_get_runtime_invoke_full':
marshal.c:2662:8: warning: 'sig_cache' may be used uninitialized in this function [-Wmaybe-uninitialized]
res = (MonoMethod *)g_hash_table_lookup (sig_cache, sig_key);
~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Commit migrated from https://github.com/mono/mono/commit/
faadb64774f9db09b2e026c43e3682b9268d9a25
Jay Krell [Thu, 13 Jun 2019 08:44:53 +0000 (01:44 -0700)]
sgen-mono.c:260:1: warning: 'install_noilgen' defined but not used [-Wunused-function]
install_noilgen (void)
Commit migrated from https://github.com/mono/mono/commit/
64c321293b42823e4a798fd7490359de6ab1abd6
Jay Krell [Thu, 13 Jun 2019 08:43:47 +0000 (01:43 -0700)]
In file included from sgen-new-bridge.c:31:0:
sgen-dynarray.h:331:1: warning: 'dyn_array_ptr_set_all' defined but not used [-Wunused-function]
dyn_array_ptr_set_all (DynPtrArray *dst, DynPtrArray *src)
^~~~~~~~~~~~~~~~~~~~~
Commit migrated from https://github.com/mono/mono/commit/
0b5b42f6c7fbf13dcd30681271f11db252f5a651
Jay Krell [Thu, 13 Jun 2019 08:41:30 +0000 (01:41 -0700)]
threads.c:6403:6: warning: 'current_idx' may be used uninitialized in this function [-Wmaybe-uninitialized]
if (i == current_idx)
^
threads.c:6549:6: note: 'current_idx' was declared here
int current_idx;
^~~~~~~~~~~
Commit migrated from https://github.com/mono/mono/commit/
e94887a18ce1c0e0b6d240bd111a15ada01982d8
Jay Krell [Thu, 13 Jun 2019 08:41:01 +0000 (01:41 -0700)]
sgen-dynarray.h:248:1: warning: 'dyn_array_ptr_set' defined but not used [-Wunused-function]
dyn_array_ptr_set (DynPtrArray *da, int x, void *ptr)
^~~~~~~~~~~~~~~~~
sgen-dynarray.h:202:1: warning: 'dyn_array_ptr_init' defined but not used [-Wunused-function]
dyn_array_ptr_init (DynPtrArray *da)
^~~~~~~~~~~~~~~~~~
sgen-dynarray.h:194:1: warning: 'dyn_array_int_is_copy' defined but not used [-Wunused-function]
dyn_array_int_is_copy (DynIntArray *da)
^~~~~~~~~~~~~~~~~~~~~
sgen-dynarray.h:188:1: warning: 'dyn_array_int_copy' defined but not used [-Wunused-function]
dyn_array_int_copy (DynIntArray *dst, DynIntArray *src)
^~~~~~~~~~~~~~~~~~
sgen-dynarray.h:182:1: warning: 'dyn_array_int_ensure_independent' defined but not used [-Wunused-function]
dyn_array_int_ensure_independent (DynIntArray *da)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sgen-dynarray.h:168:1: warning: 'dyn_array_int_get' defined but not used [-Wunused-function]
dyn_array_int_get (DynIntArray *da, int x)
^~~~~~~~~~~~~~~~~
sgen-dynarray.h:161:1: warning: 'dyn_array_int_add' defined but not used [-Wunused-function]
dyn_array_int_add (DynIntArray *da, int x)
^~~~~~~~~~~~~~~~~
sgen-dynarray.h:147:1: warning: 'dyn_array_int_size' defined but not used [-Wunused-function]
dyn_array_int_size (DynIntArray *da)
^~~~~~~~~~~~~~~~~~
sgen-dynarray.h:141:1: warning: 'dyn_array_int_uninit' defined but not used [-Wunused-function]
dyn_array_int_uninit (DynIntArray *da)
^~~~~~~~~~~~~~~~~~~~
sgen-dynarray.h:135:1: warning: 'dyn_array_int_init' defined but not used [-Wunused-function]
dyn_array_int_init (DynIntArray *da)
^~~~~~~~~~~~~~~~~~
Commit migrated from https://github.com/mono/mono/commit/
67680a2e81a5da19750fe0f0442fb02b905b2629
Jay Krell [Thu, 13 Jun 2019 08:34:58 +0000 (01:34 -0700)]
In file included from sre.c:30:0:
../../mono/metadata/reflection-cache.h:43:1: warning: 'free_reflected_entry' defined but not used [-Wunused-function]
free_reflected_entry (ReflectedEntry *entry)
^~~~~~~~~~~~~~~~~~~~
Commit migrated from https://github.com/mono/mono/commit/
ae357bebbd2c072c3b9485e458216b1076fae342
Jay Krell [Thu, 13 Jun 2019 08:33:41 +0000 (01:33 -0700)]
sre.c:2067:1: warning: 'is_sr_mono_field' defined but not used [-Wunused-function]
is_sr_mono_field (MonoClass *klass)
^~~~~~~~~~~~~~~~
Commit migrated from https://github.com/mono/mono/commit/
cc60fe04d0f5befd33b453e78c53f16490455540
Jay Krell [Thu, 13 Jun 2019 08:32:04 +0000 (01:32 -0700)]
w32handle.c: In function 'mono_w32handle_wait_multiple':
w32handle.c:1146:13: warning: 'start' may be used uninitialized in this function [-Wmaybe-uninitialized]
elapsed = mono_msec_ticks () - start;
~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
Commit migrated from https://github.com/mono/mono/commit/
54366ee658c62f2eb49863450a4110ca1db8c109
Jay Krell [Thu, 13 Jun 2019 08:30:50 +0000 (01:30 -0700)]
custom-attrs.c:269:1: warning: 'load_cattr_type_object' defined but not used [-Wunused-function]
load_cattr_type_object (MonoImage *image, MonoType *t, gboolean header, const char *p, const char *boundp, const char **end, MonoError *error, guint32 *slen)
^~~~~~~~~~~~~~~~~~~~~~
Commit migrated from https://github.com/mono/mono/commit/
f2f5c45d9d7255800f08d19ee397efff681c5da4
Jay Krell [Thu, 13 Jun 2019 08:29:45 +0000 (01:29 -0700)]
sre-save.c:114:1: warning: 'swap_with_size' defined but not used [-Wunused-function]
swap_with_size (char *dest, const char* val, int len, int nelem) {
Commit migrated from https://github.com/mono/mono/commit/
267a75f3656418c84eef65df653bda5b5843ee37
Jay Krell [Thu, 13 Jun 2019 08:25:57 +0000 (01:25 -0700)]
mono-mmap.c: In function 'mono_file_map_error':
mono-mmap.c:401:82: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 5 has type 'guint64 {aka long unsigned int}' [-Wformat=]
*error_message = g_strdup_printf ("%s failed file:%s length:0x%zX offset:0x%lluX error:%s(0x%X)\n",
Commit migrated from https://github.com/mono/mono/commit/
404a03b87e92eeb500d68c55465248737d609d9d
Jay Krell [Thu, 13 Jun 2019 08:24:12 +0000 (01:24 -0700)]
threadpool.c: In function 'mono_threadpool_remove_domain_jobs':
threadpool.c:571:91: warning: 'end' may be used uninitialized in this function [-Wmaybe-uninitialized]
res = mono_coop_cond_timedwait (&tpdomain->cleanup_cond, &threadpool.domains_lock, end - now);
Commit migrated from https://github.com/mono/mono/commit/
a37f71a4ea64703100f89ba4108fce661ebae317
Egor Bogatov [Mon, 17 Jun 2019 18:01:13 +0000 (21:01 +0300)]
fix RuntimeType.cs
Commit migrated from https://github.com/mono/mono/commit/
c04dc84a9f65e6f67ff70032db6faaf7a391de0c
Jay Krell [Fri, 14 Jun 2019 07:52:48 +0000 (00:52 -0700)]
Fix race conditions in mono_lazy_initialize,
which is meant to be all about handling race conditions.
1. Less severe:
Add missing read barrier to mono_lazy_initialize().
This is unfortunate.
The general pattern of:
if initialized
use the data
else:
initialize the data, possibly with lots of locks and barriers
mark initialized
is racy, because "use the data" can be scheduled ahead of "if initialized".
"Barriers come in pairs" generally, and this was missing one.
It depends somewhat. If the data is all pointers, initialized in the else path,
from null to non-null, and use includes dereferencing, which is a common
but not universal case, then it is ok on all non-Alpha processors, due
to "data dependency".
But if the data includes reading globals, then there is a race.
This is a bit of a slow down on fast paths on arm, and possibly
other architectures.
There are barrier-free ways to solve this, involving a thread local,
that should seriously be considered, and applied throughout the runtime.
The runtime has a lot of on-demand initialization and a lot of looks racy.
See www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm.
Which would have to be adopted to be coop-friendly which should not be difficult.
Notice that the existing "lazy" mechanism is also not coop-friendly.
That is not changed by this PR.
2. Change `status` to `*lazy_init` to fix severe race condition.
Commit migrated from https://github.com/mono/mono/commit/
7d824dc2ae19e8bfb712ee057a3ccdf1c08564bd
Jay Krell [Mon, 17 Jun 2019 05:25:53 +0000 (22:25 -0700)]
Replace MONO_PATCH_INFO_TRAMPOLINE_FUNC_ADDR with MONO_PATCH_INFO_JIT_ICALL_ADDR. (mono/mono#15053)
* Replace MONO_PATCH_INFO_TRAMPOLINE_FUNC_ADDR with MONO_PATCH_INFO_JIT_ICALL_ADDR.
* PR: Abstract the TrampolineType / jit_icall_id translation.
Commit migrated from https://github.com/mono/mono/commit/
8966528c211b549cb682ae5157fc40d013080d0c
Vlad Brezae [Sat, 15 Jun 2019 21:25:06 +0000 (00:25 +0300)]
[interp] Prefer interp_in wrappers over trampolines (mono/mono#14684)
[interp] Prefer interp_in wrappers over trampolines
Commit migrated from https://github.com/mono/mono/commit/
fd089b6e4deef849d5def3a1c6efe8046052846e
Aleksey Kliger [Mon, 8 Apr 2019 19:50:38 +0000 (15:50 -0400)]
[debugger-agent] Ignore thread_end event if thread is detached
The thread_stopped profiler event can be raised by the thread_info_key_dtor tls
key destructor when the thread is already doesn't have a domain set. In that
case, don't call process_profiler_event since it cannot handle a thread with
null TLS values.
Addresses https://github.com/xamarin/xamarin-android/issues/2920
with the following stack trace
```
* thread mono/mono#20, name = 'Filter', stop reason = signal SIGSEGV: invalid address (fault address: 0xbc)
* frame mono/mono#0: libmonosgen-2.0.so`mono_class_vtable_checked(domain=0x0000000000000000, klass=0x0000007200230648, error=0x00000071e92f9178) at object.c:1890
frame mono/mono#1: libmonosgen-2.0.so`get_current_thread_ptr_for_domain(domain=0x0000000000000000, thread=0x00000071ebfec508) at threads.c:595
frame mono/mono#2: libmonosgen-2.0.so`mono_thread_current at threads.c:1939
frame mono/mono#3: libmonosgen-2.0.so`process_event(event=<unavailable>, arg=<unavailable>, il_offset=<unavailable>, ctx=<unavailable>, events=<unavailable>, suspend_policy=<unavailable>) at debugger-agent.c:3715
frame mono/mono#4: libmonosgen-2.0.so`thread_end [inlined] process_profiler_event(event=EVENT_KIND_THREAD_DEATH, arg=0x00000071ebfec508) at debugger-agent.c:3875
frame mono/mono#5: libmonosgen-2.0.so`thread_end(prof=<unavailable>, tid=<unavailable>) at debugger-agent.c:3991
frame mono/mono#6: libmonosgen-2.0.so`mono_profiler_raise_thread_stopped(tid=<unavailable>) at profiler-events.h:105
frame mono/mono#7: libmonosgen-2.0.so`mono_thread_detach_internal(thread=<unavailable>) at threads.c:979
frame mono/mono#8: libmonosgen-2.0.so`thread_detach(info=0x00000071e949a000) at threads.c:3215
frame mono/mono#9: libmonosgen-2.0.so`unregister_thread(arg=<unavailable>) at mono-threads.c:544
frame mono/mono#10: libmonosgen-2.0.so`thread_info_key_dtor(arg=0x00000071e949a000) at mono-threads.c:774
frame mono/mono#11: 0x00000072899c58e8 libc.so`pthread_key_clean_all() + 124
frame mono/mono#12: 0x00000072899c5374 libc.so`pthread_exit + 76
frame mono/mono#13: 0x00000072899c5264 libc.so`__pthread_start(void*) + 44
frame mono/mono#14: 0x000000728996617c libc.so`__start_thread + 72
```
Commit migrated from https://github.com/mono/mono/commit/
8a0495ea3b973ae9cc2ab8662e0f815f3d08195b
Marek Safar [Fri, 14 Jun 2019 19:34:05 +0000 (21:34 +0200)]
[System.Private.CoreLib] Extract RuntimeType for easier refactoring
Commit migrated from https://github.com/mono/mono/commit/
b5b58d67cf6fd4f5431ae2b6c3e3fc4ec71f91b3
Egor Bogatov [Sat, 15 Jun 2019 07:27:15 +0000 (10:27 +0300)]
[netcore] Fix CI build script (mono/mono#15130)
Commit migrated from https://github.com/mono/mono/commit/
26f022228439ac05644c6aaa46ab6ca635a55679
Jay Krell [Tue, 11 Jun 2019 07:21:35 +0000 (00:21 -0700)]
Read only interp callbacks, option 4, without ordering sensitivity.
Commit migrated from https://github.com/mono/mono/commit/
eafcbfd6eda561e5ba1d08330807841a5ad74807