This is the mail archive of the
java-prs@gcc.gnu.org
mailing list for the Java project.
[Bug libgcj/23508] FAIL: PR218
- From: "dave at hiauly1 dot hia dot nrc dot ca" <gcc-bugzilla at gcc dot gnu dot org>
- To: java-prs at gcc dot gnu dot org
- Date: 21 Aug 2005 20:52:41 -0000
- Subject: [Bug libgcj/23508] FAIL: PR218
- References: <20050821203058.23508.danglin@gcc.gnu.org>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From dave at hiauly1 dot hia dot nrc dot ca 2005-08-21 20:52 -------
Subject: Re: FAIL: PR218
> pa32_fallback_frame_state should have taken care of this.
Possibly, there is a bug there. However, the enclosed change
appears to fix libgcj/23507 and partially fixes this PR. There
appears to be a typo which doubles state->length in stacktrace.cc.
This causes memcpy to segfault. The character of the fails changes
when this is fixed:
GC Warning: Out of Memory! Returning NIL!
WARNING: program timed out.
FAIL: PR218 execution - source compiled test
UNTESTED: PR218 output - source compiled test
The fix for libgcj/23507 is to use a function pointer comparison
in the compare that tries to detect the interpreter.
Dave
--
J. David Anglin dave.anglin@nrc-cnrc.gc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6602)
Index: stacktrace.cc
===================================================================
RCS file: /cvs/gcc/gcc/libjava/stacktrace.cc,v
retrieving revision 1.8
diff -u -3 -p -r1.8 stacktrace.cc
--- stacktrace.cc 25 May 2005 23:24:05 -0000 1.8
+++ stacktrace.cc 21 Aug 2005 20:34:58 -0000
@@ -102,7 +102,7 @@ _Jv_StackTrace::UnwindTraceFn (struct _U
// Check if the trace buffer needs to be extended.
if (pos == state->length)
{
- int newLength = state->length *= 2;
+ int newLength = state->length * 2;
void *newFrames = _Jv_AllocBytes (newLength * sizeof(_Jv_StackFrame));
memcpy (newFrames, state->frames, state->length * sizeof(_Jv_StackFrame));
state->frames = (_Jv_StackFrame *) newFrames;
@@ -117,7 +117,7 @@ _Jv_StackTrace::UnwindTraceFn (struct _U
// correspondance between call frames in the interpreted stack and occurances
// of _Jv_InterpMethod::run() on the native stack.
#ifdef INTERPRETER
- if (func_addr == (_Unwind_Ptr) &_Jv_InterpMethod::run)
+ if ((void (*)(void)) func_addr == (void (*)(void)) &_Jv_InterpMethod::run)
{
state->frames[pos].type = frame_interpreter;
state->frames[pos].interp.meth = state->interp_frame->self;
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23508