2009-10-05 Zoltan Varga <vargaz@gmail.com>
authorZoltan Varga <vargaz@gmail.com>
Mon, 5 Oct 2009 14:39:58 +0000 (14:39 -0000)
committerZoltan Varga <vargaz@gmail.com>
Mon, 5 Oct 2009 14:39:58 +0000 (14:39 -0000)
* domain.c (mono_init_internal): Print a useful error message when encountering
an old mscorlib, instead of crashing. Fixes #544307.

svn path=/trunk/mono/; revision=143409

mono/metadata/ChangeLog
mono/metadata/domain.c

index 3d5f24404248575da3e6017dedcc49c652aad30f..298fe28990c1e1b174652a3cd0a246794e3437a0 100644 (file)
@@ -1,3 +1,8 @@
+2009-10-05  Zoltan Varga  <vargaz@gmail.com>
+
+       * domain.c (mono_init_internal): Print a useful error message when encountering
+       an old mscorlib, instead of crashing. Fixes #544307.
+
 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
 
        * appdomain.c (copy_app_domain_setup): Fix a warning.
index 902590b0551b156d07a42817695731a904169267..7f05d83b4ac39ef57f854bc978dd8e565edf3888 100644 (file)
@@ -1483,7 +1483,13 @@ mono_init_internal (const char *filename, const char *exe_filename, const char *
 
        mono_defaults.internal_thread_class = mono_class_from_name (
                 mono_defaults.corlib, "System.Threading", "InternalThread");
-       g_assert (mono_defaults.internal_thread_class != 0);
+       if (!mono_defaults.internal_thread_class) {
+               /* This can happen with an old mscorlib */
+               fprintf (stderr, "Corlib too old for this runtime.\n");
+               fprintf (stderr, "Loaded from: %s\n",
+                                mono_defaults.corlib? mono_image_get_filename (mono_defaults.corlib): "unknown");
+               exit (1);
+       }
 
        mono_defaults.appdomain_class = mono_class_from_name (
                 mono_defaults.corlib, "System", "AppDomain");