[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Help-smalltalk] [PATCH] libgst: Add built-in for Behavior>>#new and
From: |
Holger Hans Peter Freyther |
Subject: |
Re: [Help-smalltalk] [PATCH] libgst: Add built-in for Behavior>>#new and >>#new: |
Date: |
Mon, 18 Aug 2014 08:09:13 +0200 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
On Sat, Aug 16, 2014 at 09:57:06PM +0200, Holger Hans Peter Freyther wrote:
Hi,
> valgrind is giving me these with the plain JIT (without my patch
> as far as I can see)
>
>
>
> ==13940== Invalid read of size 4
> ==13940== at 0x40CE5E6: sync_wait_process (interp.c:1697)
> ==13940== by 0x884D7FF: ???
this is so odd.
mst_Boolean
emit_method_prolog (OOP methodOOP,
gst_compiled_method method)
...
/* Prepare new state */
jit_movi_i (JIT_R0, stack_depth);
jit_movi_i (JIT_V2, header.numArgs);
jit_prepare (2);
jit_pusharg_p (JIT_V2);
jit_pusharg_p (JIT_R0);
jit_finish (PTR_ACTIVATE_NEW_CONTEXT);
jit_retval (JIT_R0);
jit_finish(PTR_ACTIVATE_NEW_CONTEXT) is generating the bad "call"
to the middle of sync_wait_process. The runtime code has been
initialized as far as I can see though.
Is this more an issue of valgrind?
if (!native_ip)
{
OOP activeProcessOOP = get_scheduled_process ();
{
gst_callin_process process = (gst_callin_process) OOP_TO_OBJ
(activeProcessOOP);
process->returnedValue = POP_OOP ();
_gst_terminate_process (activeProcessOOP);
}
}
It appears possible (or due the valgrind issue) that the currently
active process is suspended when native_ip == 0 and that during the
bootstrap no other process is runnable. Do you remember why we have
not used processOOP at this point?
holger