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.
This commit is contained in:
Samuel Thibault 2016-04-19 00:54:24 +02:00
parent d20dce250a
commit 593285ac15
2 changed files with 9 additions and 2 deletions

View File

@ -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> 2016-04-18 Wilco Dijkstra <wdijkstr@arm.com>
[BZ #18712] [BZ #18712]

View File

@ -40,7 +40,7 @@ static mach_msg_timeout_t collector_timeout; /* ms between collections. */
static int profile_tick; static int profile_tick;
/* Reply port used by profiler thread */ /* Reply port used by profiler thread */
static mach_port_t profil_reply_port; static mach_port_t profil_reply_port = MACH_PORT_NULL;
/* Forwards */ /* Forwards */
static kern_return_t profil_task_get_sampled_pcs (mach_port_t, 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 (profile_thread == MACH_PORT_NULL)
{ {
if (profil_reply_port == MACH_PORT_NULL)
profil_reply_port = __mach_reply_port ();
/* Set up the profiling collector thread. */ /* Set up the profiling collector thread. */
err = __thread_create (__mach_task_self (), &profile_thread); err = __thread_create (__mach_task_self (), &profile_thread);
if (! err) if (! err)
@ -182,7 +184,6 @@ profile_waiter (void)
mach_msg_header_t msg; mach_msg_header_t msg;
mach_port_t timeout_reply_port; mach_port_t timeout_reply_port;
profil_reply_port = __mach_reply_port ();
timeout_reply_port = __mach_reply_port (); timeout_reply_port = __mach_reply_port ();
while (1) while (1)