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