On Sat, 08 Nov 2008, David Arturo Macias Corona wrote: Hi David,
> To see something I added last tracing label > ------------------------- > ULONG _hb_gettid( void ) > { > ULONG tid = 0; > PTIB ptib = NULL; > > if( DosGetInfoBlocks( &ptib, NULL ) == NO_ERROR ) > { > if( ! ptib ) > { printf( "ptib is NULL\r\n" ); fflush(stdout); } > else if( !ptib->tib_ptib2 ) > { printf( "ptib->tib_ptib2 is NULL\r\n" ); fflush(stdout); } > else > tid = ptib->tib_ptib2->tib2_ultid; > printf( "ptib->tib_ptib2->tib2_ultid\r\n" ); fflush(stdout); > } > > return tid; > } > ------------------------- > Using -bm flag and hbvmmt > ----------------- > ptib->tib_ptib2->tib2_ultid > ptib->tib_ptib2->tib2_ultid > ptib->tib_ptib2->tib2_ultid > ptib->tib_ptib2->tib2_ultid > ptib->tib_ptib2->tib2_ultid > ptib->tib_ptib2->tib2_ultid > ptib->tib_ptib2->tib2_ultid > ptib->tib_ptib2->tib2_ultid > ptib->tib_ptib2->tib2_ultid > SYS1808: > The process has stopped. The software diagnostic > code (exception code) is 0001. > ----------------- Please change it a little bit yet. ULONG _hb_gettid( void ) { ULONG tid = 0; PTIB ptib = NULL; printf( "_hb_gettid()\r\n", tid ); fflush(stdout); if( DosGetInfoBlocks( &ptib, NULL ) == NO_ERROR ) { if( ! ptib ) { printf( "ptib is NULL\r\n" ); fflush(stdout); } else if( !ptib->tib_ptib2 ) { printf( "ptib->tib_ptib2 is NULL\r\n" ); fflush(stdout); } else tid = ptib->tib_ptib2->tib2_ultid; } printf( "TID=%lu\r\n", tid ); fflush(stdout); return tid; } > And what alternative exist if this is .F., returning tid=0 ? > if( DosGetInfoBlocks( &ptib, NULL ) == NO_ERROR ) We still do not know where it _exactly_ fails. When we will know then we will look for workaround. The above test should show if it's inside _hb_gettid() or in some different related function. best regards, Przemek _______________________________________________ Harbour mailing list Harbour@harbour-project.org http://lists.harbour-project.org/mailman/listinfo/harbour