On Fri, 07 Nov 2008, David Arturo Macias Corona wrote:

Hi David,

> Using -bm flag and hbvmmt
> -------------------
> 1. hb_stackInit()
> 2. hb_stackInit()
> 3. hb_stackInit()
> 4. hb_stackInit(00130034)
> 5. hb_stackInit()
> 1. HB_THREADSTART
> 1. hb_threadStartVM
> 3. HB_THREADSTART
> 2. hb_threadStartVM
> 1. hb_stackInit()
>                  2. hb_stackInit()
>                                   3. hb_stackInit()
>                                                    4. 
> hb_stackInit(00170274)
>
>      5. hb_stackInit()
>              SYS1808:
> The process has stopped.  The software diagnostic
> code (exception code) is  0001.

Thank you.
Memory allocation and TLS initialization is correct.
Please restore original estack.c and replace hb_vmThreadInit()
in hvm.c with the code below and repeat the test. My next
candidate is crash after:
   3. hb_vmThreadInit()

best regards,
Przemek


HB_EXPORT void hb_vmThreadInit( void * Cargo )
{
   PHB_THREADSTATE pState;

   HB_TRACE(HB_TR_DEBUG, ("hb_vmThreadInit(%p)", Cargo));

   pState = ( PHB_THREADSTATE ) Cargo;
   if( !pState )
      pState = hb_threadStateNew();

   printf( "1. hb_vmThreadInit()\n\r" );fflush(stdout);
   hb_vmStackInit( pState );  /* initialize HVM thread stack */
   {
      HB_STACK_TLS_PRELOAD

      printf( "2. hb_vmThreadInit()\n\r" );fflush(stdout);
      hb_cdpSelectID( pState->pszCDP );
      hb_langSelectID( pState->pszLang );

      if( pState->pSet )
      {
         /* TODO: add set sharing */
         memcpy( hb_stackSetStruct(), pState->pSet, sizeof( HB_SET_STRUCT ) );
         hb_xfree( pState->pSet );
         pState->pSet = NULL;
      }
      else
         hb_setInitialize( hb_stackSetStruct() );

      printf( "3. hb_vmThreadInit()\n\r" );fflush(stdout);
      hb_gtAttach( pState->hGT );
      pState->hGT = NULL;
      printf( "4. hb_vmThreadInit()\n\r" );fflush(stdout);

      if( pState->pszDefRDD )
         hb_stackRDD()->szDefaultRDD = pState->pszDefRDD;

      if( s_fHVMActive )
      {
         /* call CLIPINIT function to initialize GetList PUBLIC variables
          * ErrorBlock() and __SetHelpK()
          */
         hb_vmDoInitClip();
      }

      printf( "5. hb_vmThreadInit()\n\r" );fflush(stdout);
      if( pState->pMemvars )
      {
         hb_memvarRestoreFromArray( pState->pMemvars );
         hb_itemRelease( pState->pMemvars );
         pState->pMemvars = NULL;
      }
      printf( "6. hb_vmThreadInit()\n\r" );fflush(stdout);
   }
}
_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to