mono.git
7 years ago[msvc] Update csproj files (#4287)
monojenkins [Tue, 24 Jan 2017 17:12:19 +0000 (17:12 +0000)]
[msvc] Update csproj files (#4287)

7 years agoMerge pull request #3806 from BrzVlad/feature-parallel-gc-final
Vlad Brezae [Tue, 24 Jan 2017 11:03:05 +0000 (13:03 +0200)]
Merge pull request #3806 from BrzVlad/feature-parallel-gc-final

[sgen] Parallel concurrent major

7 years agoBump corert
Marek Safar [Mon, 23 Jan 2017 20:12:22 +0000 (15:12 -0500)]
Bump corert

7 years ago[build] Add new profile
Marek Safar [Mon, 23 Jan 2017 20:43:02 +0000 (15:43 -0500)]
[build] Add new profile

7 years ago[socket] Ensure werror is initialized to 0
Ludovic Henry [Mon, 23 Jan 2017 20:29:07 +0000 (15:29 -0500)]
[socket] Ensure werror is initialized to 0

7 years ago[build] Add System.Text.Encoding.CodePages dependency used for non-ascii files in...
Marek Safar [Mon, 23 Jan 2017 17:56:35 +0000 (12:56 -0500)]
[build] Add System.Text.Encoding.CodePages dependency used for non-ascii files in build

7 years ago[msvc] Update csproj files (#4284)
monojenkins [Mon, 23 Jan 2017 17:19:22 +0000 (17:19 +0000)]
[msvc] Update csproj files (#4284)

7 years ago[runtime] Remove duplicate unused SHA1 implementation.
Zoltan Varga [Mon, 23 Jan 2017 08:23:20 +0000 (03:23 -0500)]
[runtime] Remove duplicate unused SHA1 implementation.

7 years ago[mono-sha1] make SHA1Transform thread-safe
Bernhard Urban [Fri, 20 Jan 2017 15:15:04 +0000 (16:15 +0100)]
[mono-sha1] make SHA1Transform thread-safe

should fix https://bugzilla.xamarin.com/show_bug.cgi?id=41133

The bug exposed itself as System.MethodAccessExceptionMethod which is
thrown when a method isn't allowed to call another method.  Several
things are checked for this: Among other things, the runtime checks if
the public key in the friend list of the caller assembly matches the
public key in the callee assembly.

The issue here was that two threads computed the SHA1 at the same time,
using the same buffer and therefore computing garbage.

7 years ago[aot] Allow the redirection of aot profile output to an already opened fd using outfi...
Zoltan Varga [Mon, 23 Jan 2017 10:48:54 +0000 (05:48 -0500)]
[aot] Allow the redirection of aot profile output to an already opened fd using outfile=#<fdnum>.

7 years agoEnable AOT for all roslyn assemblies.
Zoltan Varga [Wed, 18 Jan 2017 00:50:19 +0000 (19:50 -0500)]
Enable AOT for all roslyn assemblies.

7 years agoFix a few cppcheck errors (#4281)
Alexander Köplinger [Mon, 23 Jan 2017 02:11:40 +0000 (03:11 +0100)]
Fix a few cppcheck errors (#4281)

* [zlib] Fix CppCheck error "Shifting a negative value is undefined behaviour"

This matches what upstream now does:
https://github.com/madler/zlib/blob/2edb94a3025d288dc251bc6cbb2c02e60fbd7438/inflate.c#L1529

* [scripts] Fix CppCheck error "Memory leak: nargv"

* [tests] Fix CppCheck error: "Memory leak: reference"

* [aot-compiler] Fix CppCheck error: "Resource leak: infile"

* [metadata] Fix CppCheck error: "Uninitialized variable: ret"

7 years agoMerge pull request #4274 from kumpera/cctor-abort
Rodrigo Kumpera [Sun, 22 Jan 2017 15:20:38 +0000 (10:20 -0500)]
Merge pull request #4274 from kumpera/cctor-abort

[runtime] Latest attempt at the cctor abort race. All tests passing locally.

7 years agoFix tarball build
Alexander Köplinger [Sun, 22 Jan 2017 02:13:56 +0000 (03:13 +0100)]
Fix tarball build

w32api.h wasn't included in any sources in the Makefile.
Also fix path in vcxproj, the file is in mono/utils not mono/metadata.

7 years ago[aot] Init the plt before setting acfg->methods_loaded which is accessed outside...
Zoltan Varga [Sat, 21 Jan 2017 11:04:22 +0000 (06:04 -0500)]
[aot] Init the plt before setting acfg->methods_loaded which is accessed outside the lock.

7 years ago[io-layer] Extract error (#4279)
Ludovic Henry [Sat, 21 Jan 2017 01:15:19 +0000 (20:15 -0500)]
[io-layer] Extract error (#4279)

* [file] Remove dead field

* [process] Remove wapi_getpid

* [process] Remove CloseHandle

* [io-layer] Remove dead MONO_TRACE

* [io-layer] Extract error

* [io-layer] Extract wapi.h

* [io-layer] Remove the io-layer

7 years ago[runtime] Fix the loaded llvm build.
Zoltan Varga [Sat, 21 Jan 2017 00:02:43 +0000 (19:02 -0500)]
[runtime] Fix the loaded llvm build.

7 years ago[corlib] Removes unused method
Marek Safar [Fri, 20 Jan 2017 22:23:58 +0000 (23:23 +0100)]
[corlib] Removes unused method

7 years ago[btls] Remove last traces of statically linked btls
Alexander Köplinger [Fri, 20 Jan 2017 19:34:29 +0000 (20:34 +0100)]
[btls] Remove last traces of statically linked btls

It was removed in d831fc4ec4c90930026342431641e529b2e34dc8.

7 years ago[btls] Add dependency on btls source files in Makefile so change tracking works
Alexander Köplinger [Fri, 20 Jan 2017 19:33:37 +0000 (20:33 +0100)]
[btls] Add dependency on btls source files in Makefile so change tracking works

7 years agoReally fix the file mode this time...
Alexander Köplinger [Fri, 20 Jan 2017 18:49:03 +0000 (19:49 +0100)]
Really fix the file mode this time...

Sorry, should probably get a coffee :(

7 years agoFix inadvertent file mode change in previous commit
Alexander Köplinger [Fri, 20 Jan 2017 18:44:36 +0000 (19:44 +0100)]
Fix inadvertent file mode change in previous commit

7 years ago[Facades] Refresh netstandard20 typeforwarders
Alexander Köplinger [Fri, 20 Jan 2017 18:40:55 +0000 (19:40 +0100)]
[Facades] Refresh netstandard20 typeforwarders

7 years ago[profiler] Add mono-profiler-aot.h to EXTRA_DIST
Alexander Köplinger [Fri, 20 Jan 2017 15:59:55 +0000 (16:59 +0100)]
[profiler] Add mono-profiler-aot.h to EXTRA_DIST

This broke the tarball build.

7 years ago[io-layer] Extract file (#4255)
Ludovic Henry [Fri, 20 Jan 2017 16:32:48 +0000 (11:32 -0500)]
[io-layer] Extract file (#4255)

* [io-layer] Merge io related headers

* [io-layer] Remove global variable _wapi_had_shut_down

* [io-layer] Inline io-portability.c file into io.c

* [io-layer] Inline locking.c file into io.c

* [io-layer] Inline posix.c file into io.c

* [file] Move metadata/file-io* files to metadata/w32file*

* [io-layer] Extract file functions

* [file] Remove overlapped parameter which is always NULL

* [file] Remove SECURITY_ATTRIBUTES parameter which is always NULL

* [file] Remove GET_FILEEX_INFO_LEVELS parameter which is always GetFileExInfoStandard

* [file] Replace ULARGE_INTEGER parameter type with guint64

* [file] Replace WIN32_FILE_ATTRIBUTE_DATA parameter type with MonoIOStat

* [file] Remove mono_w32file_create unused parameter tmplate

* [file] Fix win32 build

7 years ago[reflection] Use coop handles for MonoMethod icalls (#4272)
Aleksey Kliger (λgeek) [Fri, 20 Jan 2017 15:35:02 +0000 (10:35 -0500)]
[reflection] Use coop handles for MonoMethod icalls (#4272)

* [reflection] Use coop handles for MonoMethod.GetGenericArguments

* [reflection] Use handles for ves_icall_MonoMethod_GetGenericMethodDefinition
  and two more trivial functions:
  - ves_icall_MonoMethod_get_IsGenericMethod
  - ves_icall_MonoMethod_get_IsGenericMethodDefinition

* [runtime] Add mono_method_get_base_method function

  - Internal function in class-internals.h, for now.
  - Code factored out from ves_icall_MonoMethod_get_base_method
  - ves_icall_MonoMethod_get_base_method just calls this utility and wraps on
    reflection objects, using handles.

* [reflection] Use coop handles for ves_icall_MonoMethod_MakeGenericMethod_impl

* [reflection] Use coop handles for ves_icall_MonoMethod_GetPInvoke

* [reflection] Use coop handles for ves_icall_MonoMethod_get_core_clr_security_level

* [reflection] Use coop handles for ves_icall_MonoMethod_get_name

7 years ago[sgen] Always use a context specialized gray stack
Vlad Brezae [Fri, 20 Jan 2017 15:02:36 +0000 (17:02 +0200)]
[sgen] Always use a context specialized gray stack

7 years ago[bcl] Rename FEATURE_MONO_CAS to MONO_FEATURE_CAS
Alexander Köplinger [Fri, 20 Jan 2017 15:00:56 +0000 (16:00 +0100)]
[bcl] Rename FEATURE_MONO_CAS to MONO_FEATURE_CAS

To be consistent with the other MONO_FEATURE_* defines.

7 years ago[runtime] Mono.Dynamic.Interpreter is no more, delete it from the list of assemblies...
Zoltan Varga [Fri, 20 Jan 2017 10:08:50 +0000 (05:08 -0500)]
[runtime] Mono.Dynamic.Interpreter is no more, delete it from the list of assemblies compiled by make fullaotcheck.

7 years ago[runtime] Fix locking issues while accessing MonoClass bitfields. (#4275)
Zoltan Varga [Fri, 20 Jan 2017 08:28:22 +0000 (03:28 -0500)]
[runtime] Fix locking issues while accessing MonoClass bitfields. (#4275)

7 years ago[System.Transactions] Add stubs and visibility fixes for netstandard20 APIs
Alexander Köplinger [Fri, 20 Jan 2017 02:06:05 +0000 (03:06 +0100)]
[System.Transactions] Add stubs and visibility fixes for netstandard20 APIs

7 years ago[runtime] Poll for interruption on cctor execution if mono_threads_end_abort_protecte...
Rodrigo Kumpera [Fri, 20 Jan 2017 02:04:46 +0000 (18:04 -0800)]
[runtime] Poll for interruption on cctor execution if mono_threads_end_abort_protected_block returns true.

7 years ago[runtime] Add new thread state INTERRUPT_REQUEST_DEFERRED to fix race with abort...
Rodrigo Kumpera [Fri, 20 Jan 2017 02:02:20 +0000 (18:02 -0800)]
[runtime] Add new thread state INTERRUPT_REQUEST_DEFERRED to fix race with abort protected blocks.

The way this works is that when we install a protected block, we change a interrupt requested to interrupt request deferred.
Then, when protected block count drops to zero, we switch back and inform the caller to poll for interrupts.

Additionally, when interrupting, we set it to deferred if there's a protected block in effect and it's not a self interrupt.

7 years ago[threading] Change mono_thread_try_resume_interruption to check for the abort thresho...
Rodrigo Kumpera [Fri, 20 Jan 2017 02:01:43 +0000 (18:01 -0800)]
[threading] Change mono_thread_try_resume_interruption to check for the abort threshold too.

7 years ago[runtime] Workaround in Environment::Exit icall in case current thread has an interru...
Rodrigo Kumpera [Fri, 20 Jan 2017 02:00:46 +0000 (18:00 -0800)]
[runtime] Workaround in Environment::Exit icall in case current thread has an interruption token installed. Tracked under bug #51653.

7 years ago[mono/tests] Use multiple return values to make it easy to pinpoint the failure.
Rodrigo Kumpera [Fri, 20 Jan 2017 01:59:16 +0000 (17:59 -0800)]
[mono/tests] Use multiple return values to make it easy to pinpoint the failure.

7 years agoFix memory leak when creating sequence points (#4273)
Michael DeRoy [Fri, 20 Jan 2017 00:28:47 +0000 (19:28 -0500)]
Fix memory leak when creating sequence points (#4273)

7 years ago[sgen] Always use one concurrent worker
Vlad Brezae [Tue, 18 Oct 2016 13:32:58 +0000 (16:32 +0300)]
[sgen] Always use one concurrent worker

We have the infrastructure to use multiple concurrent workers, but, in theory, this could starve the mutator threads. In the future, we should do additional research and consider using multiple concurrent workers.

7 years ago[sgen] Awaken workers if they are finished while there is work to steal
Vlad Brezae [Fri, 21 Oct 2016 14:46:08 +0000 (17:46 +0300)]
[sgen] Awaken workers if they are finished while there is work to steal

7 years ago[sgen] Use non-synchronized gray stack when only one worker is running
Vlad Brezae [Mon, 17 Oct 2016 10:20:12 +0000 (13:20 +0300)]
[sgen] Use non-synchronized gray stack when only one worker is running

7 years ago[sgen] Spread the initial roots of workers
Vlad Brezae [Fri, 21 Oct 2016 11:05:35 +0000 (14:05 +0300)]
[sgen] Spread the initial roots of workers

A parallel phase starts with enqueuing of jobs and of sections to the distribute gray queue. In order to have a good work distribution we split jobs into multiple smaller jobs. We now do the same with the initial gray queue sections, by trying to always have a minimum number of starting sections.

7 years ago[sgen] Worker gray queue stealing
Vlad Brezae [Fri, 14 Oct 2016 17:14:35 +0000 (20:14 +0300)]
[sgen] Worker gray queue stealing

When a worker is out of work, it tries to steal a section from the bottom of another workers' private gray queue. This operation takes a lock. Pushes/Pops done by the owner thread on its own private gray queue are done in lock free fashion, using membar/CAS (at section level).

7 years ago[sgen] Properly init the size of a new gray queue section
Vlad Brezae [Wed, 12 Oct 2016 10:57:46 +0000 (13:57 +0300)]
[sgen] Properly init the size of a new gray queue section

To avoid confusion

7 years ago[profiler] Fix vtune build
Vlad Brezae [Fri, 30 Sep 2016 09:38:25 +0000 (12:38 +0300)]
[profiler] Fix vtune build

7 years ago[sgen] Add worker index to the binary protocol entries
Vlad Brezae [Thu, 29 Sep 2016 11:30:15 +0000 (14:30 +0300)]
[sgen] Add worker index to the binary protocol entries

7 years ago[sgen] Clean exit if we can't read binprot file due to unsupported version
Vlad Brezae [Thu, 29 Sep 2016 10:36:08 +0000 (13:36 +0300)]
[sgen] Clean exit if we can't read binprot file due to unsupported version

7 years ago[sgen] Switch to nopar context when we are left with one worker
Vlad Brezae [Wed, 28 Sep 2016 23:16:06 +0000 (02:16 +0300)]
[sgen] Switch to nopar context when we are left with one worker

Non-parallel context is significantly faster since it doesn't require CAS-ing. Use it when we are left with only one worker so we don't regress performance.

7 years ago[sgen] Parallel mod union scan jobs
Vlad Brezae [Wed, 28 Sep 2016 13:59:34 +0000 (16:59 +0300)]
[sgen] Parallel mod union scan jobs

7 years ago[sgen] Avoid allocating mod union cardtables for los objects when scanning
Vlad Brezae [Thu, 19 Jan 2017 20:20:33 +0000 (22:20 +0200)]
[sgen] Avoid allocating mod union cardtables for los objects when scanning

We should consider doing the same when marking the mod union card table, if we have no cards to mark.

7 years ago[sgen] Remove unused function
Vlad Brezae [Wed, 28 Sep 2016 22:32:18 +0000 (01:32 +0300)]
[sgen] Remove unused function

7 years ago[sgen] Use parallel workers when finishing concurrent collections
Vlad Brezae [Tue, 27 Sep 2016 21:21:11 +0000 (00:21 +0300)]
[sgen] Use parallel workers when finishing concurrent collections

7 years ago[sgen] Make getting object size safe with parallel collector
Vlad Brezae [Thu, 20 Oct 2016 23:30:32 +0000 (02:30 +0300)]
[sgen] Make getting object size safe with parallel collector

7 years ago[sgen] Support cementing from multiple workers
Vlad Brezae [Wed, 28 Sep 2016 13:16:32 +0000 (16:16 +0300)]
[sgen] Support cementing from multiple workers

7 years ago[sgen] Disable concurrent queue redirection
Vlad Brezae [Wed, 28 Sep 2016 21:40:06 +0000 (00:40 +0300)]
[sgen] Disable concurrent queue redirection

We used to support the case where workers are running and when the main gc thread populates the redirected gray queue, these queue sections are moved to the workers distribute gray queue from where they are distributed to all the workers. In order to simplify the process, the main gc thread should never do any relevant gc work concurrently with the workers. This means that we no longer need to handle the above case.

7 years ago[sgen] Add parallel copying infrastructure
Vlad Brezae [Tue, 27 Sep 2016 14:48:22 +0000 (17:48 +0300)]
[sgen] Add parallel copying infrastructure

Parallel copying should happen only when the world is stopped and the gc thread is not running. Each thread allocates from its own block freelist, which he obtains by pop-ing the global block free list.

When a worker has to copy an object, it first allocates a new object in a major block and initialises its contents. Afterwards it tries to forward the vtable, using a CAS operation. If the vtable already contains a forwarded object, we just return the forwarded address, and the object that we allocated will be left to die (we expect this case to be extremely unlikely, otherwise we could re-enque the free object in its block's freelist).

After the copying is done, the caller has the duty to update references and mark the new object (which we have to do it also with a CAS).

FIXME : This means that an object can reside on a gray queue without being marked, so another thread can enque again this same object. We should refactor this copying/mark/enqueing mechansim to avoid these issues.

7 years ago[sgen] Add free lists for each workers
Vlad Brezae [Fri, 23 Sep 2016 12:31:35 +0000 (15:31 +0300)]
[sgen] Add free lists for each workers

These will be used for object allocation by the workers

7 years ago[sgen] Parallel precleaning of los objects
Vlad Brezae [Wed, 1 Jun 2016 19:32:12 +0000 (22:32 +0300)]
[sgen] Parallel precleaning of los objects

In the future we should consider splitting large objects.

7 years ago[sgen] Remove unused parameter
Vlad Brezae [Wed, 1 Jun 2016 18:23:46 +0000 (21:23 +0300)]
[sgen] Remove unused parameter

7 years ago[sgen] Parallel major blocks precleaning
Vlad Brezae [Tue, 31 May 2016 21:45:19 +0000 (00:45 +0300)]
[sgen] Parallel major blocks precleaning

We allow spliting a major_scan_cardtable into multiple smaller jobs. For precleaning, we enqueue num_workers precleaning jobs, each one precleaning one in every num_workers blocks from the list.

7 years ago[sgen] Split precleaning into multiple jobs
Vlad Brezae [Tue, 31 May 2016 22:28:25 +0000 (01:28 +0300)]
[sgen] Split precleaning into multiple jobs

7 years ago[sgen] Enqueue preclean through a worker finish callback
Vlad Brezae [Tue, 31 May 2016 20:55:41 +0000 (23:55 +0300)]
[sgen] Enqueue preclean through a worker finish callback

It moves enqueuing back to the main gc giving more flexibility.

7 years ago[sgen] Enable multiple workers
Vlad Brezae [Mon, 30 May 2016 04:34:04 +0000 (07:34 +0300)]
[sgen] Enable multiple workers

7 years ago[sgen] CAS on LOS marking
Vlad Brezae [Mon, 30 May 2016 04:13:13 +0000 (07:13 +0300)]
[sgen] CAS on LOS marking

We make sure we don't double enqueue a large object.

7 years ago[sgen] Add CAS object marking for concurrent workers
Vlad Brezae [Mon, 30 May 2016 02:02:17 +0000 (05:02 +0300)]
[sgen] Add CAS object marking for concurrent workers

When marking an object we need to make sure we are not unmarking other objects (since marking is stored as bits). This also allows us to make sure that we never enqueue the same object multiple times on separate gray queues.

7 years ago[sgen] Add separate scan/copy context for concurrent parallel configuration
Vlad Brezae [Mon, 30 May 2016 01:25:10 +0000 (04:25 +0300)]
[sgen] Add separate scan/copy context for concurrent parallel configuration

7 years ago[sgen] Use array with fixed-size element for mark words
Vlad Brezae [Fri, 27 May 2016 23:12:14 +0000 (02:12 +0300)]
[sgen] Use array with fixed-size element for mark words

There is no benefit in using pointer size element and we need to special case between architectures.

7 years ago[sgen] Support multiple workers
Vlad Brezae [Tue, 17 May 2016 17:24:06 +0000 (20:24 +0300)]
[sgen] Support multiple workers

7 years ago[runtime] Collapse interruption_requested and abort_protected_block_count into a...
Rodrigo Kumpera [Fri, 16 Dec 2016 01:58:32 +0000 (23:58 -0200)]
[runtime] Collapse interruption_requested and abort_protected_block_count into a single var.

This change doesn't change behavior.

7 years ago[sre] Use coop handles in parts of sre.c
Aleksey Kliger [Thu, 12 Jan 2017 15:36:21 +0000 (10:36 -0500)]
[sre] Use coop handles in parts of sre.c

* Convert ves_icall_RuntimeType_MakeGenericType to use handles.
* The above necessitates converting mono_reflection_bind_generic_parameters and
  mono_reflection_type_get_handle (renamed to
  mono_reflection_type_handle_mono_type) to use handles.
* From there we have to touch a lot of builder internals:
  - ves_icall_DynamicMethod_create_dynamic_method
  - ves_icall_ModuleBuilder_RegisterToken
  - ves_icall_ModuleBuilder_basic_init
  - ves_icall_ModuleBuilder_getMethodToken
  - ves_icall_ModuleBuilder_getToken
  - ves_icall_ModuleBuilder_getUSIndex
  - ves_icall_TypeBuilder_create_runtime_class
* As well as runtime functions
  - mono_image_insert_string
  - mono_image_create_token
  - mono_class_{get,has,set}_ref_info
  - mono_reflection_is_usertype
  - mono_dynimage_encode_reflection_sighelper
  - mono_dynamic_image_register_token

7 years agoAdd mdb2ppdb man page, remove prj2make man page
Miguel de Icaza [Thu, 19 Jan 2017 18:48:14 +0000 (13:48 -0500)]
Add mdb2ppdb man page, remove prj2make man page

7 years agoMerge pull request #4269 from kumpera/nuget-fixing-round2
Rodrigo Kumpera [Thu, 19 Jan 2017 18:26:54 +0000 (10:26 -0800)]
Merge pull request #4269 from kumpera/nuget-fixing-round2

[runtime] A pair of small fixes for the ignore assembly work.

7 years ago[sgen] Add multiple thread support for sgen thread pool
Vlad Brezae [Mon, 16 May 2016 23:23:23 +0000 (02:23 +0300)]
[sgen] Add multiple thread support for sgen thread pool

7 years ago[sgen] Add parallel configuration to the sgen testing suite
Vlad Brezae [Mon, 16 May 2016 20:15:41 +0000 (23:15 +0300)]
[sgen] Add parallel configuration to the sgen testing suite

7 years ago[sgen] Add option for a new parallel concurrent collector
Vlad Brezae [Mon, 16 May 2016 19:57:17 +0000 (22:57 +0300)]
[sgen] Add option for a new parallel concurrent collector

7 years ago[sgen] Remove unused prototypes
Vlad Brezae [Mon, 16 May 2016 19:41:06 +0000 (22:41 +0300)]
[sgen] Remove unused prototypes

7 years ago[sgen] Use thread safe addition to block list
Vlad Brezae [Mon, 16 May 2016 19:24:45 +0000 (22:24 +0300)]
[sgen] Use thread safe addition to block list

This will enable us to to parallel block allocation, which is useful when doing parallel copying. We no longer compact the array (using the default array list allocator instead) so we need to account for unallocated slots (slots with null value) in the array at any time (see FOREACH_BLOCK).

7 years ago[threads] Fix crash on unknown policy (#4264)
Ludovic Henry [Thu, 19 Jan 2017 14:31:01 +0000 (09:31 -0500)]
[threads] Fix crash on unknown policy (#4264)

Fixes https://bugzilla.xamarin.com/show_bug.cgi?id=51545

7 years ago[threadpool] Fix race on runtime shutdown (#4263)
Ludovic Henry [Thu, 19 Jan 2017 14:30:07 +0000 (09:30 -0500)]
[threadpool] Fix race on runtime shutdown (#4263)

We cannot free the threadpool, because there is a race on shutdown where a managed thread may request a new threadpool thread, but we already destroyed the threadpool. So to avoid a use-after-free, we simply do not free the threadpool, as we won't be able to access the threadpool anyway because the ref count will be 0

Fixes https://bugzilla.xamarin.com/show_bug.cgi?id=51219

7 years ago[io-layer] Extract socket (#4241)
Ludovic Henry [Thu, 19 Jan 2017 14:25:55 +0000 (09:25 -0500)]
[io-layer] Extract socket (#4241)

* [socket] Extract win32 and unix specific code from w32socket.c

* [socket] Extract WSAGetLastError and WSASetLastError

* [socket] Extract closesocket

* [socket] Extract iocltsocket

* [socket] Extract socket-wrappers.h functions

* [socket] Extract w32handle operations

* [socket] Extract WSAIoctl

* [socket] Do not use mono_w32socket_ioctl for disconnect

* [socket] Extract errno_to_WSA

* [socket] Remove redundant mono_w32handle_get_type/mono_w32handle_lookup

* [socket] Inline _wapi_* functions

* [socket] Make disconnect not rely on mono_w32socket_ioctl

* [socket] Remove unused parameters to mono_w32socket_transmit_file

* [socket] Refactor calls to mono_w32socket_convert_error

* [socket] Remove dead code

7 years ago[mini] Add new JIT flag JIT_FLAG_DISCARD_RESULTS to reduce the noise when profiling...
Rodrigo Kumpera [Thu, 19 Jan 2017 11:34:50 +0000 (03:34 -0800)]
[mini] Add new JIT flag JIT_FLAG_DISCARD_RESULTS to reduce the noise when profiling the jit with --compile-all. (#4266)

JI registration dominates profiling as it has some perf issues itself.

7 years ago[runtime] A pair of small fixes for the ignore assembly work.
Rodrigo Kumpera [Thu, 19 Jan 2017 01:54:32 +0000 (17:54 -0800)]
[runtime] A pair of small fixes for the ignore assembly work.

image.c (do_mono_image_load): Ignore refonly images when checking for ignorable assemblies.

icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Load the image in ref only mode.

7 years ago[btls] Disable RC4 cipher suites by default
Alexander Köplinger [Wed, 18 Jan 2017 20:53:22 +0000 (21:53 +0100)]
[btls] Disable RC4 cipher suites by default

They should not be used anymore according to https://tools.ietf.org/html/rfc7465
and browser like Chrome, Firefox and Edge/IE [1] already removed them.

We should to do the same. To have everything in one place I also moved
the disabling of SSLv2/v3 to the mono_btls_ssl_ctx_new function as well
instead of disabling it on each single connection.

Fixes https://bugzilla.xamarin.com/show_bug.cgi?id=51625

[1] https://blogs.windows.com/msedgedev/2016/08/09/rc4-now-deprecated/

7 years ago[bockbuild] Fix a packaging regression
Alexis Christoforides [Wed, 18 Jan 2017 20:21:07 +0000 (15:21 -0500)]
[bockbuild] Fix a packaging regression

7 years agoMerge pull request #4262 from kumpera/fix-windows
Rodrigo Kumpera [Wed, 18 Jan 2017 18:18:41 +0000 (13:18 -0500)]
Merge pull request #4262 from kumpera/fix-windows

Fix the windows build.

7 years agoFix the windows build.
Rodrigo Kumpera [Wed, 18 Jan 2017 15:50:51 +0000 (07:50 -0800)]
Fix the windows build.

7 years ago[pdb2mdb] Detect portable PDB and fail gracefully instead of crashing (#4261)
Alexander Köplinger [Wed, 18 Jan 2017 15:48:07 +0000 (16:48 +0100)]
[pdb2mdb] Detect portable PDB and fail gracefully instead of crashing (#4261)

Before when trying to convert an assembly that had a portable PDB
instead of a native PDB alongside it we'd just crash in the
Microsoft.Cci pdb reader.

We now check whether the symbol file is a portable PDB and exit
gracefully with an error message and exit code 2 from the app.

Users which access the Converter class (like e.g. Xamarin Android [1])
directly can now catch the PortablePdbNotSupportedException to
do custom logic.

[1] https://github.com/xamarin/xamarin-android/blob/15f7547fa673e02256a75910c60c5e13eb158d2b/src/Xamarin.Android.Build.Tasks/Tasks/ConvertDebuggingFiles.cs#L28

7 years ago[reflection] Fix ves_icall_RuntimeTypeHandle_GetGenericTypeDefinition_impl
Aleksey Kliger [Wed, 18 Jan 2017 00:40:14 +0000 (19:40 -0500)]
[reflection] Fix ves_icall_RuntimeTypeHandle_GetGenericTypeDefinition_impl

There was a typo in ea176c5bb8d2f93dafeec4aff683860c886c97ba that inadvertantly
replaced `generic_class` by `klass`.

7 years ago[coop handles] Fix mono_gchandle_get_target_handle
Aleksey Kliger [Tue, 17 Jan 2017 22:27:45 +0000 (17:27 -0500)]
[coop handles] Fix mono_gchandle_get_target_handle

Apparently it did not get exercised previously.

7 years ago[test] RuntimeType.GetGenericTypeDefiniton should return the TypeBuilder
Aleksey Kliger [Wed, 18 Jan 2017 00:38:01 +0000 (19:38 -0500)]
[test] RuntimeType.GetGenericTypeDefiniton should return the TypeBuilder

even after CreateType has already been called.

7 years ago[mini-posix] close file stream before exec'ing into GDB/LLDB
Bernhard Urban [Wed, 18 Jan 2017 13:08:50 +0000 (05:08 -0800)]
[mini-posix] close file stream before exec'ing into GDB/LLDB

otherwise it isn't ensured that the content is written to the file.

7 years ago[mini-posix] fix indent
Bernhard Urban [Wed, 18 Jan 2017 13:07:14 +0000 (05:07 -0800)]
[mini-posix] fix indent

7 years ago[exception] add another testcase where an exception is rethrown explicitly (and there...
Bernhard Urban [Mon, 16 Jan 2017 13:46:00 +0000 (14:46 +0100)]
[exception] add another testcase where an exception is rethrown explicitly (and therefore another behavior is expected)

7 years ago[exception] retain stack trace when an exception is rethrown
Bernhard Urban [Mon, 16 Jan 2017 13:45:52 +0000 (14:45 +0100)]
[exception] retain stack trace when an exception is rethrown

7 years agoMerge pull request #4234 from kumpera/katia-flavia
Rodrigo Kumpera [Wed, 18 Jan 2017 06:21:30 +0000 (01:21 -0500)]
Merge pull request #4234 from kumpera/katia-flavia

[runtime] Deny loading bad images.

7 years ago[bockbuild] Fix packaging regression
Alexis Christoforides [Tue, 17 Jan 2017 23:21:58 +0000 (18:21 -0500)]
[bockbuild] Fix packaging regression

7 years ago[tools] Add nuget-hash-extractor tool to help produce the runtime ignored assemblies...
Rodrigo Kumpera [Tue, 17 Jan 2017 22:31:32 +0000 (14:31 -0800)]
[tools] Add nuget-hash-extractor tool to help produce the runtime ignored assemblies table.

This tool takes a folder full of nupkg file and print macro invocations to add to image.c:ignored_assemblies.

Usage:

make download
make run

The download.sh script downloads all nugets we want to ignore. So update it before running if you have more you want to add.

7 years ago[runtime] Deny loading images that belong to a set of well known bad images.
Rodrigo Kumpera [Fri, 13 Jan 2017 19:00:05 +0000 (11:00 -0800)]
[runtime] Deny loading images that belong to a set of well known bad images.

Matching is done by assembly name and GUID. This should be enough to narrow
down the effect.

This approach is not very efficient as it waits for quite some of the loading
process to be on its way before detection. It works in the case that only a few
rare images are matched.

7 years ago[MacSDK] Fix typo in ironlangs manifest
Alexis Christoforides [Tue, 17 Jan 2017 21:33:26 +0000 (16:33 -0500)]
[MacSDK] Fix typo in ironlangs manifest

7 years ago[msvc] Update csproj files (#4254)
monojenkins [Tue, 17 Jan 2017 18:17:57 +0000 (18:17 +0000)]
[msvc] Update csproj files (#4254)

7 years ago[interpreter] fix castclass and isinst instruction
Bernhard Urban [Tue, 17 Jan 2017 16:26:32 +0000 (17:26 +0100)]
[interpreter] fix castclass and isinst instruction

`mono_object_isinst_mbyref_checked` was removed recently. however, this
code unnecessary checks cases that are covered by
`mono_object_isinst_checked` anyway.