[Mono-bugs] [Bug 48051][Wis] New - Delegate calls cause Mint to fail fatally with a bus error.

bugzilla-daemon@bugzilla.ximian.com bugzilla-daemon@bugzilla.ximian.com
Sat, 30 Aug 2003 00:35:05 -0400 (EDT)


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 quenio.dos.santos@zerog.com.

http://bugzilla.ximian.com/show_bug.cgi?id=48051

--- shadow/48051	2003-08-30 00:35:05.000000000 -0400
+++ shadow/48051.tmp.28842	2003-08-30 00:35:05.000000000 -0400
@@ -0,0 +1,95 @@
+Bug#: 48051
+Product: Mono/Runtime
+Version: unspecified
+OS: 
+OS Details: Mac OS 10.2.3
+Status: NEW   
+Resolution: 
+Severity: 
+Priority: Wishlist
+Component: misc
+AssignedTo: mono-bugs@ximian.com                            
+ReportedBy: Quenio.dos.Santos@ZeroG.com               
+QAContact: mono-bugs@ximian.com
+TargetMilestone: ---
+URL: 
+Cc: 
+Summary: Delegate calls cause Mint to fail fatally with a bus error.
+
+Please fill in this template when reporting a bug, unless you know what you are doing.
+Description of Problem:
+I have attached code that illustrate the problem. Basically, from a superclass (SuperTest), 
+calling a delegate (delegateMethod) that points to a method declared (Method) in the 
+subclass (Test) causes the bus error if the subclass (Test) also declares a field. Below, you 
+can see the mint.crash.log contents:
+
+**********
+
+Date/Time:  2003-08-29 21:24:23 -0700
+OS Version: 10.2.6 (Build 6L60)
+Host:       brava.local.
+
+Command:    mint
+PID:        8379
+
+Exception:  EXC_BAD_ACCESS (0x0001)
+Codes:      KERN_PROTECTION_FAILURE (0x0002) at 0x00000001
+
+Thread 0:
+ #0   0x90042688 in semaphore_timedwait_signal_trap
+ #1   0x9003e8b4 in _pthread_cond_wait
+ #2   0x00096900 in _wapi_handle_wait_signal (handles.c:1284)
+ #3   0x00094004 in WaitForMultipleObjects (wait.c:410)
+ #4   0x0003eca8 in wait_for_tids (threads.c:956)
+ #5   0x0003eeb0 in mono_thread_manage (threads.c:1045)
+ #6   0x0001a6d0 in mono_runtime_exec_managed_code (object.c:1014)
+ #7   0x000151d4 in main (interp.c:4604)
+ #8   0x00002184 in _start (crt.c:267)
+ #9   0x00002004 in start
+
+Thread 1 Crashed:
+ #0   0x00002708 in get_virtual_method (interp.c:229)
+ #1   0x00008a2c in ves_exec_method (interp.c:1654)
+ #2   0x00009048 in ves_exec_method (interp.c:1730)
+ #3   0x000057f8 in interp_mono_runtime_invoke (interp.c:1239)
+ #4   0x0001979c in mono_runtime_invoke (object.c:690)
+ #5   0x0001a830 in mono_runtime_exec_main (object.c:1049)
+ #6   0x0001a314 in mono_runtime_run_main (object.c:916)
+ #7   0x00014894 in ves_exec (interp.c:4364)
+ #8   0x00014bdc in main_thread_handler (interp.c:4494)
+ #9   0x0003d750 in start_wrapper (threads.c:218)
+ #10  0x000a0e1c in timed_thread_start_routine (timed-thread.c:115)
+ #11  0x90020d48 in _pthread_body
+
+PPC Thread State:
+  srr0: 0x00002708 srr1: 0x0200d030                vrsave: 0x00000000
+   xer: 0x00000000   lr: 0x000026a4  ctr: 0x00397e7c   mq: 0x00000000
+    r0: 0x00000001   r1: 0xf0200360   r2: 0x0006bd34   r3: 0x003e6ec0
+    r4: 0x00a88d30   r5: 0xf0200450   r6: 0x00000000   r7: 0xf0200460
+    r8: 0x00000003   r9: 0x00000001  r10: 0x06000003  r11: 0x008ba2e9
+   r12: 0x00397e7c  r13: 0x00000000  r14: 0x00000000  r15: 0x00000000
+   r16: 0x00000000  r17: 0x00000000  r18: 0x00000000  r19: 0x00000000
+   r20: 0x00000000  r21: 0x00000000  r22: 0x00000000  r23: 0x00000000
+   r24: 0x00000000  r25: 0x00000000  r26: 0x00000000  r27: 0x00000000
+   r28: 0x00000000  r29: 0x00a884b0  r30: 0xf0200360  r31: 0x000026a4
+
+
+Steps to reproduce the problem:
+1. Extract the attached QS.zip file.
+2. cd to QS/CLI/Tests/Delegates
+3. Execute "make run"
+
+
+Actual Results:
+You should get the bus error.
+
+Expected Results:
+A message should be printed to the console. The executable should exit gracefully.
+
+How often does this happen? 
+This bug can be reproduced consistently. 
+
+Additional Information:
+If the "value" boolean field of the Test class is removed, then everything works properly. 
+Also, if the "Method()" method is called directly in the "Run()" method, instead of using the 
+delegate, it works properly as well.