Hi Viktor,
Maybe reverting the hack for non win code too is useful temporarily, until the final solution designing. Maybe an RTE mechanism should be defined in non win part to avoid the reentrant call of the trace engine. This will signal the trap residing in the following code: HB_TRACE( HB_TR_DEBUG, ( " new_QApplication %i B %i KB", ( int ) hb_xquery( 1001 ), hbqt_getmemused() ) ); As I mentioned in one of my previous mail, the hb_xquery() calls the trace engine too, generating undesired behavior. The va_end() issue: Please analyze the following code snippets: … if( s_enabled && level <= hb_tr_level() ) { va_list ap; va_start( ap, fmt ); hb_tracelog_( level, file, line, proc, fmt, ap ); va_end( ap ); } … if( s_enabled ) { va_list ap; va_start( ap, fmt ); hb_tracelog_( hb_tr_level_, hb_tr_file_, hb_tr_line_, NULL, fmt, ap ); va_end( ap ); … So we can leave the: /* * Print the name and arguments for the function. */ vfprintf( s_fp, fmt, ap ); /* if( s_winout ) this is not necessary here */ /* TOFIX: va_end() is _required_ here according to all available documentation. */ /* va_end( ap ); Generates access violation in the subsequent hb_vsnprintf */ without va_end(); Best regards, István
_______________________________________________ Harbour mailing list (attachment size limit: 40KB) Harbour@harbour-project.org http://lists.harbour-project.org/mailman/listinfo/harbour