[Mono-bugs] [Bug 59509][Nor] Changed - Can't catch OutOfMemoryException for multiple dimension arrays

bugzilla-daemon@bugzilla.ximian.com bugzilla-daemon@bugzilla.ximian.com
Thu, 3 Jun 2004 09:55:07 -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 lupus@ximian.com.

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

--- shadow/59509	2004-06-02 21:12:02.000000000 -0400
+++ shadow/59509.tmp.10764	2004-06-03 09:55:07.000000000 -0400
@@ -2,13 +2,13 @@
 Product: Mono: Runtime
 Version: unspecified
 OS: All
 OS Details: 
 Status: NEW   
 Resolution: 
-Severity: 
+Severity: Unknown
 Priority: Normal
 Component: misc
 AssignedTo: mono-bugs@ximian.com                            
 ReportedBy: sebastien@ximian.com               
 QAContact: mono-bugs@ximian.com
 TargetMilestone: ---
@@ -63,6 +63,21 @@
 I don't see why one can be catched, while the second cannot.
 
 ------- Additional Comments From sebastien@ximian.com  2004-06-02 21:12 -------
 Created an attachment (id=7979)
 outofmem.cs
 
+
+------- Additional Comments From lupus@ximian.com  2004-06-03 09:55 -------
+The likely reason of the crash is that we don't use a wrapper to go to
+the mono_array_new_va() function and that is probably confusing the
+stack walking code (and could cause also other issues, like with Abort
+etc.).
+The code has also other issues: both mono_array_new_va() and
+ves_array_element_address() are vararg methods and this can be a
+problem on some architectures, where such methods have a different
+call convention (amd64, but even ppc requires a slightly different
+call setup) and they can't be handled nicely as is.
+The solution would be to not use vararg methods: the jit should
+allocate a local var big enough to store the arguments and the alloc
+function mono_array_new_full() should be called (through a wrapper
+this time since it's possible as it's not a vararg function).