This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
mtrace && fork
- To: libc-alpha Mailinglist <libc-alpha at sourceware dot cygnus dot com>
- Subject: mtrace && fork
- From: Andreas Jaeger <aj at suse dot de>
- Date: 18 Sep 2000 15:54:00 +0200
- Cc: Waldo Bastian <bastian at suse dot de>
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?
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