Alex Rønne Petersen [Wed, 11 Jun 2014 07:22:29 +0000 (09:22 +0200)]
Merge pull request #890 from xoofx/master
[Mono.Linker] Add support for <Module> with static method and pre-mark t...
Alexandre Mutel [Fri, 7 Feb 2014 15:33:23 +0000 (00:33 +0900)]
[Mono.Linker] Add support for using the linker with assemblies referencing WPF
Alexandre Mutel [Thu, 6 Feb 2014 22:19:07 +0000 (07:19 +0900)]
[Mono.Linker] Add support for <Module> with static method and pre-mark them if necessary
Rodrigo Kumpera [Tue, 10 Jun 2014 21:37:40 +0000 (17:37 -0400)]
[sgen] Fix an infinite loop in find_previous_pointer_fragment due to remove CAS'ing the wrong value.
The fragment list has one invariant, the next pointer is tagged if the current fragment is been deleted,
which means the list head can never point to a tagged pointer.
If this invariant is broken, the code in find_previous_pointer_fragment will end up in an infinite loop.
The infinite loop happens in this simplified fragment:
try_again:
prev = &allocator->alloc_head;
1) cur = unmask (*prev);
while (1) {
2) if (*prev != cur)
goto try_again;
So assume allocator->alloc_head points to 0x121, which is tagged.
So execution goes like this:
1) cur is set to 0x120
2) *prev (value 0x121) is different than cur (value 0x120) so retry.
The above will loop forever as the fixup code never touches allocator->alloc_head.
Now that we understand the infinite loop, let's see how the remove code can trigger it.
Use use the following notation in the event sequence:
-> a non tagged pointer
-*> a tagged pointer
first CAS: InterlockedCompareExchangePointer ((volatile gpointer*)&frag->next, mask (next, 1), next)
second CAS: InterlockedCompareExchangePointer ((volatile gpointer*)prev_ptr, next, frag)
Assuming the following initial fragment list and two threads removing two separate fragments:
fragment list; -> A -> B -> C
thread 1 removes A
thread 2 removes B
thread 2 succeed the first CAS
-> A -> B -*> C
thread 1 succeed the first CAS
-> A -*> B -*> C
thread 2 fail the second CAS because of thread 1
-> A -*> B -*> C
thread 1 succeed the second CAS
-> B -*> C
thread 2 succeed the second CAS and set prev_ptr to next,
which at this point is a tagged pointer. Leaving the fragment list like this:
-*> C
After the last CAS, we end up with alloc_head with a tagged pointer, which will cause
the infinite loop we previously explained.
The fix is to unmask the value we store in the second CAS, as the objective is to link
two live fragments and not flag the previous fragment for deletion.
The exact same bug exists in mono-linked-list-set and was fixed there.
Martin Baulig [Tue, 10 Jun 2014 21:05:35 +0000 (23:05 +0200)]
[Http]: Cosmetic, remove some dead code.
The is no reason to ever invoke the callback on the ThreadPool,
it would in fact only cause trouble.
Marek's commit
db92449f was correct, I removed the commented out
code and the no longer used method.
Marek Safar [Tue, 10 Jun 2014 19:30:50 +0000 (21:30 +0200)]
[mcs] Implement rethrow support in awaited catch clause
Martin Baulig [Tue, 10 Jun 2014 19:22:11 +0000 (21:22 +0200)]
[Http]: Fix digest authentication (bug #18799).
We did not correctly parse key-value pairs without quotes in the
challenge.
Martin Baulig [Tue, 10 Jun 2014 18:29:35 +0000 (20:29 +0200)]
[System.Net.Http]: Always add "Content-Length" in HttpClientHandler.SendAsync().
This has been reported on the forums:
http://forums.xamarin.com/discussion/17770/length-required-error-in-http-post-since-latest-release
Jeffrey Stedfast [Tue, 10 Jun 2014 19:15:56 +0000 (15:15 -0400)]
[Mono.Debugger.Soft] Improved ILInterpreter to eval properties that return a primitive constant
Joao Matos [Tue, 10 Jun 2014 19:14:09 +0000 (20:14 +0100)]
[windows] Return early in the vectored exception handler if the thread is not managed by the runtime.
Martin Baulig [Tue, 10 Jun 2014 17:13:10 +0000 (19:13 +0200)]
[Http]: Only recycle ServicePoints from the idle timer (fixes #19823).
Thanks a lot for Martin Potter to find and report the race condition
which was causing the problem.
ServicePointManager.RecycleServicePoints() was a left-over from the
old times when we didn't have an idle-timer based approach.
Jeffrey Stedfast [Tue, 10 Jun 2014 16:54:48 +0000 (12:54 -0400)]
[Mono.Debugger.Soft] minor code cleanup
Joao Matos [Tue, 10 Jun 2014 16:03:30 +0000 (17:03 +0100)]
Fix mono exception handler crashing on windows.
Here's the scenario that causes the crash:
Exception is fired, which invokes mono's vectored exception handler. It
is not an exception mono recognizes, so falls through to the default:
case in the exception handler. The problem is the return value has been
initialized to EXCEPTION_CONTINUE_EXECUTION. This causes SEH not to
process any other handlers, and just attempt to continue execution at
the point the exception was thrown.
The problem is much of windows internals will catch various exceptions
internally and handle them. So instead of the exception being handled,
we would just crash in the bowels of windows.
The solution is to set mono_win_chained_exception_needs_run to TRUE in
the default case - this is what the various exception handlers do if the
exception is not in JIT'd code. This causes the handler to return
EXCEPTION_CONTINUE_SEARCH, which causes SEH to search for the next
handler, and no crash is produced.
Both x86 and x64 had this bug, so I fixed it in both places.
Fix contributed by Steve Anichini.
Joao Matos [Tue, 10 Jun 2014 15:55:24 +0000 (16:55 +0100)]
Changed mono_win_chained_exception_needs_run to be a JIT TLS variable.
This fixes a potential race condition that might happen if two threads try to handle an exception at the same time.
Atsushi Eno [Tue, 10 Jun 2014 12:49:05 +0000 (21:49 +0900)]
[sys.xaml] fix TypeId and get broken WindowsBase tests pass.
Alex Rønne Petersen [Tue, 10 Jun 2014 07:40:22 +0000 (09:40 +0200)]
Attempt to sanitize the `vasprintf` situation in eglib.
The problem is that on some platforms we call the function
without having provided a prototype for it. This breaks when
building with `-Werror`.
Now we declare it in the private `vasprintf.h` header when
the platform doesn't have a declaration in `stdio.h`. This
should also let us remove the hack in `glib.h` for MSVC.
This may or may not break the build on some platforms; I've
tried on those that I have access to with success. Let me
know if this breaks anything.
Alex Rønne Petersen [Tue, 10 Jun 2014 07:34:01 +0000 (09:34 +0200)]
Add build system plumbing for building with -Werror.
Alex Rønne Petersen [Tue, 10 Jun 2014 01:29:10 +0000 (03:29 +0200)]
Merge pull request #1094 from LRFalk01/master
Identities not being set in ClaimsPrincipal Ctor
Lucas [Tue, 10 Jun 2014 01:20:35 +0000 (21:20 -0400)]
Identities not being set in ClaimsPrincipal Ctor
Class' identities member is not set in constructor ClaimsPrincipal
(IEnumerable<ClaimsIdentity> identities)
Alex Rønne Petersen [Tue, 10 Jun 2014 01:15:16 +0000 (03:15 +0200)]
Remove unnecessary MPH_INTERNAL applied to a function definition.
This should be applied to prototypes, and it already is for
this function (in mph.h).
Alex Rønne Petersen [Mon, 9 Jun 2014 23:45:25 +0000 (01:45 +0200)]
Remove the architecture conditions for using `perf` in the log profiler.
We now use generic atomics which work on all platforms, so there's
no reason to keep this constraint here. This allows the `perf`-backed
profiler to be used on mips, ppc, s390x, etc.
Alex Rønne Petersen [Mon, 9 Jun 2014 23:44:18 +0000 (01:44 +0200)]
Revert "Disable `perf` support in the profiler when running on Android (for now)."
This reverts commit
8e35b7d01e14371851a806dad6196b36d9163c91.
The fallback implementation (as used on other platforms) appears to hang
the runtime. Having a maybe-working `perf`-backed sample profiler is better
than a not-working sample profiler.
Zoltan Varga [Mon, 9 Jun 2014 15:37:20 +0000 (17:37 +0200)]
Revert "[x86] Reenable the no pushes code."
This reverts commit
5093efd55883e8a8a093fdb43d938d7b9dde7a4e.
Revert this as it still breaks the build.
Zoltan Varga [Mon, 9 Jun 2014 15:11:51 +0000 (17:11 +0200)]
[x86] Fix the build.
Zoltan Varga [Mon, 9 Jun 2014 14:35:39 +0000 (16:35 +0200)]
[x86] Reenable the no pushes code.
Atsushi Eno [Mon, 9 Jun 2014 03:42:00 +0000 (12:42 +0900)]
[sys.xaml] remove extraneous NET_2_1 and use __MOBILE__ to make it build for XA/XiOS.
Zoltan Varga [Sun, 8 Jun 2014 21:18:53 +0000 (23:18 +0200)]
[jit] Align the stack when using the pushless code on x86.
Alex Rønne Petersen [Sun, 8 Jun 2014 19:05:03 +0000 (21:05 +0200)]
Merge pull request #1090 from BrianDurham/patch-2
Update X11Display.cs - change "Check you DISPLAY"
Alex Rønne Petersen [Sun, 8 Jun 2014 19:04:33 +0000 (21:04 +0200)]
Merge pull request #1089 from BrianDurham/patch-1
Update Graphics.cs - change "Check you DISPLAY"
Alex Rønne Petersen [Sun, 8 Jun 2014 17:51:56 +0000 (19:51 +0200)]
Merge pull request #1091 from BrianDurham/patch-3
Update XplatUIX11.cs - change "Check you DISPLAY"
Alex Rønne Petersen [Sun, 8 Jun 2014 17:51:42 +0000 (19:51 +0200)]
Merge pull request #1092 from BrianDurham/patch-4
Update XplatUIX11GTK.cs - change "Check you DISPLAY"
Brian Durham [Sun, 8 Jun 2014 15:24:35 +0000 (10:24 -0500)]
Update XplatUIX11GTK.cs - change "Check you DISPLAY"
Update XplatUIX11GTK.cs - change "Check you DISPLAY" text to "Check your DISPLAY"
Brian Durham [Sun, 8 Jun 2014 15:22:06 +0000 (10:22 -0500)]
Update XplatUIX11.cs - change "Check you DISPLAY"
Update XplatUIX11.cs - change "Check you DISPLAY" to "Check your DISPLAY"
Brian Durham [Sun, 8 Jun 2014 15:18:02 +0000 (10:18 -0500)]
Update X11Display.cs - change "Check you DISPLAY"
Change "Check you DISPLAY environment variable" to "Check your DISPLAY environment variable"
Brian Durham [Sun, 8 Jun 2014 15:14:50 +0000 (10:14 -0500)]
Update Graphics.cs - change "Check you DISPLAY"
Update Graphics.cs - change "Check you DISPLAY environment variable" to "Check your DISPLAY environment variable"
Zoltan Varga [Sun, 8 Jun 2014 12:28:38 +0000 (14:28 +0200)]
[x86] Disable the no-pushes code for now, it breaks many tests.
Alex Rønne Petersen [Sun, 8 Jun 2014 02:09:05 +0000 (04:09 +0200)]
Apply the change in
a99ebf9843f0cf92b3a9a856738378dcace20566 to mprof-report too.
Alex Rønne Petersen [Sat, 7 Jun 2014 23:55:54 +0000 (01:55 +0200)]
Fix a ton of warnings when building the log profiler with newer zlib versions.
Rodrigo Kumpera [Sat, 7 Jun 2014 23:10:50 +0000 (19:10 -0400)]
Merge pull request #1088 from BrzVlad/pushless
[x86] Arguments to calls are passed via moves, instead of pushes.
Alex Rønne Petersen [Sat, 7 Jun 2014 20:26:58 +0000 (22:26 +0200)]
Silence another array subscript warning in eglib/src/sort.frag.h.
Alex Rønne Petersen [Sat, 7 Jun 2014 20:19:39 +0000 (22:19 +0200)]
Joao Matos [Sat, 7 Jun 2014 17:35:41 +0000 (18:35 +0100)]
Fixed the build on MSVC.
Local variables need to be declared at the start of the block.
Alex Rønne Petersen [Sat, 7 Jun 2014 16:03:31 +0000 (18:03 +0200)]
Add missing prototypes to supportw.c.
Alex Rønne Petersen [Sat, 7 Jun 2014 16:03:19 +0000 (18:03 +0200)]
Comment an unused function in minizip.
Alex Rønne Petersen [Sat, 7 Jun 2014 16:02:29 +0000 (18:02 +0200)]
Fix z_alloc () signature.
Yes, really. zlib really uses a 32-bit int here...
Alex Rønne Petersen [Sat, 7 Jun 2014 16:02:14 +0000 (18:02 +0200)]
Add missing prototypes to Mono.Posix C sources.
Alex Rønne Petersen [Sat, 7 Jun 2014 16:01:10 +0000 (18:01 +0200)]
Move shared_area_disabled () behind ifdef.
Alex Rønne Petersen [Sat, 7 Jun 2014 16:00:41 +0000 (18:00 +0200)]
Wrap deadce_has_run variable in DISABLE_SSA ifdef.
Alex Rønne Petersen [Sat, 7 Jun 2014 15:59:49 +0000 (17:59 +0200)]
Add g_assert_not_reached () to mono_gc_pthread_exit ().
On Android, pthread_exit () is not decorated as noreturn.
Alex Rønne Petersen [Sat, 7 Jun 2014 15:59:18 +0000 (17:59 +0200)]
Silence unused mkstemp result warnings in jay.
Alex Rønne Petersen [Sat, 7 Jun 2014 15:58:48 +0000 (17:58 +0200)]
Add missing prototypes in ikvm-native.
Alex Rønne Petersen [Sat, 7 Jun 2014 15:58:32 +0000 (17:58 +0200)]
Mark an unused variable as such in eglib/test/file.c.
Alex Rønne Petersen [Sat, 7 Jun 2014 15:57:46 +0000 (17:57 +0200)]
Disable -Warray-bounds in eglib/src/sort.frag.h!insert_list in GCC 4.6.0+.
Alex Rønne Petersen [Sat, 7 Jun 2014 15:56:50 +0000 (17:56 +0200)]
Disable -Wreturn-local-addr in libgc/mark_rts.c!GC_approx_sp with GCC 4.8.0+.
Alex Rønne Petersen [Sat, 7 Jun 2014 15:56:06 +0000 (17:56 +0200)]
Compile libgc with -Wno-deprecated-declarations as it uses some obsolete POSIX APIs.
Alex Rønne Petersen [Sat, 7 Jun 2014 14:52:50 +0000 (16:52 +0200)]
Revert unintentional change.
Alex Rønne Petersen [Sat, 7 Jun 2014 14:38:47 +0000 (16:38 +0200)]
Fix the build. We've been missing this include for ages...
Alex Rønne Petersen [Sat, 7 Jun 2014 14:18:35 +0000 (16:18 +0200)]
Bring the implementation of the 64-bit CAS fallback in line with the 32-bit one.
Alex Rønne Petersen [Sat, 7 Jun 2014 14:13:22 +0000 (16:13 +0200)]
Mark the `spin` variable in atomic.c as G_GNUC_UNUSED.
It would require an `#ifdef` forest to get the conditions
under which it is used right.
Alex Rønne Petersen [Sat, 7 Jun 2014 13:54:32 +0000 (15:54 +0200)]
Merge branch 'master' of github.com:mono/mono
Zoltan Varga [Sat, 7 Jun 2014 13:21:02 +0000 (15:21 +0200)]
Revert "Fix a warning in atomic.c."
This reverts commit
1fdc8789a7f4bfc6fa7f67c126569765194a3b6c.
This breaks the ios build:
../../../../../mono/mono/utils/atomic.c: In function ‘InterlockedCompareExchange64’:
../../../../../mono/mono/utils/atomic.c:572: error: ‘spin’ undeclared (first use in this function)
../../../../../mono/mono/utils/atomic.c:572: error: (Each undeclared identifier is reported only once
../../../../../mono/mono/utils/atomic.c:572: error: for each function it appears in.)
Zoltan Varga [Fri, 6 Jun 2014 23:22:01 +0000 (01:22 +0200)]
[arm] Fix OP_ATOMIC_CAS_I4.
Brezae Vlad [Wed, 4 Jun 2014 22:46:54 +0000 (01:46 +0300)]
[x86] Arguments to calls are passed via moves, instead of pushes.
I release these changes under the MIT license.
Alex Rønne Petersen [Fri, 6 Jun 2014 21:02:33 +0000 (23:02 +0200)]
Disable `perf` support in the profiler when running on Android (for now).
We need to assess the situation before we enable this everywhere. Apparently
some older devices have trouble with `perf`.
Alex Rønne Petersen [Fri, 6 Jun 2014 20:58:20 +0000 (22:58 +0200)]
Fix a warning in atomic.c.
Alex Rønne Petersen [Fri, 6 Jun 2014 20:57:55 +0000 (22:57 +0200)]
Remove a #warning in security.c which gets triggered on OS X.
Ludovic Henry [Fri, 6 Jun 2014 20:00:03 +0000 (16:00 -0400)]
[counters] Add counters documentation to man page
Alex Rønne Petersen [Fri, 6 Jun 2014 13:20:52 +0000 (15:20 +0200)]
Fix printf formatting warnings in mono-counters.c.
Alex Rønne Petersen [Fri, 6 Jun 2014 13:19:20 +0000 (15:19 +0200)]
Use G_GNUC_UNUSED instead of commenting out variable declarations.
The previous approach resulted in mixed decls/stmts warnings.
Alex Rønne Petersen [Fri, 6 Jun 2014 13:17:19 +0000 (15:17 +0200)]
Fix a ton of printf formatting warnings in decode.c.
Alex Rønne Petersen [Fri, 6 Jun 2014 12:52:28 +0000 (14:52 +0200)]
Silence some warnings in decode.c.
Alex Rønne Petersen [Fri, 6 Jun 2014 12:52:09 +0000 (14:52 +0200)]
Fix volatile pointer casts in proflog.c.
Alex Rønne Petersen [Fri, 6 Jun 2014 12:51:44 +0000 (14:51 +0200)]
Silence a bunch of unused result warnings in proflog.c.
Alex Rønne Petersen [Fri, 6 Jun 2014 12:41:18 +0000 (14:41 +0200)]
Fix a bunch of warnings caused by unused functions.
Alex Rønne Petersen [Fri, 6 Jun 2014 12:40:56 +0000 (14:40 +0200)]
Add suggested parentheses to RHS of ^ operator.
Alex Rønne Petersen [Fri, 6 Jun 2014 12:40:24 +0000 (14:40 +0200)]
Fix formatting specifiers for some size_t arguments.
Zoltan Varga [Fri, 6 Jun 2014 01:00:22 +0000 (03:00 +0200)]
[runtime] Avoid joining attached threads. Fixes #19343.
Martin Baulig [Wed, 4 Jun 2014 21:31:08 +0000 (23:31 +0200)]
[Http]: Read version from "HTTP CONNECT" response.
When using "HTTP CONNECT" to create a tunnel to a proxy server,
check the proxy server's response for the HTTP Version and close
the connection if it's HTTP/1.0.
Martin Baulig [Wed, 4 Jun 2014 19:03:22 +0000 (21:03 +0200)]
[Http]: Fix the loop in WebConnection.ReadHeaders().
We need to reset `gotStatus' each time we enter the outer loop or we
would attempt to interpret the status line as a header.
Zoltan Varga [Thu, 5 Jun 2014 18:57:50 +0000 (20:57 +0200)]
Merge pull request #1084 from tritao/msvc-warnings
MSVC warning fixes
Zoltan Varga [Thu, 5 Jun 2014 18:47:56 +0000 (20:47 +0200)]
[runtime] Fix support for custom marshallers defined in other assemblies. Fixes #20020.
Joao Matos [Thu, 5 Jun 2014 18:45:07 +0000 (19:45 +0100)]
Fixed monodis MSVC build.
We need to include "mono/utils/mono-compiler.h" to get the proper isinf/isnan declaration.
Marek Safar [Thu, 5 Jun 2014 17:35:32 +0000 (19:35 +0200)]
[mcs] Return type inference of async anonymous methods
Marek Safar [Thu, 5 Jun 2014 16:29:54 +0000 (18:29 +0200)]
[mcs] Check for await expression inside new delegate statement
Zoltan Varga [Thu, 5 Jun 2014 17:05:39 +0000 (19:05 +0200)]
[runtime] Fix a jit assertion on a class which contains an empty struct as a static field. Fixes #20349.
Joao Matos [Thu, 5 Jun 2014 15:19:26 +0000 (16:19 +0100)]
Regenerate keyboards.resx resource file.
The existing one is reported as malformed XML by csc.
Joao Matos [Thu, 5 Jun 2014 14:40:37 +0000 (15:40 +0100)]
Fixed warning in MSVC: 'unreferenced local variable'.
Joao Matos [Thu, 5 Jun 2014 14:39:40 +0000 (15:39 +0100)]
Fixed warning in MSVC: 'different types for formal and actual parameter'.
Joao Matos [Thu, 5 Jun 2014 14:37:46 +0000 (15:37 +0100)]
Fixed warning in MSVC: 'void' function returning a value.
Joao Matos [Thu, 5 Jun 2014 14:35:39 +0000 (15:35 +0100)]
Fixed warnings in MSVC: 'unreferenced local variable'.
Joao Matos [Thu, 5 Jun 2014 14:34:00 +0000 (15:34 +0100)]
Removed an unused variable from the code, fixes a warning in MSVC.
Joao Matos [Thu, 5 Jun 2014 14:31:28 +0000 (15:31 +0100)]
Fixed warning in MSVC: 'unreferenced local variable'.
Joao Matos [Thu, 5 Jun 2014 14:29:55 +0000 (15:29 +0100)]
Fixed warning in MSVC: 'unreferenced local variable'.
Joao Matos [Thu, 5 Jun 2014 14:28:33 +0000 (15:28 +0100)]
Fixed warning in MSVC: 'different types for formal and actual parameter'.
Joao Matos [Thu, 5 Jun 2014 14:27:45 +0000 (15:27 +0100)]
Fixed warning in MSVC: 'getpid' undefined; assuming extern returning int.
Joao Matos [Thu, 5 Jun 2014 14:25:13 +0000 (15:25 +0100)]
Fixed unreferenced local variable warning in MSVC.
Joao Matos [Thu, 5 Jun 2014 14:21:05 +0000 (15:21 +0100)]
Fixed MSVC warning about unreferenced local variable.
Joao Matos [Thu, 5 Jun 2014 14:18:14 +0000 (15:18 +0100)]
Fixed MSVC warning about different types for formal and actual parameter.
Joao Matos [Thu, 5 Jun 2014 14:15:01 +0000 (15:15 +0100)]
Fixed unreferenced variables/label warnings in MSVC.
Joao Matos [Thu, 5 Jun 2014 14:12:12 +0000 (15:12 +0100)]
Fixed unsigned/signed mismatch warning.