Przemek:

Take note: I changed C code myself   :-)

I added 4a, 4b, 4c, 4d:
----------------
      printf( "4. hb_vmThreadInit()\n\r" );fflush(stdout);

      if( pState->pszDefRDD )
         printf( "4a. hb_vmThreadInit()\n\r" );fflush(stdout);
         hb_stackRDD()->szDefaultRDD = pState->pszDefRDD;
         printf( "4b. hb_vmThreadInit()\n\r" );fflush(stdout);

      if( s_fHVMActive )
      {
         /* call CLIPINIT function to initialize GetList PUBLIC variables
          * ErrorBlock() and __SetHelpK()
          */
         printf( "4c. hb_vmThreadInit()\n\r" );fflush(stdout);
         hb_vmDoInitClip();
         printf( "4d. hb_vmThreadInit()\n\r" );fflush(stdout);
      }

      printf( "5. hb_vmThreadInit()\n\r" );fflush(stdout);
----------------

Using -bm flag and hbvmmt

-------------------
1. HB_THREADSTART
1. hb_threadStartVM
3. HB_THREADSTART
2. hb_threadStartVM
1. hb_vmThreadInit()
2. hb_vmThreadInit()
3. hb_vmThreadInit()
4. hb_vmThreadInit()
4b. hb_vmThreadInit()
4c. hb_vmThreadInit()
SYS1808:
The process has stopped.  The software diagnostic
code (exception code) is  0001.
-------------------

Seem to be:
  hb_vmDoInitClip();

... and is some pass in hb_vmDo( 0 );

-----------------------
/* call CLIPINIT function to initialize ErrorBlock() and __SetHelpK() */
static void hb_vmDoInitClip( void )
{
   printf( "1. hb_vmDoInitClip()\n\r" );fflush(stdout);
   PHB_DYNS pDynSym = hb_dynsymFind( "CLIPINIT" );
   printf( "2. hb_vmDoInitClip()\n\r" );fflush(stdout);

   if( pDynSym && pDynSym->pSymbol->value.pFunPtr )
   {
      printf( "3. hb_vmDoInitClip()\n\r" );fflush(stdout);
      hb_vmPushSymbol( pDynSym->pSymbol );
      printf( "4. hb_vmDoInitClip()\n\r" );fflush(stdout);
      hb_vmPushNil();
      printf( "5. hb_vmDoInitClip()\n\r" );fflush(stdout);
      hb_vmDo( 0 );
      printf( "6. hb_vmDoInitClip()\n\r" );fflush(stdout);
   }
}
-----------------------

-------------------
1. hb_vmDoInitClip()
2. hb_vmDoInitClip()
3. hb_vmDoInitClip()
4. hb_vmDoInitClip()
5. hb_vmDoInitClip()
6. hb_vmDoInitClip()
1. HB_THREADSTART
1. hb_threadStartVM
2. hb_threadStartVM
1. hb_vmThreadInit()
2. hb_vmThreadInit()
3. hb_vmThreadInit()
4. hb_vmThreadInit()
4b. hb_vmThreadInit()
4c. hb_vmThreadInit()
1. hb_vmDoInitClip()
2. hb_vmDoInitClip()
3. hb_vmDoInitClip()
4. hb_vmDoInitClip()
5. hb_vmDoInitClip()
SYS1808:
The process has stopped.  The software diagnostic
code (exception code) is  0001.
-------------------


... and is some pass in HB_VM_EXECUTE( pSym );

-------------------
HB_EXPORT void hb_vmDo( USHORT uiParams )
{
   printf( "1. hb_vmDo()\n\r" );fflush(stdout);
   HB_STACK_TLS_PRELOAD
   HB_STACK_STATE sStackState;
   printf( "2. hb_vmDo()\n\r" );fflush(stdout);
   PHB_SYMB pSym;
   printf( "3. hb_vmDo()\n\r" );fflush(stdout);
   PHB_ITEM pSelf;
   printf( "4. hb_vmDo()\n\r" );fflush(stdout);
#ifndef HB_NO_PROFILER
   ULONG ulClock = 0;
   BOOL bProfiler = hb_bProfiler; /* because profiler state may change */
   printf( "5. hb_vmDo()\n\r" );fflush(stdout);
#endif

   HB_TRACE(HB_TR_DEBUG, ("hb_vmDo(%hu)", uiParams));

#ifndef HB_NO_PROFILER
   if( bProfiler )
      ulClock = ( ULONG ) clock();
#endif

   /* Poll the console keyboard
   #if !defined( HB_GUI )
      hb_inkeyPoll();
   #endif
   */

   printf( "6. hb_vmDo()\n\r" );fflush(stdout);

   pSym = hb_stackNewFrame( &sStackState, uiParams )->item.asSymbol.value;
   pSelf = hb_stackSelfItem();   /* NIL, OBJECT or BLOCK */

   printf( "7. hb_vmDo()\n\r" );fflush(stdout);

   if( ! HB_IS_NIL( pSelf ) ) /* are we sending a message ? */
   {
      PHB_SYMB pExecSym;

      printf( "8. hb_vmDo()\n\r" );fflush(stdout);

      pExecSym = hb_objGetMethod( pSelf, pSym, &sStackState );

      printf( "9. hb_vmDo()\n\r" );fflush(stdout);

      if( pExecSym )
         printf( "10. hb_vmDo()\n\r" );fflush(stdout);
         HB_VM_FUNCUNREF( pExecSym );
         printf( "11. hb_vmDo()\n\r" );fflush(stdout);
      if( pExecSym && HB_VM_ISFUNC( pExecSym ) )
      {
HB_TRACE_PRG(("Calling: %s:%s", hb_objGetClsName( pSelf ), pSym->szName));

         printf( "12. hb_vmDo()\n\r" );fflush(stdout);
         HB_VM_EXECUTE( pExecSym );

         printf( "13. hb_vmDo()\n\r" );fflush(stdout);

#ifndef HB_NO_PROFILER
         if( bProfiler )
            hb_mthAddTime( clock() - ulClock );
#endif
      }
      else if( pSym->szName[ 0 ] == '_' )
hb_errRT_BASE_SubstR( EG_NOVARMETHOD, 1005, NULL, pSym->szName + 1, HB_ERR_ARGS_SELFPARAMS );
      else
hb_errRT_BASE_SubstR( EG_NOMETHOD, 1004, NULL, pSym->szName, HB_ERR_ARGS_SELFPARAMS );
   }
   else /* it is a function */
   {
      printf( "14. hb_vmDo()\n\r" );fflush(stdout);
      HB_VM_FUNCUNREF( pSym );
      printf( "15. hb_vmDo()\n\r" );fflush(stdout);
      if( HB_VM_ISFUNC( pSym ) )
      {
         HB_TRACE_PRG(("Calling: %s", pSym->szName));

#ifndef HB_NO_PROFILER
         if( bProfiler && pSym->pDynSym )
            pSym->pDynSym->ulRecurse++;
#endif

         printf( "16. hb_vmDo()\n\r" );fflush(stdout);
         HB_VM_EXECUTE( pSym );
         printf( "17. hb_vmDo()\n\r" );fflush(stdout);

#ifndef HB_NO_PROFILER
         if( bProfiler && pSym->pDynSym )
         {
pSym->pDynSym->ulCalls++; /* profiler support */ /* Time spent has to be added only inside topmost call of a recursive function */
            if( --pSym->pDynSym->ulRecurse == 0 )
pSym->pDynSym->ulTime += clock() - ulClock; /* profiler support */
         }
#endif
      }
      else
hb_errRT_BASE_SubstR( EG_NOFUNC, 1001, NULL, pSym->szName, HB_ERR_ARGS_BASEPARAMS );
   }

#ifndef HB_NO_DEBUG
   if( sStackState.fDebugging )
      hb_vmDebuggerEndProc();
#endif

   printf( "18. hb_vmDo()\n\r" );fflush(stdout);

   hb_stackOldFrame( &sStackState );
}
-------------------

------------------
1. hb_vmDo()
2. hb_vmDo()
3. hb_vmDo()
4. hb_vmDo()
6. hb_vmDo()
7. hb_vmDo()
14. hb_vmDo()
15. hb_vmDo()
16. hb_vmDo()
17. hb_vmDo()
18. hb_vmDo()
1. hb_vmDoInitClip()
2. hb_vmDoInitClip()
3. hb_vmDoInitClip()
4. hb_vmDoInitClip()
5. hb_vmDoInitClip()
1. hb_vmDo()
2. hb_vmDo()
3. hb_vmDo()
4. hb_vmDo()
6. hb_vmDo()
7. hb_vmDo()
14. hb_vmDo()
15. hb_vmDo()
16. hb_vmDo()   <-- note 18 ?
1. hb_vmDo()
2. hb_vmDo()
3. hb_vmDo()
4. hb_vmDo()
6. hb_vmDo()
7. hb_vmDo()
14. hb_vmDo()
15. hb_vmDo()
16. hb_vmDo()
17. hb_vmDo()
18. hb_vmDo()
1. hb_vmDo()
2. hb_vmDo()
3. hb_vmDo()
4. hb_vmDo()
6. hb_vmDo()
7. hb_vmDo()
14. hb_vmDo()
15. hb_vmDo()
16. hb_vmDo()   <-- note 18 ?
1. hb_vmDo()
2. hb_vmDo()
3. hb_vmDo()
4. hb_vmDo()
6. hb_vmDo()
7. hb_vmDo()
14. hb_vmDo()
15. hb_vmDo()
16. hb_vmDo()
17. hb_vmDo()   <-- note
18. hb_vmDo()
17. hb_vmDo()   <-- note
18. hb_vmDo()
1. hb_vmDo()
2. hb_vmDo()
3. hb_vmDo()
4. hb_vmDo()
6. hb_vmDo()
7. hb_vmDo()
14. hb_vmDo()
15. hb_vmDo()
16. hb_vmDo()
17. hb_vmDo()   <-- note
18. hb_vmDo()
17. hb_vmDo()   <-- note
18. hb_vmDo()
6. hb_vmDoInitClip()
1. hb_vmDo()
2. hb_vmDo()
3. hb_vmDo()
4. hb_vmDo()
6. hb_vmDo()
7. hb_vmDo()
14. hb_vmDo()
15. hb_vmDo()
16. hb_vmDo()
17. hb_vmDo()
18. hb_vmDo()
1. hb_vmDo()
2. hb_vmDo()
3. hb_vmDo()
4. hb_vmDo()
6. hb_vmDo()
7. hb_vmDo()
14. hb_vmDo()
15. hb_vmDo()
16. hb_vmDo()
17. hb_vmDo()
18. hb_vmDo()
1. hb_vmDo()
2. hb_vmDo()
3. hb_vmDo()
4. hb_vmDo()
6. hb_vmDo()
7. hb_vmDo()
14. hb_vmDo()
15. hb_vmDo()
16. hb_vmDo()
17. hb_vmDo()
18. hb_vmDo()
1. hb_vmDo()
2. hb_vmDo()
3. hb_vmDo()
4. hb_vmDo()
6. hb_vmDo()
7. hb_vmDo()
14. hb_vmDo()
15. hb_vmDo()
16. hb_vmDo()
17. hb_vmDo()
18. hb_vmDo()
1. hb_vmDo()
2. hb_vmDo()
3. hb_vmDo()
4. hb_vmDo()
6. hb_vmDo()
7. hb_vmDo()
14. hb_vmDo()
15. hb_vmDo()
16. hb_vmDo()   <-- note 18 ?
1. hb_vmDo()
2. hb_vmDo()
3. hb_vmDo()
4. hb_vmDo()
6. hb_vmDo()
7. hb_vmDo()
14. hb_vmDo()
15. hb_vmDo()
16. hb_vmDo()   <-- note 18 ?
1. HB_THREADSTART
1. hb_threadStartVM
2. hb_threadStartVM
1. hb_vmThreadInit()
2. hb_vmThreadInit()
3. hb_vmThreadInit()
4. hb_vmThreadInit()
4b. hb_vmThreadInit()
4c. hb_vmThreadInit()
1. hb_vmDoInitClip()
2. hb_vmDoInitClip()
3. hb_vmDoInitClip()
4. hb_vmDoInitClip()
5. hb_vmDoInitClip()
1. hb_vmDo()
2. hb_vmDo()
3. hb_vmDo()
4. hb_vmDo()
6. hb_vmDo()
7. hb_vmDo()
14. hb_vmDo()
15. hb_vmDo()
16. hb_vmDo()   <-- note 18 ?
SYS1808:
The process has stopped.  The software diagnostic
code (exception code) is  0001.
-------------------


David Macias


_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to