Re: bug in VMsystem.arraycopy

[email protected] Fri, 6 Jan 2006 13:30:19 -0500
Newsgroups gmane.comp.java.vm.sablevm.general
Message-ID <[email protected]>
It seems that this could easily be a GNU classpath bug then. 
I searched the GNU classpath mailing list, and people have reported similar stream
problems before - will resubmit to gnu classpath folks.

Merci
Michael

On Fri, Jan 06, 2006 at 10:31:59AM -0500, Etienne Gagnon wrote:
> Hi Michael,
> 
> Thanks for the example.  To investigate the problem, I instrumented
> sablevm to give more information just before throwing the exception in
> arraycopy().  I have attached the patch against sablevm 1.13 (should
> probably work against 1.11).
> 
> It seems the bug is not in SableVM but somewhere in the class
> libraries...  There is an attempt to copy "-1" element from an array to
> another.  Here's what I get:
> 
> 2006/01/06 10:25:18:304 GMT-05:00 [INFO] WhitelistHandler - Whitelist
> Handler initialized.
> JESSIE, alias=localhost-cert pwd=key_abc123
> JESSIE, alias=localhost pwd=key_abc123
> before decodeKey 1
> arraycopy(primitive[8],1,primitive[8],0,-1)
> aha
> java.lang.ArrayIndexOutOfBoundsException
>    at java.lang.VMSystem.arraycopy (VMSystem.java)
>    at java.lang.System.arraycopy (System.java:238)
> ...
> 
> Etienne
> 
> [email protected] wrote:
> > I'm trying to port a crypto application to sablevm. Let me tell you,
> > there are tons of issues with this (most of them in the realm of
> > security providers) - the latest one seems to point directly to sablevm though.
> 
> -- 
> Etienne M. Gagnon, Ph.D.            http://www.info2.uqam.ca/~egagnon/
> SableVM:                                       http://www.sablevm.org/
> SableCC:                                       http://www.sablecc.org/

> Index: src/libsablevm/java_lang_VMSystem.c
> ===================================================================
> --- src/libsablevm/java_lang_VMSystem.c	(revision 4748)
> +++ src/libsablevm/java_lang_VMSystem.c	(working copy)
> @@ -121,6 +121,14 @@
>  	|| (_svmt_u32) dst_position + (_svmt_u32) length >
>  	(_svmt_u32) dst_instance->size)
>        {
> +	_svmf_printf (env, stderr, "arraycopy(%s[%d],%d,%s[%d],%d,%d)\n",
> +		      ((src_type->base_type ==
> +			SVM_TYPE_REFERENCE) ? src_type->name : "primitive"),
> +		      src_instance->size, src_position,
> +		      ((dst_type->base_type ==
> +			SVM_TYPE_REFERENCE) ? dst_type->name : "primitive"),
> +		      dst_instance->size, dst_position, length);
> +
>  	_svmf_error_ArrayIndexOutOfBoundsException (env);
>  	goto end;
>        }

> _______________________________________________
> SableVM-user mailing list
> [email protected]
> http://sablevm.org/lists/control/listinfo/sablevm-user


-- 
Michael Atighetchi  [email protected]  BBN Technologies