Commit eee3c519 authored by vitalyr@chromium.org's avatar vitalyr@chromium.org

Start sampler for the runtime profiler even when we can't setup a signal handler.

Review URL: http://codereview.chromium.org/6625013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7059 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 36f63b84
......@@ -584,7 +584,9 @@ static void* ThreadEntry(void* arg) {
// This is also initialized by the first argument to pthread_create() but we
// don't know which thread will run first (the original thread or the new
// one) so we initialize it here too.
prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(thread->name()), 0, 0, 0);
prctl(PR_SET_NAME,
reinterpret_cast<unsigned long>(thread->name()), // NOLINT
0, 0, 0);
thread->thread_handle_data()->thread_ = pthread_self();
ASSERT(thread->IsValid());
thread->Run();
......@@ -871,6 +873,7 @@ class Sampler::PlatformData : public Malloced {
}
void SendProfilingSignal() {
if (!signal_handler_installed_) return;
// Glibc doesn't provide a wrapper for tgkill(2).
syscall(SYS_tgkill, vm_tgid_, vm_tid_, SIGPROF);
}
......@@ -937,8 +940,8 @@ void Sampler::Start() {
sa.sa_sigaction = ProfilerSignalHandler;
sigemptyset(&sa.sa_mask);
sa.sa_flags = SA_RESTART | SA_SIGINFO;
if (sigaction(SIGPROF, &sa, &data_->old_signal_handler_) != 0) return;
data_->signal_handler_installed_ = true;
data_->signal_handler_installed_ =
sigaction(SIGPROF, &sa, &data_->old_signal_handler_) == 0;
// Start a thread that sends SIGPROF signal to VM thread.
// Sending the signal ourselves instead of relying on itimer provides
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment