about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2016-04-19 00:54:24 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2016-04-19 00:54:24 +0200
commit593285ac1520e54467573c3a73cdda26a6a5acea (patch)
treebab6d81ebd2bed64a48747a56eb89d414b158dad
parentd20dce250a6852f5083c05997fc6397c5d438a96 (diff)
downloadglibc-593285ac1520e54467573c3a73cdda26a6a5acea.tar.gz
glibc-593285ac1520e54467573c3a73cdda26a6a5acea.tar.xz
glibc-593285ac1520e54467573c3a73cdda26a6a5acea.zip
hurd: fix profiling short-living processes
	* sysdeps/mach/hurd/profil.c (update_waiter): Initialize
	profil_reply_port.
	(profile_waiter): Do not initialize profil_reply_port.
-rw-r--r--ChangeLog6
-rw-r--r--sysdeps/mach/hurd/profil.c5
2 files changed, 9 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 200cfcb4fc..04f5693376 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2016-04-19  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+	* sysdeps/mach/hurd/profil.c (update_waiter): Initialize
+	profil_reply_port.
+	(profile_waiter): Do not initialize profil_reply_port.
+
 2016-04-18  Wilco Dijkstra  <wdijkstr@arm.com>
 
 	[BZ #18712]
diff --git a/sysdeps/mach/hurd/profil.c b/sysdeps/mach/hurd/profil.c
index dd77cd3d53..be249bbbe3 100644
--- a/sysdeps/mach/hurd/profil.c
+++ b/sysdeps/mach/hurd/profil.c
@@ -40,7 +40,7 @@ static mach_msg_timeout_t collector_timeout; /* ms between collections.  */
 static int profile_tick;
 
 /* Reply port used by profiler thread */
-static mach_port_t profil_reply_port;
+static mach_port_t profil_reply_port = MACH_PORT_NULL;
 
 /* Forwards */
 static kern_return_t profil_task_get_sampled_pcs (mach_port_t,
@@ -63,6 +63,8 @@ update_waiter (u_short *sample_buffer, size_t size, size_t offset, u_int scale)
 
   if (profile_thread == MACH_PORT_NULL)
     {
+      if (profil_reply_port == MACH_PORT_NULL)
+	profil_reply_port = __mach_reply_port ();
       /* Set up the profiling collector thread.  */
       err = __thread_create (__mach_task_self (), &profile_thread);
       if (! err)
@@ -182,7 +184,6 @@ profile_waiter (void)
   mach_msg_header_t msg;
   mach_port_t timeout_reply_port;
 
-  profil_reply_port = __mach_reply_port ();
   timeout_reply_port = __mach_reply_port ();
 
   while (1)