[Mono-bugs] [Bug 55131][Nor] New - Thread.Abort() is causing a crash

bugzilla-daemon@bugzilla.ximian.com bugzilla-daemon@bugzilla.ximian.com
Wed, 3 Mar 2004 14:47:19 -0500 (EST)

Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by martin@ximian.com.


--- shadow/55131	2004-03-03 14:47:19.000000000 -0500
+++ shadow/55131.tmp.9187	2004-03-03 14:47:19.000000000 -0500
@@ -0,0 +1,68 @@
+Bug#: 55131
+Product: Mono/Runtime
+Version: unspecified
+OS: SUSE 9.0
+OS Details: 
+Status: NEW   
+Priority: Normal
+Component: misc
+AssignedTo: mono-bugs@ximian.com                            
+ReportedBy: martin@ximian.com               
+QAContact: mono-bugs@ximian.com
+TargetMilestone: ---
+Summary: Thread.Abort() is causing a crash
+Attached is a simple test case which is causing a crash in Thread.Abort(). 
+This is on SuSE 9 with glibc 2.3.3 from ftp.suse.com/pub/projects/glibc/. 
+I debugged it this afternoon and here's what I found: 
+a) The thread which is to be killed is waiting in 
+b) x86_unwind_native_frame fails to correctly unwind the stack: 
+(gdb) info stack 
+#0  0x4089a89b in uw_frame_state_for () from /lib/libgcc_s.so.1 
+#1  0x4089aa01 in __frame_state_for () from /lib/libgcc_s.so.1 
+#2  0x40340c6b in __frame_state_for () from /lib/tls/libc.so.6 
+#3  0x4007d4f8 in x86_unwind_native_frame (domain=0x808eed8, 
+jit_tls=0x23863d01, ctx=0x89fd130, new_ctx=0x4105c274, lmf=0x4105c134, 
+    at exceptions-x86.c:410 
+#4  0x4007ddf1 in mono_arch_find_jit_info (domain=0x808eed8, 
+jit_tls=0x8248f58, res=0x4105c334, prev_ji=0x23863d01, ctx=0x4105c3c4, 
+    trace=0x4105c268, lmf=0x4105c26c, native_offset=0x0, managed=0x0) at 
+#5  0x4007e6a9 in mono_arch_handle_exception (ctx=0x4105c3c4, 
+obj=0x886cd50, test_only=1) at exceptions-x86.c:1075 
+#6  0x4007eb06 in mono_arch_handle_exception (ctx=0x4105c4f8, 
+obj=0x886cd50, test_only=0) at exceptions-x86.c:1056 
+#7  0x4004e76a in sigusr1_signal_handler (_dummy=33) at mini.c:7926 
+#8  <signal handler called> 
+#9  0xffffe410 in ?? () 
+#10 0x4105c82c in ?? () 
+#11 0x0000007a in ?? () 
+(gdb) x/i $eip 
+0xffffe410:	pop    %ebp 
+0xffffe411:	pop    %edx 
+0xffffe412:	pop    %ecx 
+0xffffe413:	ret     
+(gdb) x/x $esp 
+0x40eac870:	0x40eac8d0 
+0x40eac874:	0x00000063 
+0x40eac878:	0x00000000 
+0x40eac87c:	0x402045d0 
+(gdb) x/i 0x402045d0 
+0x402045d0 <pthread_cond_timedwait@@GLIBC_2.3.2+192>:	sub    $0x10,%ebx