Rodrigo Kumpera [Fri, 26 Feb 2016 01:42:39 +0000 (17:42 -0800)]
Merge pull request #2679 from lambdageek/dev/monoerror-reflection
[reflection] MonoError cleanups
Zoltan Varga [Fri, 26 Feb 2016 01:09:56 +0000 (17:09 -0800)]
[runtime] Remove some declarations from marshal.h which are not used outside of marshal.c.
Alexander Köplinger [Fri, 26 Feb 2016 00:23:19 +0000 (01:23 +0100)]
Merge pull request #2683 from mfilippov/master
Add generation WepApplication.targets for v12.0 and v14.0 xbuild.
Mikhail Filippov [Fri, 26 Feb 2016 00:18:08 +0000 (03:18 +0300)]
Add generation WepApplication.targets for v12.0 and v14.0 xbuild.
monojenkins [Fri, 26 Feb 2016 00:05:22 +0000 (00:05 +0000)]
Merge pull request #2681 from kumpera/pedump_fix
[pedump] Fix init crash on pedump when using --verify.
@marek-safar here's your fix
@monojenkins merge
Zoltan Varga [Thu, 25 Feb 2016 21:53:53 +0000 (13:53 -0800)]
[aot] Move a mono_error_raise_exception () call higher up the call chain.
Rodrigo Kumpera [Thu, 25 Feb 2016 21:40:10 +0000 (13:40 -0800)]
[pedump] Fix init crash on pedump when using --verify.
Zoltan Varga [Thu, 25 Feb 2016 21:30:13 +0000 (13:30 -0800)]
[sdb] Remove some mono_error_raise_exception () calls.
Martin Baulig [Thu, 25 Feb 2016 20:45:38 +0000 (15:45 -0500)]
[jit]: Correctly restore callee saved registers in mono_arch_get_call_filter() on amd64.
(cherry picked from commit
8c1ffe78ccf68fab9acad53eebc01b5c84fc81ec)
João Matos [Thu, 25 Feb 2016 18:29:21 +0000 (18:29 +0000)]
Fixed the build.
João Matos [Thu, 25 Feb 2016 17:37:00 +0000 (17:37 +0000)]
[support/zlib] Added API exports to exported calls from zlib-helper.c.
This is so we can re-use this code from libmonodroid, which currently has its own duplicated copy.
João Matos [Thu, 25 Feb 2016 17:36:05 +0000 (17:36 +0000)]
[support/zlib] Remove eglib link dependencies from zlib-helper.c.
This is so we can re-use this code from libmonodroid, which currently has its own duplicated copy.
Aleksey Kliger [Thu, 25 Feb 2016 17:20:30 +0000 (12:20 -0500)]
[reflection] MonoError in mono_reflection_get_custom_attrs_info
Also mark that function external only. Runtime should use
mono_reflection_get_custom_attrs_info_checked
Aleksey Kliger [Thu, 25 Feb 2016 16:30:12 +0000 (11:30 -0500)]
[reflection] MonoError for mono_reflection_type_get_underlying_system_type
Ludovic Henry [Thu, 25 Feb 2016 16:28:20 +0000 (16:28 +0000)]
Merge pull request #2655 from ludovic-henry/fix-wait-timeout
[WaitHandle] Fix Wait(One|Any|All) and SignalAndWait with timeout
Aleksey Kliger [Thu, 25 Feb 2016 16:12:14 +0000 (11:12 -0500)]
[reflection] MonoError for mono_custom_attrs_data_construct
Aleksey Kliger [Thu, 25 Feb 2016 15:52:52 +0000 (10:52 -0500)]
[reflection] MonoError for create_cattr_{typed,named}_arg
Aleksey Kliger [Thu, 25 Feb 2016 15:51:58 +0000 (10:51 -0500)]
[reflection] MonoError for mono_reflection_method_on_tb_inst_get_handle
Zoltan Varga [Thu, 25 Feb 2016 08:36:57 +0000 (00:36 -0800)]
[jit] Remove a few mono_error_raise_exception () calls.
Zoltan Varga [Thu, 25 Feb 2016 07:30:33 +0000 (23:30 -0800)]
Fix the build.
Zoltan Varga [Thu, 25 Feb 2016 07:28:44 +0000 (23:28 -0800)]
[jit] Add a MonoError argument to mono_create_jit_trampoline (), get rid of the mono_create_jit_trampoline_in_domain () variant.
Zoltan Varga [Thu, 25 Feb 2016 07:15:22 +0000 (23:15 -0800)]
[jit] Add a MonoError argument to mono_create_jump_trampoline ().
Zoltan Varga [Wed, 24 Feb 2016 21:50:09 +0000 (13:50 -0800)]
[llvm] Remove some unused argument passing conventions.
Marek Safar [Wed, 24 Feb 2016 20:21:16 +0000 (12:21 -0800)]
Merge pull request #2673 from serpentblade/master
[System.Data.SqlClient] Fix for bulk copy inserts via IDataReader
Dan Krieger [Wed, 24 Feb 2016 19:57:20 +0000 (11:57 -0800)]
[System.Data.SqlClient] Fix for bulk copy inserts via IDataReader
Resolve same with DataTable requiring name problem fixed in
1858ce4a94ab07f615a0e5ded37f8caa18473700
Zoltan Varga [Wed, 24 Feb 2016 09:23:58 +0000 (01:23 -0800)]
[llvm] Fix the loaded llvm build.
Zoltan Varga [Wed, 24 Feb 2016 09:22:18 +0000 (01:22 -0800)]
Fix the build.
Zoltan Varga [Wed, 24 Feb 2016 08:23:25 +0000 (00:23 -0800)]
[llvm] Emit dwarf debug info when running with llvm 3.9. This is not enabled yet, since it doesn't seem to work, the dwarf info is in the object file emitted by llc, but disappears during linking.
Marek Safar [Tue, 23 Feb 2016 21:46:23 +0000 (13:46 -0800)]
[mcs] escaped quoted interpolated format specifier has no restrictions. Fixes #38992
monojenkins [Tue, 23 Feb 2016 17:30:20 +0000 (17:30 +0000)]
Merge pull request #2664 from lambdageek/dev/monoerror-mono_rand
[runtime] Use MonoError in mono_rand_try_get_bytes
João Matos [Tue, 23 Feb 2016 16:09:26 +0000 (16:09 +0000)]
[System.IO.Compression.DeflateStream] Fixed end condition in decompression loop.
Keep track of total bytes read from input stream and break from the loop if it matches the number of bytes inflated by zlib.
Fixes https://bugzilla.xamarin.com/show_bug.cgi?id=34916.
Alexander Köplinger [Tue, 23 Feb 2016 16:03:11 +0000 (17:03 +0100)]
[msvc] %PATH% is sometimes empty in Jenkins, so "powershell" doesn't run
Try using a system-standard default variable which points to the required folder instead.
monojenkins [Tue, 23 Feb 2016 15:55:17 +0000 (15:55 +0000)]
Merge pull request #2666 from lambdageek/dev/kill-InternalReplaceStrComp
[runtime] Remove ves_icall_System_String_InternalReplace_Str_Comp
It appears to be dead code.
Aleksey Kliger [Mon, 22 Feb 2016 19:41:26 +0000 (14:41 -0500)]
[runtime] Use MonoError in mono_rand_try_get_bytes
Alexis Christoforides [Tue, 23 Feb 2016 14:25:09 +0000 (09:25 -0500)]
Bump Mono version -> 4.5.0
Aleksey Kliger [Mon, 22 Feb 2016 23:45:16 +0000 (18:45 -0500)]
[runtime] Remove ves_icall_System_String_InternalReplace_Str_Comp
It appears to be dead code.
monojenkins [Mon, 22 Feb 2016 22:25:34 +0000 (22:25 +0000)]
Merge pull request #2661 from ludovic-henry/fix-safehandle-abort
[SafeHandle] Avoid handle leakage in case of ThreadAbortException
If we get a ThreadAbortException while at SafeHandle.cs:124 (before this commit), we would not set release to true, even after incrementing the internal reference count of the SafeHandle. That could lead to potential leak, as the caller (following the common following pattern) would never call DangerousRelase, thus never calling PerformRelease. The finalizer or Dispose would not lead to the call of PerformRelease either, as the DangerousAddRef / DangerousRelase calls are unbalanced.
The common pattern for DangerousAddRef / DangerousRelease is the following:
bool release = false;
try {
safeHandle.DangerousAddRef (ref release);
/* do something with safeHandle.DangerousGetHandle () */
} finally {
if (release)
safeHandle.DangerousRelease ();
}
@monojenkins merge
monojenkins [Mon, 22 Feb 2016 19:45:29 +0000 (19:45 +0000)]
Merge pull request #2657 from xmcclure/little-embed-fixes
Minor platform-support fixes
* Fix error in DISABLE_HW_TRAPS implementation
* Rename class in mono/tests/threadpool.cs to allow embedding
monojenkins [Mon, 22 Feb 2016 19:30:33 +0000 (19:30 +0000)]
Merge pull request #2653 from lambdageek/dev/exception_type-1
[runtime] Don't access MonoClass::exception_type directly.
Use `mono_class_get_failure ()` and `mono_class_has_failed ()`
This is mostly just cleanup refactoring at this point that will make it easier to change how exception_type is used.
Also from this exercise we've learned that most of the class handling code just cares whether the class has an error or not, not what sort of error it was.
Ankit Jain [Mon, 22 Feb 2016 18:26:24 +0000 (13:26 -0500)]
Merge pull request #2646 from ludovic-henry/fix-processwatch-dispose
[Microsoft.Build] Fix XS build error + Fix expected output newline from ProcessWrapper.OutputStreamChanged and ProcessWrapper.ErrorStreamChanged
Ludovic Henry [Mon, 22 Feb 2016 12:56:23 +0000 (12:56 +0000)]
[SafeHandle] Avoid handle leakage in case of ThreadAbortException
If we get a ThreadAbortException while at SafeHandle.cs:124 (before this commit), we would not set release to true, even after incrementing the internal reference count of the SafeHandle. That could lead to potential leak, as the caller (following the common following pattern) would never call DangerousRelase, thus never calling PerformRelease. The finalizer or Dispose would not lead to the call of PerformRelease either, as the DangerousAddRef / DangerousRelase calls are unbalanced.
The common pattern for DangerousAddRef / DangerousRelease is the following:
bool release = false;
try {
safeHandle.DangerousAddRef (ref release);
/* do something with safeHandle.DangerousGetHandle () */
} finally {
if (release)
safeHandle.DangerousRelease ();
}
Ludovic Henry [Fri, 19 Feb 2016 21:07:22 +0000 (21:07 +0000)]
[WaitHandle] Fix Wait(One|Any|All) and SignalAndWait with timeout
In the case where we would call for example WaitHandle.WaitOne with a timeout, we could run in the case where we would wait way longer than the timeout would allow it (240s instead of 90s for example). This would be due to spurious wake, which would not be considered to be an error, but which would lead calling the `mono_os_cond_timedwait` function with the same timeout every time. That would mean that `mono_os_cond_timedwait` would return that it timedout, if and only if, it would timed out after N milliseconds, with N the millisecondsTimeout parameter to WaitOne in this example. That mean that any spurious wake would effectively lead to rewaiting with a full timeout every time.
That could lead to the following scenario:
- T1 calls waitHandle.WaitOne(timeout = 1000ms) at T=0ms
- T1 calls mono_os_cond_timedwait(timeout = 1000) at T=0ms
- GC suspend T1 at T=500ms <- here it's not necessarily the GC, it can be anything suspending/signaling the thread
- T1 spurious wake, and call mono_os_cond_timedwait(timeout = 1000) at T=500ms
- GC interrupt T1 at T=1250ms
- T1 spurious wake, and call mono_os_cond_timedwait(timeout = 1000) at T=1250ms
- etc.
As you can see, T1 should have returned from waitHandle.WaitOne before the second spurious wake, but as it recalled mono_os_cond_timedwait with a timeout of 1000ms again, it didn't.
The fix consists in keeping track of when the call is supposed to finish, and pass an adaptable timeout to mono_os_cond_timedwait, which decreases as time goes on, to enventually reach 0, and return in a timely manner.
Fixes https://bugzilla.xamarin.com/show_bug.cgi?id=38382
Ludovic Henry [Mon, 22 Feb 2016 16:04:36 +0000 (16:04 +0000)]
Merge pull request #2620 from ludovic-henry/referencesource-waithandle
[corlib] Import System.Threading.WaitHandle
Alexander Köplinger [Mon, 22 Feb 2016 15:43:44 +0000 (16:43 +0100)]
Merge pull request #2651 from akoeplinger/dmcs-warning
[scripts] Add deprecation warning to dmcs
Aleksey Kliger [Tue, 16 Feb 2016 23:59:55 +0000 (18:59 -0500)]
[runtime] Don't access MonoClass::exception_type directly.
Use mono_class_has_failure () or mono_class_get_failure ()
Joao Matos [Mon, 22 Feb 2016 14:53:09 +0000 (14:53 +0000)]
[System.IO.Compression] Lower minimum version in ZIP headers for compatibility.
This fixes compatibility with tools like MS Excel, file tool, and others that do not know how to recognize newer ZIP version formats.
Fixes https://bugzilla.xamarin.com/show_bug.cgi?id=33553.
Ludovic Henry [Mon, 22 Feb 2016 11:23:34 +0000 (11:23 +0000)]
Merge pull request #2593 from ludovic-henry/coop-fix-native-to-managed
[coop] Fix native-to-managed wrapper
Ludovic Henry [Thu, 18 Feb 2016 12:06:25 +0000 (12:06 +0000)]
[WaitHandle] Call SafeWaitHandle DangerousAddRef / DangerousRelease around native calls
We do not want to wait on a handle that have been cleaned up, as that will lead to a warning message from the io-layer, without any error in managed code. That mean we could not detect this error case and recover from it.
By doing this DangerousAddRef / DangerousRelease before going to native, we ensure that the WaitHandle is and will stay alive while waiting on it. This same is done in CoreCLR, but in the marshalling code.
Ludovic Henry [Mon, 15 Feb 2016 19:27:34 +0000 (19:27 +0000)]
[corlib] Import System.Threading.WaitHandle
Ludovic Henry [Mon, 22 Feb 2016 11:15:11 +0000 (11:15 +0000)]
[io-layer] Fix process_wait return value for current process
When waiting on the current process, we would return WAIT_FAILED, as waitpid would return -1, with errno set to ECHILD.
But the semantic of WaitForSingleObjectEx and WaitForMultipleObjectsEx when waiting on current process is to return WAIT_TIMEOUT. This is then a special case that we need to add to this code.
Alexander Köplinger [Fri, 19 Feb 2016 19:19:58 +0000 (20:19 +0100)]
[scripts] Add deprecation warning to dmcs
dmcs was deprecated in favor of mcs a while back, yet people are still creating new scripts with it.
Adding a message that shows up on each dmcs invocation should hopefully make this more obvious.
Vlad Brezae [Mon, 22 Feb 2016 10:49:35 +0000 (17:49 +0700)]
Merge pull request #2648 from BrzVlad/fix-cprop-vregs
[jit] Fix init of cprop defs for vregs
Zoltan Varga [Mon, 22 Feb 2016 07:43:36 +0000 (02:43 -0500)]
[llvm] Avoid setting the mono.nofail.load flag with the new llvm branch, its not supported there.
Rodrigo Kumpera [Sun, 21 Feb 2016 22:46:35 +0000 (17:46 -0500)]
Merge pull request #2660 from kumpera/loader-error-cleanup6
[mono-error] This PR eliminates mono_class_from_name and a couple of assorted fixes.
Rodrigo Kumpera [Mon, 16 Nov 2015 05:22:56 +0000 (00:22 -0500)]
[runtime] Ban mono_class_from_name mono_class_from_name_case.
They are no longer in use by the runtime. Begone!
Rodrigo Kumpera [Mon, 16 Nov 2015 05:22:56 +0000 (00:22 -0500)]
[tests] Pass cli args to test runner so we can pick which test to run
Rodrigo Kumpera [Mon, 16 Nov 2015 05:22:56 +0000 (00:22 -0500)]
[util] When creating the TLE exception only provide aditional data if both type and assembly names are provided. Otherwise one would fail and we'd get an OOM instead.
Rodrigo Kumpera [Mon, 16 Nov 2015 05:22:56 +0000 (00:22 -0500)]
[runtime][jit] Replace usage of mono_class_from_name with mono_class_load_from_name for variable type lookups.
Rodrigo Kumpera [Mon, 16 Nov 2015 05:22:56 +0000 (00:22 -0500)]
[runtime] Switch probing usage of mono_class_from_name to mono_class_try_load_from_name.
Those are call sites that can handle missing types correctly.
Rodrigo Kumpera [Mon, 16 Nov 2015 05:22:56 +0000 (00:22 -0500)]
[runtime] Add MonoError to search_modules. Fix signature of mono_class_from_name_checked_aux (MonoError MUST be last arg).
Rodrigo Kumpera [Mon, 16 Nov 2015 05:22:56 +0000 (00:22 -0500)]
[runtime] Switch GENERATE_GET_CLASS_WITH_CACHE to use mono_class_load_from_name. Kill dead macro.
Rodrigo Kumpera [Mon, 16 Nov 2015 05:22:56 +0000 (00:22 -0500)]
[runtime] Add manually coded version of GENERATE_GET_CLASS_WITH_CACHE that uses System.dll
Rodrigo Kumpera [Mon, 16 Nov 2015 05:22:56 +0000 (00:22 -0500)]
[runtime] Replace mono_class_from_name with mono_class_load_from_name for explicit loads that must not fail.
Rodrigo Kumpera [Mon, 16 Nov 2015 05:22:56 +0000 (00:22 -0500)]
[runtime] Add type load caching to one missing thing appdomain.c
Rodrigo Kumpera [Mon, 16 Nov 2015 05:22:56 +0000 (00:22 -0500)]
[runtime] Use mono_class_load_from_name to load types in mono_defaults.
We can use mono_class_load_from_name in all cases that we previously used to assert after loading.
All optional types have being moved over to use GENERATE_TRY_GET_CLASS_WITH_CACHE.
All but System.Runtime.ConstrainedExecution.CriticalFinalizerObject which is used within
sgen and we must ensure we don't try to lazy load it there.
I'm not 100% sure whether it should be optional, maybe it's a leftover from the 1.0 -> 2.0 timeframe?
The problem is that marking more types as required would be a burden on linkers as they might not force
it to be preserved.
I'm not particularly happy with the current large set of types that are loaded upfront. A significant
number of them could be lazy loaded.
Rodrigo Kumpera [Mon, 16 Nov 2015 05:22:56 +0000 (00:22 -0500)]
[runtime] Replace explicit lookup with GENERATE_GET_CLASS_WITH_CACHE in cominterop.c
Last place with adhoc lookup & caching.
Rodrigo Kumpera [Mon, 16 Nov 2015 05:22:56 +0000 (00:22 -0500)]
[runtime] Add GENERATE_TRY_GET_CLASS_WITH_CACHE macro that generates a probing function.
This function generates probing functions that rely on mono_class_try_load_from_name.
In addition replace usage of hand crafted loading code from all around.
Rodrigo Kumpera [Mon, 16 Nov 2015 05:22:56 +0000 (00:22 -0500)]
[runtime] Add mono_class_load_from_name and mono_class_try_load_from_name.
Those are variants of mono_class_from_name_checked that implement two common type loading scenarios in the rutime.
The first is mono_class_load_from_name, that loads critical types that the runtime cannot function without.
This means we abort if the type is missing or broken. We should use it in places where today we crash when
either of those would happen.
The other is mono_class_try_load_from_name, which is ok if the type is not found, but will abort if the type is broken.
The reasoning for aborting on a broken type is that it's unclear on whether the runtime should be using the type or not,
specially given most of those optional types change behavior of the application. This, in practice, forces the linker to
not produce a broken corlib.
Alexander Köplinger [Sat, 20 Feb 2016 15:42:23 +0000 (16:42 +0100)]
Merge pull request #2647 from qmfrederik/fixes/eventsources
WSDualHttpBinding: Additional constructor overloads to match .NET 4.5
Marek Safar [Sat, 20 Feb 2016 08:41:08 +0000 (09:41 +0100)]
Merge pull request #2659 from tritao/system_io_compression_reopen
[System.IO.Compression] Fixed re-opening of disposed Zip entry streams.
Vlad Brezae [Wed, 17 Feb 2016 22:26:20 +0000 (14:26 -0800)]
Revert "Revert "[jit] Don't allocate memory for unused vreg""
This reverts commit
c4037092ac415665b4b2aa639b389deb5bcfc12d.
Vlad Brezae [Wed, 17 Feb 2016 22:11:11 +0000 (00:11 +0200)]
[jit] Clear defs only for valid vregs used by the bblock's instructions
Also clean the most significant part of long vregs.
Alexander Köplinger [Sat, 20 Feb 2016 04:21:21 +0000 (05:21 +0100)]
[System.Web.ApplicationServices] Add new file to EXTRA_DISTFILES
It was added in
383d80a7850c2737e931a6d9ca8b26c98eefd79c. Fixes tarball.
monojenkins [Sat, 20 Feb 2016 03:40:28 +0000 (03:40 +0000)]
Merge pull request #2638 from gofman/fixprintsettings
[System.Drawing.Printing] CUPS default PageSize and InputSlot should …
[System.Drawing.Printing] CUPS default PageSize and InputSlot should override PPD defaults.
There is already a test case for that (PrintingServicesUnixTest.cs, Bug602934_PrinterSettingsReturnActualValues) which fails when user configured options are different from PPD settings. Patch also makes this test not to fail if "Resolution" option is not present in CUPS options.
Zoltan Varga [Sat, 20 Feb 2016 01:41:26 +0000 (20:41 -0500)]
[llvm] Allow the llvm backend to work with a new version of the mono llvm fork based on llvm 3.9.
This version is at:
https://github.com/mono/llvm/tree/llvm-master
It has a mono api version starting from 100. Currently, using LLVM in JIT mode is not supported, only AOT.
Alexander Köplinger [Sat, 20 Feb 2016 00:30:29 +0000 (01:30 +0100)]
Merge pull request #2649 from kjuby8709gsome/master
[System]: System.TimeZoneInfo - implemented GetUtcOffset with DateTim…
Joao Matos [Fri, 19 Feb 2016 23:30:05 +0000 (23:30 +0000)]
[System.IO.Compression] Fixed re-opening of disposed Zip entry streams.
Fixes System.IO.Compression to work against Microsoft Office OpenXML SDK which depends on this behavior.
Also partial fix for https://bugzilla.xamarin.com/show_bug.cgi?id=33553.
Frederik Carlier [Fri, 19 Feb 2016 15:18:42 +0000 (16:18 +0100)]
Add placeholders for missing methods:
* WSDualHttpBinding: Add additional constructor overloads to match .NET 4.5
* Dispatcher: Add support for the various InvokeAsync methods
Alexis Christoforides [Fri, 19 Feb 2016 22:01:56 +0000 (17:01 -0500)]
Merge pull request #2656 from lambdageek/dev/bug-38600
[mkbundle] Support spaces, strange symbols in assembly names
Aleksey Kliger [Fri, 19 Feb 2016 21:37:49 +0000 (16:37 -0500)]
[mkbundle] Support spaces, strange symbols in assembly names
In the asm stubs, replace everything that isn't a-zA-Z0-9_ by an underscore.
Sprinkle quotes in commandline args when running the linker.
Fixes [Bugzilla #38600](https://bugzilla.xamarin.com/show_bug.cgi?id=38600)
Andi McClure [Fri, 19 Feb 2016 21:51:03 +0000 (16:51 -0500)]
Rename class in mono/tests/threadpool.cs to allow embedding
Andi McClure [Mon, 22 Feb 2016 15:46:57 +0000 (10:46 -0500)]
Fix error in DISABLE_HW_TRAPS implementation
Alex Rønne Petersen [Fri, 19 Feb 2016 20:14:32 +0000 (21:14 +0100)]
Merge pull request #2652 from PAVBAN95/master
Fixed typo in README.md
PAVAN BANSAL [Fri, 19 Feb 2016 19:52:33 +0000 (01:22 +0530)]
Fixed typo in README.md
slightly was misspelled as slighty.
Marek Safar [Fri, 19 Feb 2016 19:52:07 +0000 (20:52 +0100)]
Merge pull request #2632 from kasthack/sysweb-import
[System.Web.*] Reference source import
Ludovic Henry [Wed, 17 Feb 2016 17:39:25 +0000 (17:39 +0000)]
[runtime] Wrap mono_jit_attach and mono_jit_detach in try { ... } finally { ... } clause
This is useful for coop mode only, as coop needs additionnal thread state transition from BLOCKING to RUNNING and vice versa, and if both these transitions are not done properly, we finish in a incorrect state.
In non-coop mode, the mono_jit_detach only sets the domain to NULL, to avoid scanning threads unnecessarily, so not actually detaching properly is not hurting anything.
Ludovic Henry [Mon, 15 Feb 2016 16:39:09 +0000 (16:39 +0000)]
[coop] Fix native-to-managed wrapper thread attach
Previously, when we would invoke a native-to-managed wrapper from a thread that has not been attached to the runtime, we would simply ensure to attach this thread to the runtime. The issue arise when using coop and needing to switch a thread which is not executing runtime or managed code to BLOCKING state.
That would arise on iOS when using dispatch_async:
- the user would enqueue a Delegate, triggering a call to mono_delegate_to_ftnptr, generating this native-to-managed wrapper
- the wrapper would be called asynchronously on a thread managed by the OS/dispatch_async
- the thread would attach to the runtime, switching its state from STARTING -> RUNNING
- the thread would finish executing the delegate, thus 'detaching' from the runtime, but without switching its state from RUNNING -> BLOCKING
- during the next garbage collection, the GC would try to suspend this thread as it is still in RUNNING state, but because it's neither executing runtime code, neither managed code, it will never hit a safepoint, leading to a timeouting suspend.
To fix that issue, we need to support the following state switches:
- STARTING -> RUNNING -> BLOCKING: happens when it's the first time this thread calls a native-to-managed wrapper
- BLOCKING -> RUNNING -> BLOCKING: happens when it's not the first time this thread is called from a facility like dispatch_async, or if it is, for example, called as a callback from an external library
- RUNNING -> RUNNING -> RUNNING: if we call this wrapper from runtime or managed code, see for example System.Reflection.Emit.ILGeneratorTest.TestEmitCalliWithNullReturnType
This facility also need to take care of the current domain, to ensure that we switch properly between domains, and set it to the one that was used when creating this delegate, then restoring the original one.
Marek Safar [Fri, 19 Feb 2016 17:33:00 +0000 (18:33 +0100)]
Merge pull request #2650 from radical/csc-args
[mcs] Accept and ignore command line args supported by csc that we don't
Ankit Jain [Fri, 19 Feb 2016 17:13:35 +0000 (12:13 -0500)]
[mcs] Accept and ignore command line args supported by csc that we don't
support:
/win32manifest
/nowin32manifest
kchernyavskiy [Fri, 19 Feb 2016 17:03:15 +0000 (21:03 +0400)]
[System]: System.TimeZoneInfo - implemented GetUtcOffset with DateTimeOffset
kasthack [Fri, 19 Feb 2016 15:04:06 +0000 (18:04 +0300)]
[System.Web.*] Reference source import: System.Web.Profile.(ProfileInfoCollection, ProfileInfo, ProfileAuthenticationOption, DefaultProfile), missing System.Web.ModelBinding and System.Web.UI types, System.Web.ApplicationServices.(...)
Ludovic Henry [Fri, 19 Feb 2016 14:40:02 +0000 (14:40 +0000)]
[Microsoft.Build] Fix expected output newline from ProcessWrapper.OutputStreamChanged and ProcessWrapper.ErrorStreamChanged
The previous implementation of ProcessWrapper OutputStreamChanged and ErrorStreamChanged would manually launch a background thread to read on the process StandardOutput and StandardError, then simply passing the output to the OutputStreamChanged and ErrorStreamChanged events. This mean that even the newline characters would be passed to these events, leaving these events callbacks deal with splitting the output line by line.
On the other hand, Process.OutputDataReceived and Process.ErrorDataReceived already split the data line by line, and discard the newline character. That implies that, to keep the old ProcessWrapper behaviour, we need to add these newlines character before calling OutputStreamChanged and ErrorStreamChanged events callbacks.
Ludovic Henry [Fri, 19 Feb 2016 14:01:06 +0000 (14:01 +0000)]
[Microsoft.Build] Fix XS build error
We observe the following error when building XS:
"Threadpool worker" tid=0x0x7f011bfff700 this=0x0x7f01394bfb30 thread handle 0x432 state : not waiting owns ()
at <unknown> <0xffffffff>
at (wrapper managed-to-native) System.Threading.WaitHandle.WaitAll_internal (System.Threading.WaitHandle[],int,bool) <0x0005d>
at System.Threading.WaitHandle.WaitAll (System.Threading.WaitHandle[]) <0x00026>
at Microsoft.Build.Utilities.ProcessWrapper.<Start>m__0 (object,System.EventArgs) <0x0008f>
at System.Diagnostics.Process.OnExited () <0x000ed>
at System.Diagnostics.Process.RaiseOnExited () <0x0009f>
at System.Diagnostics.Process.CompletionCallback (object,bool) <0x00017>
at System.Threading.RegisteredWaitHandle.DoCallBack (object) <0x00088>
at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context (object) <0x00058>
at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool) <0x001c6>
at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool) <0x00020>
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem () <0x0004c>
at System.Threading.ThreadPoolWorkQueue.Dispatch () <0x001d6>
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () <0x00008>
at (wrapper runtime-invoke) <Module>.runtime_invoke_bool (object,intptr,intptr,intptr) <0x0005a>
And the process output would contains a bunch of "_wapi_handle_ref: Attempting to ref unused handle 0x1234" and "_wapi_handle_unref_full: Attempting to unref unused handle 0x1234".
The expected behaviour is for WaitHandle.(WaitAll|WaitAny|WaitOne|SignalAndWait) and EventWaitHandle.Set to throw an ObjectDisposedException in case the WaitHandle (or one of them if calling WaitAll, WaitAny or SignalAndWait) have been disposed.
This error would be due to a race between ProcessWrapper.Dispose, which closes endEventOut and endEventErr, and the above Process.Wrapper.<Start>m__0 (the base.Exited) callback, which waits on endEventOut and endEventErr.
Marek Safar [Fri, 19 Feb 2016 12:26:09 +0000 (13:26 +0100)]
[bcl] Add workaround for csc bug
Paul Gofman [Thu, 18 Feb 2016 11:03:24 +0000 (14:03 +0300)]
[System.Drawing.Printing] CUPS default PageSize and InputSlot should override PPD defaults.
There is already a test case for that (PrintingServicesUnixTest.cs,
Bug602934_PrinterSettingsReturnActualValues) which fails when user
configured options are different from PPD settings. Patch also makes
this test not to fail if "Resolution" option is not present in CUPS
options.
*Update: removed leftover debug Console.WriteLine from patch
Zoltan Varga [Fri, 19 Feb 2016 05:25:42 +0000 (00:25 -0500)]
Zoltan Varga [Fri, 19 Feb 2016 04:33:32 +0000 (23:33 -0500)]
[runtime] Avoid a crash when trying to load a non-assembly file as an assembly. Fixes #38825.
Alexander Köplinger [Fri, 19 Feb 2016 01:49:44 +0000 (02:49 +0100)]
Revert accidental change to submodule from
40017f9
monojenkins [Fri, 19 Feb 2016 00:10:18 +0000 (00:10 +0000)]
Merge pull request #2643 from xmcclure/disable-hw-traps
DISABLE_HW_TRAPS flag to disable signal reliance
Single switch for both explicit null checks and explicit illegal-divide checks.
Zoltan Varga [Thu, 18 Feb 2016 23:36:05 +0000 (18:36 -0500)]
[jit] Add missing div check to OP_IREM_IMM.