This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: mtrace && fork


> Waldo reported the following problem together with a patch for mtrace:
> > With some further investigation I found the problem, ksysguard use KProcess 
> > to fork and start a child process. This confuses the hell out of [k/m]trace 
> > because there are now suddenly two process that write to the same logfile.
> 
> What do you think of the patch?  Is it ok to apply?  Or how shall we
> handle the situation?

Overriding fork() 

I'm sorry, I still haven't looked at mtrace in glibc in detail.
However, I suspect output to the trace file stream is buffered (if
not, maybe it should be..).  When the buffer 

> 
> 2000-09-18  Andreas Jaeger  <aj@suse.de>
> 
> 	* malloc/mtrace.c (fork): New.  Run mtrace only in the parent.
> 	Patch by Waldo Bastian <bastian@suse.de>.
> 
> ============================================================
> Index: malloc/mtrace.c
> --- malloc/mtrace.c	2000/07/13 18:40:43	1.22
> +++ malloc/mtrace.c	2000/09/18 13:53:26
> @@ -35,6 +35,7 @@
>  #include <stdlib.h>
>  
>  #include <stdio-common/_itoa.h>
> +#include <unistd.h>
>  
>  #ifdef USE_IN_LIBIO
>  # include <libio/iolibio.h>
> @@ -300,4 +301,26 @@
>    __free_hook = tr_old_free_hook;
>    __malloc_hook = tr_old_malloc_hook;
>    __realloc_hook = tr_old_realloc_hook;
> +}
> +
> +int
> +fork()
> +{
> + int result;
> +
> + if (mallstream)
> +    fflush (mallstream);
> +
> + result = __fork();
> + if (result == 0)
> +   {
> +     if (mallstream)
> +       {
> +	 fclose (mallstream);
> +	 __free_hook = tr_old_free_hook;
> +	 __malloc_hook = tr_old_malloc_hook;
> +	 __realloc_hook = tr_old_realloc_hook;
> +       }
> +   }
> + return result;
>  }
> 
> -- 
>  Andreas Jaeger
>   SuSE Labs aj@suse.de
>    private aj@arthur.inka.de
>     http://www.suse.de/~aj
> 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]