Alexander Köplinger [Tue, 7 Jun 2016 16:45:29 +0000 (18:45 +0200)]
Merge pull request #3124 from mono/revert-2734-master
Revert "Enhance log tracing"
Alexander Köplinger [Tue, 7 Jun 2016 16:45:09 +0000 (18:45 +0200)]
Revert "Enhance log tracing"
Alexander Kyte [Tue, 7 Jun 2016 16:29:39 +0000 (12:29 -0400)]
[runtime] Add environment variable to pass additional configure options
Alexander Kyte [Tue, 7 Jun 2016 16:29:23 +0000 (12:29 -0400)]
[runtime] Add new configure option for default sgen GC mode
Zoltan Varga [Tue, 7 Jun 2016 16:16:59 +0000 (12:16 -0400)]
[amd64] Fix an off-by-one in the dyn call code.
Zoltan Varga [Tue, 7 Jun 2016 14:46:33 +0000 (10:46 -0400)]
Llvm submodule (#3108)
* Move the versions.mk infrastructure to scripts/submodules so it can be used elsewhere too.
* Add a conditional submodule for llvm.
* Fix commit messages emitted by the bump- targets.
* Use a anonymous git url for llvm.
Marcos Henrich [Tue, 7 Jun 2016 13:06:53 +0000 (14:06 +0100)]
[runtime] Fixed interruptible wapi_sendfile.
Before closing a socket we try to interrupt and wait for all socket
pending system calls to return. For that we set the socket as non
blocking which makes the system calls to return with EAGAIN\EWOULDBLOCK.
This issue was caught by System.Net.Sockets.SocketTest.SendAsyncFile
that was intermittently failing, we were only able to reproduce it while
running multiple test suites in parallel. We now can say that it only failed when
the the socket was closed and the sendfile was waiting for the OS to
allocate enough resources to send the file.
This was fixed by changing wapi_sendfile to return on EAGAIN.
Marcos Henrich [Tue, 7 Jun 2016 09:38:29 +0000 (10:38 +0100)]
[System] Improved "Could not abort" exception.
Stack traces of blocked threads are now displayed on the exception.
The threads stacktraces are only stored when MONO_TESTS_IN_PROGRESS env
var is set to yes.
Alexander Kyte [Tue, 7 Jun 2016 11:44:40 +0000 (07:44 -0400)]
[runtime][mobile_static] Add flag for rgctx_fetch_trampolines and use it (#3088)
* [runtime] Add commandline option for rgctx fetch trampolines.
* [mobile_static] Increase the number of trampolines
lateralusX [Tue, 7 Jun 2016 09:35:02 +0000 (11:35 +0200)]
Smaller adjustments based on PR feedback.
Zoltan Varga [Tue, 7 Jun 2016 08:08:41 +0000 (04:08 -0400)]
[runtime] Call mono_class_init () for classes in mono_class_is_subclass_of (). Fixes #41466.
Rodrigo Kumpera [Tue, 7 Jun 2016 06:36:32 +0000 (23:36 -0700)]
[corlib] Take shadow copying when computing CodeBase in Assembly::GetName.
Alex Rønne Petersen [Tue, 7 Jun 2016 01:35:36 +0000 (03:35 +0200)]
Merge pull request #3116 from alexrp/master
Some improvements to the profiler makefile
Mark Probst [Mon, 6 Jun 2016 23:36:14 +0000 (16:36 -0700)]
[sgen] Make gcpauseviz histograms more meaningful.
There were too many bins, because the x axis was not logarithmic, and
there were no meaningful labels.
Mark Probst [Mon, 6 Jun 2016 23:17:58 +0000 (16:17 -0700)]
[sgen] Fix gcpauseviz.
It didn't detect starts of concurrent collections anymore because of how
the binary protocol outputs it.
Alex Rønne Petersen [Mon, 6 Jun 2016 22:49:04 +0000 (00:49 +0200)]
[profiler] Don't install the coverage suppression file if the profiler is disabled.
Alex Rønne Petersen [Mon, 6 Jun 2016 22:44:58 +0000 (00:44 +0200)]
[profiler] Don't run the test suite when the profiler is disabled.
Also clean up the makefile logic surrounding tests a bit.
Alexander Köplinger [Mon, 6 Jun 2016 21:44:35 +0000 (23:44 +0200)]
Merge pull request #3113 from akoeplinger/boehm-fixes
[ci] Turn off Boehm on Windows x64 gcc build
Zoltan Varga [Mon, 6 Jun 2016 20:48:02 +0000 (16:48 -0400)]
[offsets-tool] Generate offsets for SgenClientThreadInfo.
Vlad Brezae [Mon, 6 Jun 2016 12:37:03 +0000 (15:37 +0300)]
[sgen] Fix define argument
The code worked by accident because the function in which the define was expanded had an argument with the name desc.
Vlad Brezae [Mon, 6 Jun 2016 12:19:12 +0000 (15:19 +0300)]
[sgen] Fix race between complex descriptor allocation and complex object scanning
When we allocate the complex descriptor for a new type we might have the concurrent marker scan objects. While the concurrent marker scans the bitmap for a complex object, which resides in the complex_descriptor array, another thread might allocate a new complex descriptor, thus reallocate the complex_descriptor array, which would lead to corruption of the bitmap used by the concurrent marker.
We reuse the SgenArrayList which never reallocates, using instead a list of exponentially increasing arrays.
Alexander Köplinger [Mon, 6 Jun 2016 19:18:45 +0000 (21:18 +0200)]
Only define Boehm variables in configure.ac when it is enabled
Fix the message that is printed in the configure summary at the end to contain only "sgen" when Boehm is disabled.
Alexander Köplinger [Mon, 6 Jun 2016 19:07:07 +0000 (21:07 +0200)]
[ci] Turn off Boehm on Windows x64 gcc build
It was never supported there, turn it off to fix the build on Jenkins.
Zoltan Varga [Mon, 6 Jun 2016 19:04:06 +0000 (15:04 -0400)]
Aleksey Kliger (λgeek) [Mon, 6 Jun 2016 18:39:05 +0000 (14:39 -0400)]
Merge pull request #3100 from lambdageek/dev/monoerror-exns
[runtime] Pass MonoError to exception creation utilities
Vlad Brezae [Mon, 6 Jun 2016 11:19:40 +0000 (14:19 +0300)]
[sgen] Make sure we will scan the bits correctly for complex objects
Vlad Brezae [Mon, 6 Jun 2016 00:54:25 +0000 (03:54 +0300)]
[sgen] Add missing memory type description
Aleksey Kliger (λgeek) [Mon, 6 Jun 2016 18:01:44 +0000 (14:01 -0400)]
Merge pull request #3104 from lambdageek/dev/monoerror-resolve_vcall
[llvm] Raise MonoError using mono_llvm_throw_exception
Zoltan Varga [Mon, 6 Jun 2016 17:21:54 +0000 (13:21 -0400)]
[jit] Fix the emission of Selector.GetHandle () implementation to avoid the creation of string objects, which could cause GCs don't work in a cross compiler. Fixes #41431.
Alexander Köplinger [Mon, 6 Jun 2016 16:09:14 +0000 (18:09 +0200)]
[test-runner] Write stdout/stderr into StringBuilder instead of an intermediate file
We don't need to write out and then read back in the contents. Additionally, this will prevent
an unhandled exception we've seen on Jenkins due:
```
Unhandled Exception:
System.IO.IOException: Sharing violation on path /media/ssd/jenkins/workspace/test-mono-mainline-linux/label/debian-8-arm64/mono/tests/finalizer-wait.exe.stdout
at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.Boolean anonymous, System.IO.FileOptions options) <0x7f7eb4a740 + 0x00650> in <filename unknown>:0
at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.IO.FileOptions options, System.String msgPath, System.Boolean bFromProxy, System.Boolean useLongPath, System.Boolean checkHost) <0x7f7eb4a620 + 0x00053> in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,int,System.IO.FileOptions,string,bool,bool,bool)
at System.IO.StreamReader..ctor (System.String path, System.Text.Encoding encoding, System.Boolean detectEncodingFromByteOrderMarks, System.Int32 bufferSize, System.Boolean checkHost) <0x7f7e9b2170 + 0x000f3> in <filename unknown>:0
at System.IO.StreamReader..ctor (System.String path, System.Text.Encoding encoding, System.Boolean detectEncodingFromByteOrderMarks, System.Int32 bufferSize) <0x7f7e9b2120 + 0x00037> in <filename unknown>:0
at System.IO.StreamReader..ctor (System.String path, System.Boolean detectEncodingFromByteOrderMarks) <0x7f7e9b2040 + 0x0003b> in <filename unknown>:0
at System.IO.StreamReader..ctor (System.String path) <0x7f7e9b2010 + 0x0001f> in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.IO.StreamReader:.ctor (string)
at System.IO.File.ReadAllText (System.String path) <0x7f7eb48c70 + 0x0003b> in <filename unknown>:0
at TestRunner.DumpPseudoTrace (System.String filename) <0x7f7cfc6450 + 0x00023> in <filename unknown>:0
at TestRunner.Main (System.String[] args) <0x7f8128b770 + 0x01ed3> in <filename unknown>:0
```
Alexander Köplinger [Mon, 6 Jun 2016 16:06:06 +0000 (18:06 +0200)]
[test-runner] Print timeout value when test times out
This is useful when multiple timeouts are in place e.g. like in the runtime testsuite.
Marek Safar [Mon, 6 Jun 2016 16:01:19 +0000 (18:01 +0200)]
Merge pull request #3111 from directhex/sed-before-sign
Move call to sn.exe to *after* cil-stringreplacer.exe
Aleksey Kliger (λgeek) [Mon, 6 Jun 2016 16:00:47 +0000 (12:00 -0400)]
Merge pull request #2734 from nealef/master
Enhance log tracing
Jo Shields [Mon, 6 Jun 2016 15:57:24 +0000 (16:57 +0100)]
Move call to sn.exe to *after* cil-stringreplacer.exe
This makes sure mscorlib.dll still has a valid signature (fixes nightly builds on Linux)
Rodrigo Kumpera [Mon, 6 Jun 2016 15:42:34 +0000 (08:42 -0700)]
Merge pull request #3070 from kumpera/runtime-handles
Local handles initial drop
Rodrigo Kumpera [Mon, 6 Jun 2016 15:37:39 +0000 (08:37 -0700)]
Merge pull request #3083 from alexrp/gc-pointless-memory-barrier
[sgen] Remove a pointless memory barrier from the middle of the managed allocator.
Marek Safar [Mon, 6 Jun 2016 14:58:29 +0000 (16:58 +0200)]
[System] Override SupportsHeaders in all WebResponse overrides
Zoltan Varga [Mon, 6 Jun 2016 13:52:28 +0000 (09:52 -0400)]
[amd64] Enable dyncall tests on amd64.
Zoltan Varga [Mon, 6 Jun 2016 13:50:31 +0000 (09:50 -0400)]
[amd64] Support stack args in dyn calls.
Zoltan Varga [Mon, 6 Jun 2016 11:39:36 +0000 (07:39 -0400)]
[amd64] Handle ArgValuetypeAddrInIReg in dyncalls.
Aleksey Kliger (λgeek) [Sat, 4 Jun 2016 09:02:48 +0000 (05:02 -0400)]
[mini] Set pending MonoError in mono_vcall_trampoline (#3107)
Rodrigo Kumpera [Tue, 31 May 2016 20:58:26 +0000 (13:58 -0700)]
Remove unused header.
Rodrigo Kumpera [Sat, 28 May 2016 01:03:56 +0000 (18:03 -0700)]
[coop] New local handles implementation.
This is the initial code drop of a new handles implementation.
It differs from the previous one is a few ways:
- It keeps a separate stack of handles which is shared by all "arenas".
This eliminates malloc in the majority of the cases without the need for any tuning
- Custom gc scanning code for the handles stack.
The original implementation registered the chunks as a GC roots. Which is a terribly
slow operation as it takes the GC lock.
Instead of allocating a new handle arena for each icall, we compute a stack mark,
which is the position in the handles stack at icall entry. On exit, we simply restore that
position, which is just a couple of stores.
Since the stack is implemented using arraylets, addressed are stable in the face of
expansion.
Only the typed handles function/macros are in as having both typed and untyped handles
adds extra complexity for no clear value.
The macros only handle what was needed to port a sizeable chunk of locales.c.
This commit just sets the stage for the feature, there's quite some work left
before we can start using it, as it can be seen in the big TODO in handle.c
Rodrigo Kumpera [Sat, 28 May 2016 01:03:38 +0000 (18:03 -0700)]
[sgen] Fix scan thread data job to set ops so it can do precise scanning.
Rodrigo Kumpera [Sat, 28 May 2016 01:01:17 +0000 (18:01 -0700)]
[mono-error] Fix error_init macro to work with MonoError pointers.
Aleksey Kliger [Fri, 3 Jun 2016 18:35:21 +0000 (14:35 -0400)]
[llvm] Propagate MonoError out of mini_resolve_imt_method
To the enclosing llvm jit icalls
Neale Ferguson [Fri, 3 Jun 2016 17:33:23 +0000 (13:33 -0400)]
Use %Y-%m-%d %H:%M:%S for Windows log message header
Andi McClure [Fri, 3 Jun 2016 17:08:23 +0000 (13:08 -0400)]
Merge pull request #3040 from xmcclure/debugger-step-recursive
Debugger stepping does not understand recursion (bug 38025)
Miguel de Icaza [Fri, 3 Jun 2016 16:26:03 +0000 (12:26 -0400)]
[genproj] Update project files
Aleksey Kliger [Thu, 2 Jun 2016 21:40:07 +0000 (17:40 -0400)]
[jit] Pass MonoError to resolve_vcall
Marek Safar [Fri, 3 Jun 2016 16:04:33 +0000 (18:04 +0200)]
[System] Flush few colliding changes
Alexander Kyte [Tue, 31 May 2016 21:13:21 +0000 (17:13 -0400)]
[runtime] Use new mono_error_set_for_class_failure where applicable.
We were seeing an issue where attempts to create the MonoClass for an
exception in a no-exec context was causing failure. No-exec will forbid
the constructor call. Our solution was to realize that there was no
need to allocate an exception, as MonoError could already encode the
errors.
Alexander Kyte [Tue, 31 May 2016 21:04:33 +0000 (17:04 -0400)]
[runtime] Make helper to set MonoError directly from MonoClass error
Neale Ferguson [Fri, 3 Jun 2016 14:56:34 +0000 (10:56 -0400)]
Correct typo
Neale Ferguson [Fri, 3 Jun 2016 14:34:35 +0000 (10:34 -0400)]
Correct for widechar on Windows
Marek Safar [Fri, 3 Jun 2016 14:21:13 +0000 (16:21 +0200)]
[mcs] Fixes NRE during error reporting
Marek Safar [Fri, 3 Jun 2016 14:20:52 +0000 (16:20 +0200)]
[System] Remove duplicate file entry
Neale Ferguson [Fri, 3 Jun 2016 13:57:11 +0000 (09:57 -0400)]
Several corrections thanks to Johan Lorensson
Alexander Köplinger [Fri, 3 Jun 2016 13:13:10 +0000 (15:13 +0200)]
Jonathan Chambers [Fri, 3 Jun 2016 13:13:41 +0000 (09:13 -0400)]
Correcty initialize image ref_count. Ensures image is correctly unloaded during appdomain unload. (#3084)
Marek Safar [Fri, 3 Jun 2016 09:04:40 +0000 (11:04 +0200)]
Merge pull request #3102 from alexrp/master
[System] Add back IWebProxyScript to the mobile profile.
Alex Rønne Petersen [Fri, 3 Jun 2016 08:09:00 +0000 (10:09 +0200)]
[System] Add back IWebProxyScript to the mobile profile.
Jiří Volejník [Fri, 3 Jun 2016 07:09:24 +0000 (09:09 +0200)]
SWF - Fixed exiting modal runloop. (#2980)
Fixes a bug in exiting modal runloop that caused not really exiting it
(not calling XplatUI.SetModal(..., false).
It caused issues with menu, for example, if you first ran a modal
dialog (a wizard), and then you started the application.
Marek Safar [Fri, 3 Jun 2016 06:23:12 +0000 (08:23 +0200)]
Merge pull request #3099 from marek-safar/rs-Semaphore
[System] Semaphore from referencesource
Alexander Kyte [Fri, 27 May 2016 20:23:01 +0000 (16:23 -0400)]
[mobile_static] Removed use of StringAssert nunit helper.
Ludovic Henry [Thu, 2 Jun 2016 21:25:04 +0000 (23:25 +0200)]
[sgen] Use raw mutex for pin_queue_mutex as it's only used during a collection
Ludovic Henry [Tue, 31 May 2016 16:37:46 +0000 (18:37 +0200)]
[coop] Reuse local info variable for polling
This would lead to a crash when unregistering the thread from the currnt MonoThreadInfo* destructor, as `mono_thread_info_current_unchecked` would return NULL. This would trigger an infinite loop in `mono_threads_enter_gc_safe_region_unbalanced_with_info`.
Ludovic Henry [Tue, 31 May 2016 16:35:14 +0000 (18:35 +0200)]
[marshal] Fix unused variable warning
Ludovic Henry [Mon, 30 May 2016 18:19:19 +0000 (20:19 +0200)]
[threads] Make mono_thread_detach_if_exiting return if it detached
Ludovic Henry [Mon, 30 May 2016 18:17:45 +0000 (20:17 +0200)]
[coop] Use mono_thread_info_is_current in checked build
Ludovic Henry [Mon, 30 May 2016 18:16:57 +0000 (20:16 +0200)]
[coop] Remove unecessary assertion
Ludovic Henry [Mon, 30 May 2016 18:15:19 +0000 (20:15 +0200)]
[coop] Switch to GC unsafe state in SIGILL signal handler as it may throw an exception
Ludovic Henry [Mon, 30 May 2016 18:14:43 +0000 (20:14 +0200)]
[runtine] We should always ignore SIGPIPE signal
Ludovic Henry [Mon, 30 May 2016 18:14:09 +0000 (20:14 +0200)]
[coop] Ensure GC unsafe state when throwing exception
Ludovic Henry [Mon, 30 May 2016 18:13:21 +0000 (20:13 +0200)]
[coop] Switch to GC safe around pthread_join
Ludovic Henry [Mon, 30 May 2016 18:11:35 +0000 (20:11 +0200)]
[coop] Do not pass current thread to mono_threads_enter_gc_unsafe_region_cookie
Ludovic Henry [Mon, 30 May 2016 17:16:33 +0000 (19:16 +0200)]
[coop] Fix state transition when unregistering the thread
unregister_thread is the destructor for the current MonoThreadInfo* TLS key, meaning that when in this function, calling mono_thread_info_current_unchecked will always return NULL.
Ludovic Henry [Mon, 30 May 2016 17:08:06 +0000 (19:08 +0200)]
[coop] Make GC safe/unsafe unbalanced transitions public
This is needed by Xamarin.iOS for unbalanced transitions, for example aroung a ObjC @throw.
Ludovic Henry [Mon, 30 May 2016 17:04:02 +0000 (19:04 +0200)]
[coop] Do not include mono-threads-coop.h and mono-threads-api.h in mono-threads.h
This leads to circular dependency between them, while mono-threads.h does not depends on the other 2.
Ludovic Henry [Mon, 30 May 2016 16:42:48 +0000 (18:42 +0200)]
[coop] Do not allow transition on not-attached, not-current and not-live thread
Ludovic Henry [Mon, 30 May 2016 16:29:45 +0000 (18:29 +0200)]
[coop] Remove unecessary GC unsafe transition
Ludovic Henry [Mon, 30 May 2016 16:27:05 +0000 (18:27 +0200)]
[marshal] Fix setting of last error for P/Invoke
On Unix, errno value might change between the native call and the call to mono_marshal_set_last_error, if we exit the gc safe region. We need to ensure that it's done right after the native call.
Ludovic Henry [Mon, 30 May 2016 16:26:31 +0000 (18:26 +0200)]
[checked-build] Fix warning
Ludovic Henry [Mon, 30 May 2016 16:25:24 +0000 (18:25 +0200)]
[coop] Remove DoneBlockingAborted state transition
This state transition would only be possible in case something went wrong. It's better to fix where this issue comes from.
monojenkins [Thu, 2 Jun 2016 20:45:26 +0000 (21:45 +0100)]
Merge pull request #2881 from alexrp/gc-sample-managed-alloc
[gc] Register a critical region when executing managed allocators.
Previously, if we stopped a thread and it had a stack looking like this:
...
profiler_signal_handler
<signal handler called>
managed_allocator
...
We would fail to identify the fact that we've just interrupted a thread that's
in a managed allocator (uninterruptible code) because we only look at the very
latest instruction pointer of the thread, which will be pointing into
profiler_signal_handler or some other function called by it. So we would
happily continue along with the STW process and proceed to doing the actual GC,
where we would see a broken heap.
We could solve this by unwinding the stack and checking all frames, but that's
complicated and error-prone. Instead, register a critical region while the
managed allocator runs. This way, if we don't identify it by instruction pointer, we
will identify it by the fact that the thread is in a critical region.
Alexander Köplinger [Thu, 2 Jun 2016 20:00:38 +0000 (22:00 +0200)]
Merge pull request #3066 from alexanderkyte/pedump_sgen
[runtime] Replace pedump boehm dependency with sgen dependency
Aleksey Kliger [Thu, 2 Jun 2016 19:29:12 +0000 (15:29 -0400)]
[runtime] Mark mono_exception_from_token_two_strings external only
Runtime should use mono_exception_from_token_two_strings_checked
Aleksey Kliger [Thu, 2 Jun 2016 19:21:13 +0000 (15:21 -0400)]
[runtime] Mark mono_exception_from_name_two_strings external only.
Runtime should use mono_exception_from_name_two_strings_checked
Marek Safar [Thu, 2 Jun 2016 19:33:22 +0000 (21:33 +0200)]
[System] Semaphore from referencesource
Neale Ferguson [Thu, 2 Jun 2016 19:33:12 +0000 (15:33 -0400)]
Correct use of localtime() in Win32
Neale Ferguson [Thu, 2 Jun 2016 18:40:05 +0000 (14:40 -0400)]
Use localtime for Win32 and localtime_r for others
Neale Ferguson [Thu, 2 Jun 2016 18:09:26 +0000 (14:09 -0400)]
Correct syntax error and G_LOG_xxx identifier
Neale Ferguson [Thu, 2 Jun 2016 17:40:15 +0000 (13:40 -0400)]
Correct use of Windows APIs
Neale Ferguson [Thu, 2 Jun 2016 17:14:56 +0000 (13:14 -0400)]
Use correct APIs for Windows; Remove sys/time.h
Neale Ferguson [Thu, 2 Jun 2016 15:59:45 +0000 (11:59 -0400)]
Correct conditional compilation & move logger source files to correct place
Aleksey Kliger [Wed, 1 Jun 2016 22:01:43 +0000 (18:01 -0400)]
[runtime] Mark mono_runtime_run_main external only.
Runtime should use mono_runtime_run_main_checked or mono_runtime_try_run_main
Aleksey Kliger [Wed, 1 Jun 2016 19:38:19 +0000 (15:38 -0400)]
[runtime] Mark mono_runtime_exec_main external only.
Runtime should use mono_runtime_exec_main_checked or mono_runtime_try_exec_main
Aleksey Kliger (λgeek) [Thu, 2 Jun 2016 14:31:29 +0000 (10:31 -0400)]
Merge pull request #3087 from lambdageek/dev/monoerror-mono_object_to_string
[runtime] Mark mono_object_to_string external only.
Marek Safar [Thu, 2 Jun 2016 14:19:15 +0000 (16:19 +0200)]
[System] Internal connectionpool from referencesource
Alex Rønne Petersen [Thu, 2 Jun 2016 13:11:51 +0000 (15:11 +0200)]
Merge pull request #3096 from alexrp/master
[bcl] Avoid ObjectDisposedException in EndPointListener.