Re: [PATCH] libgst: Add built-in for Behavior>>#new and >>#new:

Holger Hans Peter Freyther <[email protected]>
Newsgroups gmane.comp.lang.smalltalk.gnu.general
Message-ID <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.