diff --git a/configure.REMOVED.git-id b/configure.REMOVED.git-id index a2ef56a568..f7d11f560d 100644 --- a/configure.REMOVED.git-id +++ b/configure.REMOVED.git-id @@ -1 +1 @@ -88b09769fd31b943975a90313f826394af5969eb \ No newline at end of file +713caa60a19e1ee461b6a5c649af0cc5b13ed0d8 \ No newline at end of file diff --git a/configure.ac.REMOVED.git-id b/configure.ac.REMOVED.git-id index 99b66d39db..ccc59e6c5e 100644 --- a/configure.ac.REMOVED.git-id +++ b/configure.ac.REMOVED.git-id @@ -1 +1 @@ -764e8b912ca3a7198895ecc27928b8a1c11ceb4c \ No newline at end of file +55898c9df985bda0d229f0e58ed686a170b20ebd \ No newline at end of file diff --git a/man/mono.1 b/man/mono.1 index c5c19f5274..fbcf76080f 100644 --- a/man/mono.1 +++ b/man/mono.1 @@ -471,6 +471,9 @@ in your program, or Mono's class libraries attempts to generate code dynamically. You should test your software upfront and make sure that you do not use any dynamic features. .TP +\fB--full-aot-interp\fR +Same as --full-aot with fallback to the interpreter. +.TP \fB--gc=boehm\fR, \fB--gc=sgen\fR Selects the Garbage Collector engine for Mono to use, Boehm or SGen. Currently this merely ensures that you are running either the diff --git a/mcs/build/common/Consts.cs b/mcs/build/common/Consts.cs index e93ec90842..2a7a44bdfd 100644 --- a/mcs/build/common/Consts.cs +++ b/mcs/build/common/Consts.cs @@ -34,7 +34,7 @@ static class Consts // Use these assembly version constants to make code more maintainable. // - public const string MonoVersion = "5.14.0.141"; + public const string MonoVersion = "5.14.0.147"; public const string MonoCompany = "Mono development team"; public const string MonoProduct = "Mono Common Language Infrastructure"; public const string MonoCopyright = "(c) Various Mono authors"; diff --git a/mcs/class/lib/monolite-darwin/1051400003/Mono.Security.dll.REMOVED.git-id b/mcs/class/lib/monolite-darwin/1051400003/Mono.Security.dll.REMOVED.git-id index 2a45533dea..d17062cd91 100644 --- a/mcs/class/lib/monolite-darwin/1051400003/Mono.Security.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-darwin/1051400003/Mono.Security.dll.REMOVED.git-id @@ -1 +1 @@ -ca65c98a0f00e648da973e7963968484f46e25a7 \ No newline at end of file +befc828e193756128a4b0755432ce5d10d2cc1e4 \ No newline at end of file diff --git a/mcs/class/lib/monolite-darwin/1051400003/System.Configuration.dll.REMOVED.git-id b/mcs/class/lib/monolite-darwin/1051400003/System.Configuration.dll.REMOVED.git-id index 3fd09a23e6..200a3a58c8 100644 --- a/mcs/class/lib/monolite-darwin/1051400003/System.Configuration.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-darwin/1051400003/System.Configuration.dll.REMOVED.git-id @@ -1 +1 @@ -84b727ef03eef4369b1e15a46b1146ad6a89bec6 \ No newline at end of file +5c0ce009774f46b70774aaa482b92dc2e5314b5c \ No newline at end of file diff --git a/mcs/class/lib/monolite-darwin/1051400003/System.Numerics.dll.REMOVED.git-id b/mcs/class/lib/monolite-darwin/1051400003/System.Numerics.dll.REMOVED.git-id index 9e142d25c6..ab97743aa0 100644 --- a/mcs/class/lib/monolite-darwin/1051400003/System.Numerics.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-darwin/1051400003/System.Numerics.dll.REMOVED.git-id @@ -1 +1 @@ -274e6c6bb39b01195339dcfb8e03af00229e8f94 \ No newline at end of file +0877f763271af8603501edfa1e24eaf3e318198e \ No newline at end of file diff --git a/mcs/class/lib/monolite-darwin/1051400003/System.Security.dll.REMOVED.git-id b/mcs/class/lib/monolite-darwin/1051400003/System.Security.dll.REMOVED.git-id index f3d1f385c5..0403cbcd14 100644 --- a/mcs/class/lib/monolite-darwin/1051400003/System.Security.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-darwin/1051400003/System.Security.dll.REMOVED.git-id @@ -1 +1 @@ -08ee36494b283d9af6c5785332dceb3c2ceb15eb \ No newline at end of file +09995e4e66ac0a22fe41587750417656bfce0821 \ No newline at end of file diff --git a/mcs/class/lib/monolite-darwin/1051400003/System.Xml.dll.REMOVED.git-id b/mcs/class/lib/monolite-darwin/1051400003/System.Xml.dll.REMOVED.git-id index 234a365632..81639e881b 100644 --- a/mcs/class/lib/monolite-darwin/1051400003/System.Xml.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-darwin/1051400003/System.Xml.dll.REMOVED.git-id @@ -1 +1 @@ -71d876d207ac1d4079734e7e07374a48dd139ac6 \ No newline at end of file +5e3eda678d1f01b2aa295f260a86a9621a1396b3 \ No newline at end of file diff --git a/mcs/class/lib/monolite-darwin/1051400003/mcs.exe.REMOVED.git-id b/mcs/class/lib/monolite-darwin/1051400003/mcs.exe.REMOVED.git-id index daae658b43..0a9027efde 100644 --- a/mcs/class/lib/monolite-darwin/1051400003/mcs.exe.REMOVED.git-id +++ b/mcs/class/lib/monolite-darwin/1051400003/mcs.exe.REMOVED.git-id @@ -1 +1 @@ -94aa8e4583323ff2f0ef77c9767c6528746c8195 \ No newline at end of file +4eaf1e484ad4d32e688d1fd92002bc14e8d9b408 \ No newline at end of file diff --git a/mcs/class/lib/monolite-darwin/1051400003/mscorlib.dll.REMOVED.git-id b/mcs/class/lib/monolite-darwin/1051400003/mscorlib.dll.REMOVED.git-id index 1d706e5db5..e40e902fba 100644 --- a/mcs/class/lib/monolite-darwin/1051400003/mscorlib.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-darwin/1051400003/mscorlib.dll.REMOVED.git-id @@ -1 +1 @@ -14d433d80e9286afaada66a21c6a6490e02a1bab \ No newline at end of file +8d8905f64181bf039084412317cab6664dd1577f \ No newline at end of file diff --git a/mcs/class/lib/monolite-linux/1051400003/Mono.Security.dll.REMOVED.git-id b/mcs/class/lib/monolite-linux/1051400003/Mono.Security.dll.REMOVED.git-id index 2a45533dea..d17062cd91 100644 --- a/mcs/class/lib/monolite-linux/1051400003/Mono.Security.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-linux/1051400003/Mono.Security.dll.REMOVED.git-id @@ -1 +1 @@ -ca65c98a0f00e648da973e7963968484f46e25a7 \ No newline at end of file +befc828e193756128a4b0755432ce5d10d2cc1e4 \ No newline at end of file diff --git a/mcs/class/lib/monolite-linux/1051400003/System.Configuration.dll.REMOVED.git-id b/mcs/class/lib/monolite-linux/1051400003/System.Configuration.dll.REMOVED.git-id index 3fd09a23e6..200a3a58c8 100644 --- a/mcs/class/lib/monolite-linux/1051400003/System.Configuration.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-linux/1051400003/System.Configuration.dll.REMOVED.git-id @@ -1 +1 @@ -84b727ef03eef4369b1e15a46b1146ad6a89bec6 \ No newline at end of file +5c0ce009774f46b70774aaa482b92dc2e5314b5c \ No newline at end of file diff --git a/mcs/class/lib/monolite-linux/1051400003/System.Numerics.dll.REMOVED.git-id b/mcs/class/lib/monolite-linux/1051400003/System.Numerics.dll.REMOVED.git-id index 9e142d25c6..ab97743aa0 100644 --- a/mcs/class/lib/monolite-linux/1051400003/System.Numerics.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-linux/1051400003/System.Numerics.dll.REMOVED.git-id @@ -1 +1 @@ -274e6c6bb39b01195339dcfb8e03af00229e8f94 \ No newline at end of file +0877f763271af8603501edfa1e24eaf3e318198e \ No newline at end of file diff --git a/mcs/class/lib/monolite-linux/1051400003/System.Security.dll.REMOVED.git-id b/mcs/class/lib/monolite-linux/1051400003/System.Security.dll.REMOVED.git-id index f3d1f385c5..0403cbcd14 100644 --- a/mcs/class/lib/monolite-linux/1051400003/System.Security.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-linux/1051400003/System.Security.dll.REMOVED.git-id @@ -1 +1 @@ -08ee36494b283d9af6c5785332dceb3c2ceb15eb \ No newline at end of file +09995e4e66ac0a22fe41587750417656bfce0821 \ No newline at end of file diff --git a/mcs/class/lib/monolite-linux/1051400003/System.Xml.dll.REMOVED.git-id b/mcs/class/lib/monolite-linux/1051400003/System.Xml.dll.REMOVED.git-id index 234a365632..81639e881b 100644 --- a/mcs/class/lib/monolite-linux/1051400003/System.Xml.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-linux/1051400003/System.Xml.dll.REMOVED.git-id @@ -1 +1 @@ -71d876d207ac1d4079734e7e07374a48dd139ac6 \ No newline at end of file +5e3eda678d1f01b2aa295f260a86a9621a1396b3 \ No newline at end of file diff --git a/mcs/class/lib/monolite-linux/1051400003/mcs.exe.REMOVED.git-id b/mcs/class/lib/monolite-linux/1051400003/mcs.exe.REMOVED.git-id index daae658b43..0a9027efde 100644 --- a/mcs/class/lib/monolite-linux/1051400003/mcs.exe.REMOVED.git-id +++ b/mcs/class/lib/monolite-linux/1051400003/mcs.exe.REMOVED.git-id @@ -1 +1 @@ -94aa8e4583323ff2f0ef77c9767c6528746c8195 \ No newline at end of file +4eaf1e484ad4d32e688d1fd92002bc14e8d9b408 \ No newline at end of file diff --git a/mcs/class/lib/monolite-linux/1051400003/mscorlib.dll.REMOVED.git-id b/mcs/class/lib/monolite-linux/1051400003/mscorlib.dll.REMOVED.git-id index 1d706e5db5..e40e902fba 100644 --- a/mcs/class/lib/monolite-linux/1051400003/mscorlib.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-linux/1051400003/mscorlib.dll.REMOVED.git-id @@ -1 +1 @@ -14d433d80e9286afaada66a21c6a6490e02a1bab \ No newline at end of file +8d8905f64181bf039084412317cab6664dd1577f \ No newline at end of file diff --git a/mcs/class/lib/monolite-win32/1051400003/Mono.Security.dll.REMOVED.git-id b/mcs/class/lib/monolite-win32/1051400003/Mono.Security.dll.REMOVED.git-id index 2a45533dea..d17062cd91 100644 --- a/mcs/class/lib/monolite-win32/1051400003/Mono.Security.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-win32/1051400003/Mono.Security.dll.REMOVED.git-id @@ -1 +1 @@ -ca65c98a0f00e648da973e7963968484f46e25a7 \ No newline at end of file +befc828e193756128a4b0755432ce5d10d2cc1e4 \ No newline at end of file diff --git a/mcs/class/lib/monolite-win32/1051400003/System.Configuration.dll.REMOVED.git-id b/mcs/class/lib/monolite-win32/1051400003/System.Configuration.dll.REMOVED.git-id index 3fd09a23e6..200a3a58c8 100644 --- a/mcs/class/lib/monolite-win32/1051400003/System.Configuration.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-win32/1051400003/System.Configuration.dll.REMOVED.git-id @@ -1 +1 @@ -84b727ef03eef4369b1e15a46b1146ad6a89bec6 \ No newline at end of file +5c0ce009774f46b70774aaa482b92dc2e5314b5c \ No newline at end of file diff --git a/mcs/class/lib/monolite-win32/1051400003/System.Numerics.dll.REMOVED.git-id b/mcs/class/lib/monolite-win32/1051400003/System.Numerics.dll.REMOVED.git-id index 9e142d25c6..ab97743aa0 100644 --- a/mcs/class/lib/monolite-win32/1051400003/System.Numerics.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-win32/1051400003/System.Numerics.dll.REMOVED.git-id @@ -1 +1 @@ -274e6c6bb39b01195339dcfb8e03af00229e8f94 \ No newline at end of file +0877f763271af8603501edfa1e24eaf3e318198e \ No newline at end of file diff --git a/mcs/class/lib/monolite-win32/1051400003/System.Security.dll.REMOVED.git-id b/mcs/class/lib/monolite-win32/1051400003/System.Security.dll.REMOVED.git-id index f3d1f385c5..0403cbcd14 100644 --- a/mcs/class/lib/monolite-win32/1051400003/System.Security.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-win32/1051400003/System.Security.dll.REMOVED.git-id @@ -1 +1 @@ -08ee36494b283d9af6c5785332dceb3c2ceb15eb \ No newline at end of file +09995e4e66ac0a22fe41587750417656bfce0821 \ No newline at end of file diff --git a/mcs/class/lib/monolite-win32/1051400003/System.Xml.dll.REMOVED.git-id b/mcs/class/lib/monolite-win32/1051400003/System.Xml.dll.REMOVED.git-id index 234a365632..81639e881b 100644 --- a/mcs/class/lib/monolite-win32/1051400003/System.Xml.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-win32/1051400003/System.Xml.dll.REMOVED.git-id @@ -1 +1 @@ -71d876d207ac1d4079734e7e07374a48dd139ac6 \ No newline at end of file +5e3eda678d1f01b2aa295f260a86a9621a1396b3 \ No newline at end of file diff --git a/mcs/class/lib/monolite-win32/1051400003/mcs.exe.REMOVED.git-id b/mcs/class/lib/monolite-win32/1051400003/mcs.exe.REMOVED.git-id index daae658b43..0a9027efde 100644 --- a/mcs/class/lib/monolite-win32/1051400003/mcs.exe.REMOVED.git-id +++ b/mcs/class/lib/monolite-win32/1051400003/mcs.exe.REMOVED.git-id @@ -1 +1 @@ -94aa8e4583323ff2f0ef77c9767c6528746c8195 \ No newline at end of file +4eaf1e484ad4d32e688d1fd92002bc14e8d9b408 \ No newline at end of file diff --git a/mcs/class/lib/monolite-win32/1051400003/mscorlib.dll.REMOVED.git-id b/mcs/class/lib/monolite-win32/1051400003/mscorlib.dll.REMOVED.git-id index 1d706e5db5..e40e902fba 100644 --- a/mcs/class/lib/monolite-win32/1051400003/mscorlib.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-win32/1051400003/mscorlib.dll.REMOVED.git-id @@ -1 +1 @@ -14d433d80e9286afaada66a21c6a6490e02a1bab \ No newline at end of file +8d8905f64181bf039084412317cab6664dd1577f \ No newline at end of file diff --git a/mono/metadata/threads-types.h b/mono/metadata/threads-types.h index 14c6798165..44f8b97c89 100644 --- a/mono/metadata/threads-types.h +++ b/mono/metadata/threads-types.h @@ -307,6 +307,7 @@ typedef struct { int token; int il_offset; int native_offset; + const char *guid; } managed_data; struct { intptr_t ip; diff --git a/mono/metadata/threads.c.REMOVED.git-id b/mono/metadata/threads.c.REMOVED.git-id index df9687e94f..78a112cfee 100644 --- a/mono/metadata/threads.c.REMOVED.git-id +++ b/mono/metadata/threads.c.REMOVED.git-id @@ -1 +1 @@ -9a45da5ec2cf988cdfec5ed16341f724617185d9 \ No newline at end of file +05ba3732159667ba9dbc7a52fece4efb65dad303 \ No newline at end of file diff --git a/mono/mini/aot-compiler.c.REMOVED.git-id b/mono/mini/aot-compiler.c.REMOVED.git-id index 2fecc81452..9e47ed7fd3 100644 --- a/mono/mini/aot-compiler.c.REMOVED.git-id +++ b/mono/mini/aot-compiler.c.REMOVED.git-id @@ -1 +1 @@ -8adc17ec288a1b9ae9c8dd1cd47856e2106f4f54 \ No newline at end of file +aaff6dd9dc34fb2510c951a44db3b752e9c6f792 \ No newline at end of file diff --git a/mono/mini/aot-runtime.c.REMOVED.git-id b/mono/mini/aot-runtime.c.REMOVED.git-id index f7537fa6bd..964ddacca4 100644 --- a/mono/mini/aot-runtime.c.REMOVED.git-id +++ b/mono/mini/aot-runtime.c.REMOVED.git-id @@ -1 +1 @@ -5e9b5a5f0b699839c31802f66b0c96079028c920 \ No newline at end of file +10044f8ee122b24d3aa8777fe86f875a1f24b447 \ No newline at end of file diff --git a/mono/mini/driver.c b/mono/mini/driver.c index dc01173e43..de8455a633 100644 --- a/mono/mini/driver.c +++ b/mono/mini/driver.c @@ -1981,6 +1981,8 @@ mono_main (int argc, char* argv[]) mono_jit_set_aot_mode (MONO_AOT_MODE_LLVMONLY); } else if (strcmp (argv [i], "--hybrid-aot") == 0) { mono_jit_set_aot_mode (MONO_AOT_MODE_HYBRID); + } else if (strcmp (argv [i], "--full-aot-interp") == 0) { + mono_jit_set_aot_mode (MONO_AOT_MODE_INTERP); } else if (strcmp (argv [i], "--print-vtable") == 0) { mono_print_vtable = TRUE; } else if (strcmp (argv [i], "--stats") == 0) { diff --git a/mono/mini/interp/transform.c.REMOVED.git-id b/mono/mini/interp/transform.c.REMOVED.git-id index 49d104a1b1..8e753b746b 100644 --- a/mono/mini/interp/transform.c.REMOVED.git-id +++ b/mono/mini/interp/transform.c.REMOVED.git-id @@ -1 +1 @@ -dce98aa88673c09e1a92b8e88fb3c4a80a3b7ad6 \ No newline at end of file +9a373e74e3e122d1bcbac0be019806e52aac57b2 \ No newline at end of file diff --git a/mono/mini/mini-exceptions.c.REMOVED.git-id b/mono/mini/mini-exceptions.c.REMOVED.git-id index 3abedee138..ef124516b8 100644 --- a/mono/mini/mini-exceptions.c.REMOVED.git-id +++ b/mono/mini/mini-exceptions.c.REMOVED.git-id @@ -1 +1 @@ -faddbf662346407f170fe7270f8e01a2bc52b91a \ No newline at end of file +8fc0bbcb5be1a70c373c8d4b3ce5ff0371f319e5 \ No newline at end of file diff --git a/mono/mini/mini-runtime.c.REMOVED.git-id b/mono/mini/mini-runtime.c.REMOVED.git-id index b6fe21e6bc..a11dea0c66 100644 --- a/mono/mini/mini-runtime.c.REMOVED.git-id +++ b/mono/mini/mini-runtime.c.REMOVED.git-id @@ -1 +1 @@ -23b58c2fef2467d157848e992cc58524db6136e7 \ No newline at end of file +01558406b81f8a0fec7cc8e007e8c871b26d8d91 \ No newline at end of file diff --git a/mono/mini/mini.c.REMOVED.git-id b/mono/mini/mini.c.REMOVED.git-id index 66a936131a..74cad7c7f7 100644 --- a/mono/mini/mini.c.REMOVED.git-id +++ b/mono/mini/mini.c.REMOVED.git-id @@ -1 +1 @@ -35d000902c9db262b9884149efc349e1f59288d3 \ No newline at end of file +597d734e479aed50e4f157f42882c34019c3b62c \ No newline at end of file diff --git a/mono/mini/mini.h.REMOVED.git-id b/mono/mini/mini.h.REMOVED.git-id index ad5d9f2b7b..77e9ee44a2 100644 --- a/mono/mini/mini.h.REMOVED.git-id +++ b/mono/mini/mini.h.REMOVED.git-id @@ -1 +1 @@ -317bc7c6ef200a6b591f2cbb6e52fbaf4170eaa6 \ No newline at end of file +15ba650bee11d5e88606be1787d3e6685fd70fe6 \ No newline at end of file diff --git a/mono/mini/version.h b/mono/mini/version.h index b88060ad12..8a9efb3d8c 100644 --- a/mono/mini/version.h +++ b/mono/mini/version.h @@ -1 +1 @@ -#define FULL_VERSION "explicit/8ae8c52" +#define FULL_VERSION "explicit/3645833" diff --git a/mono/utils/mono-merp.c b/mono/utils/mono-merp.c index ed63ffbecb..3c44d340ce 100644 --- a/mono/utils/mono-merp.c +++ b/mono/utils/mono-merp.c @@ -36,6 +36,8 @@ #include #include +#include + static const char * os_version_string (void) { @@ -86,7 +88,6 @@ typedef struct { MERPExcType exceptionArg; // Exception type (refer to merpcommon.h and mach/exception_types.h for more info (optional) const char *serviceNameArg; // This is the Bootstrap service name that MERP GUI will create to receive mach_task_self on a port created. Bails out if MERP GUI fails to receive mach_task_self from the crashed app. (Required for crash log generation) - const char *servicePathArg; const char *moduleName; const char *moduleVersion; @@ -195,9 +196,11 @@ parse_exception_type (const char *signal) g_error ("Merp doesn't know how to handle %s\n", signal); } -static void -mono_encode_merp (GString *output, MERPStruct *merp) +static gchar * +mono_encode_merp_params (MERPStruct *merp) { + GString *output = g_string_new (""); + // Provided by icall g_string_append_printf (output, "ApplicationBundleId: %s\n", merp->bundleIDArg); g_string_append_printf (output, "ApplicationVersion: %s\n", merp->versionArg); @@ -207,10 +210,6 @@ mono_encode_merp (GString *output, MERPStruct *merp) // Provided by icall g_string_append_printf (output, "ApplicationName: %s\n", merp->serviceNameArg); - // When embedded, sometimes this really doesn't make sense. - // FIXME: On OSX, could figure this out for just VS4Mac. - g_string_append_printf (output, "ApplicationPath: %s\n", merp->servicePathArg ? merp->servicePathArg : "missing"); - // Provided by icall g_string_append_printf (output, "BlameModuleName: %s\n", merp->moduleName); g_string_append_printf (output, "BlameModuleVersion: %s\n", merp->moduleVersion); @@ -226,6 +225,8 @@ mono_encode_merp (GString *output, MERPStruct *merp) g_string_append_printf (output, "LanguageID: 0x%x\n", merp->uiLidArg); g_string_append_printf (output, "SystemManufacturer: %s\n", merp->systemManufacturer); g_string_append_printf (output, "SystemModel: %s\n", merp->systemModel); + + return g_string_free (output, FALSE); } static void @@ -251,7 +252,7 @@ connect_to_merp (const char *serviceName, mach_port_t *merp_port) } static void -mono_merp_send (const char *merpFile, const char *crashLog) +mono_merp_send (const char *merpFile, const char *crashLog, const char *werXml) { // Write struct to magic file location // This registers our mach service so we can connect @@ -265,11 +266,17 @@ mono_merp_send (const char *merpFile, const char *crashLog) write_file (crashLog, crashLogPath); g_free (crashLogPath); + char *werXmlPath = g_strdup_printf ("%s/Library/Group Containers/UBF8T346G9.ms/WERInternalMetadata.txt", home); + write_file (werXml, werXmlPath); + g_free (werXmlPath); + if (config.log) { if (merpFile != NULL) fprintf (stderr, "Crashing MERP File:\n####\n%s\n####\n", merpFile); if (crashLog != NULL) fprintf (stderr, "Crashing Dump File:\n####\n%s\n####\n", crashLog); + if (werXml != NULL) + fprintf (stderr, "Crashing XML WER File:\n####\n%s\n####\n", werXmlPath); } // // Create process to launch merp gui application @@ -317,19 +324,6 @@ mono_init_merp (const intptr_t crashed_pid, const char *signal, MonoStackHash *h merp->serviceNameArg = config.appBundleID; - // FIXME: Not really a posix way to associated a process with a single executable - // path? Linux gets bogged down in /proc - merp->servicePathArg = NULL; - if (crashed_pid) { - size_t servicePathSize = sizeof (gchar) * 1200; - merp->servicePathArg = g_malloc0 (servicePathSize); - int result = proc_pidpath (crashed_pid, (void *) merp->servicePathArg, 1200); - if (result <= 0) { - g_free ((void *) merp->servicePathArg); - merp->servicePathArg = NULL; - } - } - merp->moduleName = "Mono Exception"; merp->moduleVersion = version; @@ -348,19 +342,177 @@ mono_init_merp (const intptr_t crashed_pid, const char *signal, MonoStackHash *h merp->hashes = *hashes; } +static gchar * +mono_merp_fingerprint_payload (const char *non_param_data, const MERPStruct *merp) +{ + JsonWriter writer; + mono_json_writer_init (&writer); + + mono_json_writer_object_begin(&writer); + + mono_json_writer_indent (&writer); + mono_json_writer_object_key(&writer, "payload"); + mono_json_writer_printf (&writer, "%s,\n", non_param_data); + + mono_json_writer_indent (&writer); + mono_json_writer_object_key(&writer, "parameters"); + mono_json_writer_object_begin(&writer); + + mono_json_writer_indent (&writer); + mono_json_writer_object_key(&writer, "ApplicationBundleId:"); + mono_json_writer_printf (&writer, "\"%s\",\n", merp->bundleIDArg); + + mono_json_writer_indent (&writer); + mono_json_writer_object_key(&writer, "ApplicationVersion:"); + mono_json_writer_printf (&writer, "\"%s\",\n", merp->versionArg); + + mono_json_writer_indent (&writer); + mono_json_writer_object_key(&writer, "ApplicationBitness:"); + mono_json_writer_printf (&writer, "\"%s\",\n", get_merp_bitness (merp->archArg)); + + mono_json_writer_indent (&writer); + mono_json_writer_object_key(&writer, "ApplicationName:"); + mono_json_writer_printf (&writer, "\"%s\",\n", merp->serviceNameArg); + + mono_json_writer_indent (&writer); + mono_json_writer_object_key(&writer, "BlameModuleName:"); + mono_json_writer_printf (&writer, "\"%s\",\n", merp->moduleName); + + mono_json_writer_indent (&writer); + mono_json_writer_object_key(&writer, "BlameModuleVersion:"); + mono_json_writer_printf (&writer, "\"%s\",\n", merp->moduleVersion); + + mono_json_writer_indent (&writer); + mono_json_writer_object_key(&writer, "BlameModuleOffset:"); + mono_json_writer_printf (&writer, "\"0x%x\",\n", merp->moduleOffset); + + mono_json_writer_indent (&writer); + mono_json_writer_object_key(&writer, "ExceptionType:"); + mono_json_writer_printf (&writer, "\"%s\",\n", get_merp_exctype (merp->exceptionArg)); + + mono_json_writer_indent (&writer); + mono_json_writer_object_key(&writer, "StackChecksum:"); + mono_json_writer_printf (&writer, "\"0x%x\",\n", merp->hashes.offset_free_hash); + + mono_json_writer_indent (&writer); + mono_json_writer_object_key(&writer, "StackHash:"); + mono_json_writer_printf (&writer, "\"0x%x\",\n", merp->hashes.offset_rich_hash); + + // Provided by icall + mono_json_writer_indent (&writer); + mono_json_writer_object_key(&writer, "OSVersion:"); + mono_json_writer_printf (&writer, "\"%s\",\n", merp->osVersion); + + mono_json_writer_indent (&writer); + mono_json_writer_object_key(&writer, "LanguageID:"); + mono_json_writer_printf (&writer, "\"0x%x\",\n", merp->uiLidArg); + + mono_json_writer_indent (&writer); + mono_json_writer_object_key(&writer, "SystemManufacturer:"); + mono_json_writer_printf (&writer, "\"%s\",\n", merp->systemManufacturer); + + mono_json_writer_indent (&writer); + mono_json_writer_object_key(&writer, "SystemModel:"); + mono_json_writer_printf (&writer, "\"%s\"\n", merp->systemModel); + + // End of payload + mono_json_writer_indent (&writer); + mono_json_writer_object_end (&writer); + mono_json_writer_printf (&writer, "\n"); + + // End of object + mono_json_writer_indent_pop (&writer); + mono_json_writer_indent (&writer); + mono_json_writer_object_end (&writer); + + gchar *output = g_strdup (writer.text->str); + mono_json_writer_destroy (&writer); + + return output; +} + +static gchar * +mono_wer_template (MERPStruct *merp) +{ + // Note about missing ProcessInformation block: we have no PID that makes sense + // and when mono is embedded and used to run functions without an entry point, + // there is no image that would make any semantic sense to send either. + // It's a nuanced problem, each way we can run mono would need a separate fix. + + GString *output = g_string_new (""); + + g_string_append_printf (output, "\n"); + g_string_append_printf (output, "\n"); + g_string_append_printf (output, "\n"); + g_string_append_printf (output, "MonoAppCrash\n"); + + int i=0; + + g_string_append_printf (output, "%s\n", i, merp->bundleIDArg, i); + i++; + + g_string_append_printf (output, "%s\n", i, merp->versionArg, i); + i++; + + g_string_append_printf (output, "%s\n", i, get_merp_bitness (merp->archArg), i); + i++; + + g_string_append_printf (output, "%s\n", i, merp->serviceNameArg, i); + i++; + + g_string_append_printf (output, "%s\n", i, merp->moduleName, i); + i++; + + g_string_append_printf (output, "%s\n", i, merp->moduleVersion, i); + i++; + + g_string_append_printf (output, "0x%x\n", i, merp->moduleOffset, i); + i++; + + g_string_append_printf (output, "%s\n", i, get_merp_exctype (merp->exceptionArg), i); + i++; + + g_string_append_printf (output, "0x%x\n", i, merp->hashes.offset_free_hash, i); + i++; + + g_string_append_printf (output, "0x%x\n", i, merp->hashes.offset_rich_hash, i); + i++; + + g_string_append_printf (output, "%s\n", i, merp->osVersion, i); + i++; + + g_string_append_printf (output, "0x%x\n", i, merp->uiLidArg, i); + i++; + + g_string_append_printf (output, "%s\n", i, merp->systemManufacturer, i); + i++; + + g_string_append_printf (output, "%s\n", i, merp->systemModel, i); + i++; + + g_string_append_printf (output, "\n"); + g_string_append_printf (output, "\n"); + + return g_string_free (output, FALSE); +} + void -mono_merp_invoke (const intptr_t crashed_pid, const char *signal, const char *dump_file, MonoStackHash *hashes, char *version) +mono_merp_invoke (const intptr_t crashed_pid, const char *signal, const char *non_param_data, MonoStackHash *hashes, char *version) { MERPStruct merp; memset (&merp, 0, sizeof (merp)); mono_init_merp (crashed_pid, signal, hashes, &merp, version); - GString *output = g_string_new (""); - mono_encode_merp (output, &merp); + gchar *merpCfg = mono_encode_merp_params (&merp); + gchar *fullData = mono_merp_fingerprint_payload (non_param_data, &merp); + gchar *werXmlCfg = mono_wer_template (&merp); - mono_merp_send (output->str, dump_file); + // Write out to disk, start program + mono_merp_send (merpCfg, fullData, werXmlCfg); - g_string_free (output, TRUE); + g_free (fullData); + g_free (merpCfg); + g_free (werXmlCfg); } void diff --git a/mono/utils/mono-state.c b/mono/utils/mono-state.c index da18482b59..5b2f97fbf3 100644 --- a/mono/utils/mono-state.c +++ b/mono/utils/mono-state.c @@ -87,8 +87,8 @@ mono_native_state_add_frame (JsonWriter *writer, MonoFrameSummary *frame) if (frame->is_managed) { mono_json_writer_indent (writer); - mono_json_writer_object_key(writer, "assembly"); - mono_json_writer_printf (writer, "\"%s\",\n", frame->str_descr); + mono_json_writer_object_key(writer, "guid"); + mono_json_writer_printf (writer, "\"%s\",\n", frame->managed_data.guid); mono_json_writer_indent (writer); mono_json_writer_object_key(writer, "token"); @@ -453,7 +453,6 @@ mono_native_state_add_epilogue (JsonWriter *writer) mono_json_writer_indent_pop (writer); mono_json_writer_indent (writer); mono_json_writer_object_end (writer); - mono_json_writer_printf (writer, "\n"); } void diff --git a/po/mcs/de.gmo b/po/mcs/de.gmo index f8cd01df8c..86f177fed0 100644 Binary files a/po/mcs/de.gmo and b/po/mcs/de.gmo differ diff --git a/po/mcs/de.po.REMOVED.git-id b/po/mcs/de.po.REMOVED.git-id index 2b38b2f94a..b5f3340b9e 100644 --- a/po/mcs/de.po.REMOVED.git-id +++ b/po/mcs/de.po.REMOVED.git-id @@ -1 +1 @@ -c20b2e70f8b1983435241609f17bb8220b7ae7ce \ No newline at end of file +5037f0a0d0e6f285f1bc22f8504e95fe27137c93 \ No newline at end of file diff --git a/po/mcs/es.gmo b/po/mcs/es.gmo index 295accf4e0..23dc4d01e9 100644 Binary files a/po/mcs/es.gmo and b/po/mcs/es.gmo differ diff --git a/po/mcs/es.po.REMOVED.git-id b/po/mcs/es.po.REMOVED.git-id index c448390030..e82a0d2d28 100644 --- a/po/mcs/es.po.REMOVED.git-id +++ b/po/mcs/es.po.REMOVED.git-id @@ -1 +1 @@ -7e7dbf9f9097d4a822364588c3571b6f4f1ab698 \ No newline at end of file +c230238a3cd9158ba72f112956ffc95b7d746821 \ No newline at end of file diff --git a/po/mcs/ja.gmo b/po/mcs/ja.gmo index 2ca0837168..d486be2617 100644 Binary files a/po/mcs/ja.gmo and b/po/mcs/ja.gmo differ diff --git a/po/mcs/ja.po.REMOVED.git-id b/po/mcs/ja.po.REMOVED.git-id index 6bd065ee40..8c9ad8b444 100644 --- a/po/mcs/ja.po.REMOVED.git-id +++ b/po/mcs/ja.po.REMOVED.git-id @@ -1 +1 @@ -6c695146470efd04c6e7cc00fbb6744403c91ab4 \ No newline at end of file +d633618cc9cb3e22c7ad209dceda11bb2c56a3b7 \ No newline at end of file diff --git a/po/mcs/mcs.pot b/po/mcs/mcs.pot index 0219028154..37e1454541 100644 --- a/po/mcs/mcs.pot +++ b/po/mcs/mcs.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: mono 5.14.0.141\n" +"Project-Id-Version: mono 5.14.0.147\n" "Report-Msgid-Bugs-To: http://www.mono-project.com/Bugs\n" -"POT-Creation-Date: 2018-06-23 16:48+0000\n" +"POT-Creation-Date: 2018-06-26 08:02+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/po/mcs/pt_BR.gmo b/po/mcs/pt_BR.gmo index c151da9455..24d8cf2bd4 100644 Binary files a/po/mcs/pt_BR.gmo and b/po/mcs/pt_BR.gmo differ diff --git a/po/mcs/pt_BR.po.REMOVED.git-id b/po/mcs/pt_BR.po.REMOVED.git-id index 671128f00c..7fd202b4da 100644 --- a/po/mcs/pt_BR.po.REMOVED.git-id +++ b/po/mcs/pt_BR.po.REMOVED.git-id @@ -1 +1 @@ -c1b09df3ff5a12d8616dfd751f62ed84e68b8770 \ No newline at end of file +d6836e7be2aa66b62b3b706b24b764b223574f29 \ No newline at end of file