diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2016-04-19 00:54:24 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2016-04-19 00:54:24 +0200 |
commit | 593285ac1520e54467573c3a73cdda26a6a5acea (patch) | |
tree | bab6d81ebd2bed64a48747a56eb89d414b158dad /sysdeps/mach/hurd | |
parent | d20dce250a6852f5083c05997fc6397c5d438a96 (diff) | |
download | glibc-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.
Diffstat (limited to 'sysdeps/mach/hurd')
-rw-r--r-- | sysdeps/mach/hurd/profil.c | 5 |
1 files changed, 3 insertions, 2 deletions
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) |