|
Bugzilla – Full Text Bug Listing |
| Summary: | Unhandled exception changes make xsp2 quit | ||
|---|---|---|---|
| Product: | [Mono] Mono: Runtime | Reporter: | Daniel Nauck <dna> |
| Component: | JIT | Assignee: | Massimiliano Mantione <massi> |
| Status: | RESOLVED FIXED | QA Contact: | Mono Bugs <mono-bugs> |
| Severity: | Normal | ||
| Priority: | P3 - Medium | CC: | jan.oravec |
| Version: | unspecified | ||
| Target Milestone: | --- | ||
| Hardware: | Other | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Found By: | --- | Services Priority: | |
| Business Priority: | Blocker: | --- | |
| Marketing QA Status: | --- | IT Deployment: | --- |
|
Description
Thomas Wiest
2007-09-15 20:53:43 UTC
I applied Massi's patch to print out the exception:
Index: mono/metadata/object.c
===================================================================
--- mono/metadata/object.c (Revision 85796)
+++ mono/metadata/object.c (Arbeitskopie)
@@ -2754,6 +2754,14 @@
}
}
}
+ if (mono_thread_current () == mono_thread_get_main ()) {
+ printf ("mono_thread_current () == mono_thread_get_main (): true\n");
+ } else {
+ printf ("mono_thread_current () == mono_thread_get_main (): false\n");
+ }
+
+ printf ("Examining unhandled exception\n");
+ mono_print_unhandled_exception (exc);
}
/*
The Result is:
Hit Return to stop the server.
mono_thread_current () == mono_thread_get_main (): false
Examining unhandled exception
Unhandled Exception: System.Threading.ThreadAbortException: Thread was being aborted
at (wrapper managed-to-native) System.Object:__icall_wrapper_mono_thread_interruption_checkpoint ()
at (wrapper managed-to-native) System.Threading.WaitHandle:WaitOne_internal (intptr,int,bool)
at System.Threading.WaitHandle.WaitOne (Int32 millisecondsTimeout, Boolean exitContext) [0x00020] in /home/dna/mono-svn/mcs/class/corlib/System.Threading/WaitHandle.cs:314
at System.Threading.Timer+Runner.Start () [0x0008b] in /home/dna/mono-svn/mcs/class/corlib/System.Threading/Timer.cs:140
at (wrapper delegate-invoke) System.MulticastDelegate:invoke_void ()
Patch from Massi:
Index: mono/mini/mini.c
===================================================================
--- mono/mini/mini.c (Revision 85966)
+++ mono/mini/mini.c (Arbeitskopie)
@@ -8927,7 +8927,8 @@
/* handle_remove should be eventually called for this thread, too
g_free (jit_tls);*/
- if (mono_runtime_unhandled_exception_policy_get () == MONO_UNHANLED_POLICY_LEGACY) {
+ if ((mono_runtime_unhandled_exception_policy_get () == MONO_UNHANLED_POLICY_LEGACY) ||
+ (obj->vtable->klass == mono_defaults.threadabortexception_class)) {
mono_thread_exit ();
} else {
exit (mono_environment_exitcode_get ());
Fixed in svn, r86014. There is a typo in r86014 patch. It should be '==' instead of '!='.
--- mono/mini/mini.c (revision 86023)
+++ mono/mini/mini.c (working copy)
@@ -8928,7 +8928,7 @@
g_free (jit_tls);*/
if ((mono_runtime_unhandled_exception_policy_get () == MONO_UNHANLED_POLICY_LEGACY) ||
- (obj->vtable->klass != mono_defaults.threadabortexception_class)) {
+ (obj->vtable->klass == mono_defaults.threadabortexception_class)) {
mono_thread_exit ();
} else {
exit (mono_environment_exitcode_get ());
Fixed in svn r86030. Thanks. |