help-smalltalk
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]