Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Issue 1346453004: NativeStackSampler implementation for Mac. (Closed)

Created:
5 years, 3 months ago by sydli
Modified:
3 years, 11 months ago
CC:
chromium-reviews
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

NativeStackSampler implementation for Mac. Stack sampling on Mac implemented for StackSamplingProfiler to provide Chrome stack trace data from Mac users to UMA. BUG=531673

Patch Set 1 #

Patch Set 2 : Adjusted comments. #

Total comments: 46

Patch Set 3 : Addressed Rob's comments. #

Total comments: 8

Patch Set 4 : #

Total comments: 23

Patch Set 5 : Small changes and kUnknownModuleIndex on dladdr failure. #

Patch Set 6 : wittman's comments. #

Total comments: 29

Patch Set 7 : adress comments. #

Total comments: 34

Patch Set 8 : #

Total comments: 2

Patch Set 9 : rsesek's comments #

Total comments: 7

Patch Set 10 : Binding libraries and nits. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+354 lines, -3 lines) Patch
M base/BUILD.gn View 1 2 3 4 5 6 7 8 9 2 chunks +5 lines, -0 lines 0 comments Download
M base/base.gypi View 1 2 3 4 5 6 7 8 9 2 chunks +6 lines, -0 lines 0 comments Download
A base/profiler/native_stack_sampler_mac.cc View 1 2 3 4 5 6 7 8 9 1 chunk +338 lines, -0 lines 0 comments Download
M base/profiler/stack_sampling_profiler_unittest.cc View 1 2 3 4 5 6 7 8 9 3 chunks +5 lines, -3 lines 0 comments Download

Messages

Total messages: 32 (9 generated)
sydli
+erikchen and +robliao for review.
5 years, 3 months ago (2015-09-14 21:14:55 UTC) #2
robliao
A lot of fun stuff here! https://codereview.chromium.org/1346453004/diff/20001/base/profiler/native_stack_sampler_mac.cc File base/profiler/native_stack_sampler_mac.cc (right): https://codereview.chromium.org/1346453004/diff/20001/base/profiler/native_stack_sampler_mac.cc#newcode23 base/profiler/native_stack_sampler_mac.cc:23: Nit: Remove extra ...
5 years, 3 months ago (2015-09-14 21:58:17 UTC) #3
sydli
Rob's comments. +wittman for review. https://codereview.chromium.org/1346453004/diff/20001/base/profiler/native_stack_sampler_mac.cc File base/profiler/native_stack_sampler_mac.cc (right): https://codereview.chromium.org/1346453004/diff/20001/base/profiler/native_stack_sampler_mac.cc#newcode23 base/profiler/native_stack_sampler_mac.cc:23: On 2015/09/14 21:58:17, robliao ...
5 years, 3 months ago (2015-09-14 23:00:14 UTC) #6
robliao
https://codereview.chromium.org/1346453004/diff/20001/base/profiler/native_stack_sampler_mac.cc File base/profiler/native_stack_sampler_mac.cc (right): https://codereview.chromium.org/1346453004/diff/20001/base/profiler/native_stack_sampler_mac.cc#newcode81 base/profiler/native_stack_sampler_mac.cc:81: memcpy(&hdr, module_addr, sizeof(hdr)); On 2015/09/14 23:00:13, sydli wrote: > ...
5 years, 3 months ago (2015-09-14 23:28:06 UTC) #8
mimmyk7
On 2015/09/14 23:28:06, robliao wrote: > https://codereview.chromium.org/1346453004/diff/20001/base/profiler/native_stack_sampler_mac.cc > File base/profiler/native_stack_sampler_mac.cc (right): > > https://codereview.chromium.org/1346453004/diff/20001/base/profiler/native_stack_sampler_mac.cc#newcode81 > ...
5 years, 3 months ago (2015-09-14 23:57:46 UTC) #9
mimmyk7
On 2015/09/14 23:28:06, robliao wrote: > https://codereview.chromium.org/1346453004/diff/20001/base/profiler/native_stack_sampler_mac.cc > File base/profiler/native_stack_sampler_mac.cc (right): > > https://codereview.chromium.org/1346453004/diff/20001/base/profiler/native_stack_sampler_mac.cc#newcode81 > ...
5 years, 3 months ago (2015-09-14 23:57:48 UTC) #10
sydli
Comments and removed spammer as reviewer. https://codereview.chromium.org/1346453004/diff/20001/base/profiler/native_stack_sampler_mac.cc File base/profiler/native_stack_sampler_mac.cc (right): https://codereview.chromium.org/1346453004/diff/20001/base/profiler/native_stack_sampler_mac.cc#newcode120 base/profiler/native_stack_sampler_mac.cc:120: // |offset| is ...
5 years, 3 months ago (2015-09-15 00:20:13 UTC) #12
Mike Wittman
https://codereview.chromium.org/1346453004/diff/90005/base/profiler/native_stack_sampler_mac.cc File base/profiler/native_stack_sampler_mac.cc (right): https://codereview.chromium.org/1346453004/diff/90005/base/profiler/native_stack_sampler_mac.cc#newcode13 base/profiler/native_stack_sampler_mac.cc:13: #include "base/logging.h" unused? https://codereview.chromium.org/1346453004/diff/90005/base/profiler/native_stack_sampler_mac.cc#newcode14 base/profiler/native_stack_sampler_mac.cc:14: #include "base/md5.h" unused? https://codereview.chromium.org/1346453004/diff/90005/base/profiler/native_stack_sampler_mac.cc#newcode17 ...
5 years, 3 months ago (2015-09-15 00:34:54 UTC) #13
sydli
https://codereview.chromium.org/1346453004/diff/90005/base/profiler/native_stack_sampler_mac.cc File base/profiler/native_stack_sampler_mac.cc (right): https://codereview.chromium.org/1346453004/diff/90005/base/profiler/native_stack_sampler_mac.cc#newcode13 base/profiler/native_stack_sampler_mac.cc:13: #include "base/logging.h" On 2015/09/15 00:34:54, Mike Wittman wrote: > ...
5 years, 3 months ago (2015-09-15 01:12:20 UTC) #15
Robert Sesek
Why didn't we continue this review on https://codereview.chromium.org/1342453003/ ? https://codereview.chromium.org/1346453004/diff/140001/base/profiler/native_stack_sampler_mac.cc File base/profiler/native_stack_sampler_mac.cc (right): https://codereview.chromium.org/1346453004/diff/140001/base/profiler/native_stack_sampler_mac.cc#newcode60 base/profiler/native_stack_sampler_mac.cc:60: ...
5 years, 3 months ago (2015-09-15 13:28:19 UTC) #17
Mike Wittman
https://codereview.chromium.org/1346453004/diff/140001/base/profiler/native_stack_sampler_mac.cc File base/profiler/native_stack_sampler_mac.cc (right): https://codereview.chromium.org/1346453004/diff/140001/base/profiler/native_stack_sampler_mac.cc#newcode20 base/profiler/native_stack_sampler_mac.cc:20: static const int kUUIDLengthBytes = 16; static is unnecessary ...
5 years, 3 months ago (2015-09-15 16:00:15 UTC) #18
sydli
I've been using https://codereview.chromium.org/1342453003/ as a test CL; sorry for the confusion! I addressed your ...
5 years, 3 months ago (2015-09-15 18:01:05 UTC) #20
Mike Wittman
https://codereview.chromium.org/1346453004/diff/180001/base/profiler/native_stack_sampler_mac.cc File base/profiler/native_stack_sampler_mac.cc (right): https://codereview.chromium.org/1346453004/diff/180001/base/profiler/native_stack_sampler_mac.cc#newcode325 base/profiler/native_stack_sampler_mac.cc:325: #else nit: #endif here https://codereview.chromium.org/1346453004/diff/180001/base/profiler/stack_sampling_profiler_unittest.cc File base/profiler/stack_sampling_profiler_unittest.cc (right): https://codereview.chromium.org/1346453004/diff/180001/base/profiler/stack_sampling_profiler_unittest.cc#newcode265 ...
5 years, 3 months ago (2015-09-15 20:16:49 UTC) #21
sydli
https://codereview.chromium.org/1346453004/diff/180001/base/profiler/native_stack_sampler_mac.cc File base/profiler/native_stack_sampler_mac.cc (right): https://codereview.chromium.org/1346453004/diff/180001/base/profiler/native_stack_sampler_mac.cc#newcode325 base/profiler/native_stack_sampler_mac.cc:325: #else On 2015/09/15 20:16:49, Mike Wittman wrote: > nit: ...
5 years, 3 months ago (2015-09-15 20:37:40 UTC) #22
Robert Sesek
https://codereview.chromium.org/1346453004/diff/180001/base/profiler/native_stack_sampler_mac.cc File base/profiler/native_stack_sampler_mac.cc (right): https://codereview.chromium.org/1346453004/diff/180001/base/profiler/native_stack_sampler_mac.cc#newcode5 base/profiler/native_stack_sampler_mac.cc:5: #include <dlfcn.h> #include <libkern/OSByteOrder.h> https://codereview.chromium.org/1346453004/diff/180001/base/profiler/native_stack_sampler_mac.cc#newcode20 base/profiler/native_stack_sampler_mac.cc:20: const int kUUIDLengthBytes ...
5 years, 3 months ago (2015-09-15 20:53:01 UTC) #23
robliao
https://codereview.chromium.org/1346453004/diff/180001/base/profiler/native_stack_sampler_mac.cc File base/profiler/native_stack_sampler_mac.cc (right): https://codereview.chromium.org/1346453004/diff/180001/base/profiler/native_stack_sampler_mac.cc#newcode228 base/profiler/native_stack_sampler_mac.cc:228: size_t GetModuleIndex(const uintptr_t instruction_pointer, On 2015/09/15 20:53:00, Robert Sesek ...
5 years, 3 months ago (2015-09-15 21:04:30 UTC) #24
Robert Sesek
https://codereview.chromium.org/1346453004/diff/180001/base/profiler/native_stack_sampler_mac.cc File base/profiler/native_stack_sampler_mac.cc (right): https://codereview.chromium.org/1346453004/diff/180001/base/profiler/native_stack_sampler_mac.cc#newcode20 base/profiler/native_stack_sampler_mac.cc:20: const int kUUIDLengthBytes = 16; On 2015/09/15 20:53:00, Robert ...
5 years, 3 months ago (2015-09-15 21:11:37 UTC) #25
Mike Wittman
one comment, otherwise NativeStackSamplerMac and tests lgtm https://codereview.chromium.org/1346453004/diff/200001/base/profiler/stack_sampling_profiler_unittest.cc File base/profiler/stack_sampling_profiler_unittest.cc (right): https://codereview.chromium.org/1346453004/diff/200001/base/profiler/stack_sampling_profiler_unittest.cc#newcode5 base/profiler/stack_sampling_profiler_unittest.cc:5: #include <stdlib.h> ...
5 years, 3 months ago (2015-09-15 21:21:02 UTC) #26
sydli
https://codereview.chromium.org/1346453004/diff/180001/base/profiler/native_stack_sampler_mac.cc File base/profiler/native_stack_sampler_mac.cc (right): https://codereview.chromium.org/1346453004/diff/180001/base/profiler/native_stack_sampler_mac.cc#newcode5 base/profiler/native_stack_sampler_mac.cc:5: #include <dlfcn.h> On 2015/09/15 20:53:00, Robert Sesek wrote: > ...
5 years, 3 months ago (2015-09-15 21:49:43 UTC) #27
robliao
lgtm https://codereview.chromium.org/1346453004/diff/180001/base/profiler/native_stack_sampler_mac.cc File base/profiler/native_stack_sampler_mac.cc (right): https://codereview.chromium.org/1346453004/diff/180001/base/profiler/native_stack_sampler_mac.cc#newcode134 base/profiler/native_stack_sampler_mac.cc:134: static_assert(sizeof(uuid_cmd->uuid) == kUUIDLengthBytes, On 2015/09/15 21:49:43, sydli wrote: ...
5 years, 3 months ago (2015-09-16 01:41:45 UTC) #28
Robert Sesek
https://codereview.chromium.org/1346453004/diff/180001/base/profiler/native_stack_sampler_mac.cc File base/profiler/native_stack_sampler_mac.cc (right): https://codereview.chromium.org/1346453004/diff/180001/base/profiler/native_stack_sampler_mac.cc#newcode134 base/profiler/native_stack_sampler_mac.cc:134: static_assert(sizeof(uuid_cmd->uuid) == kUUIDLengthBytes, On 2015/09/16 01:41:45, robliao wrote: > ...
5 years, 3 months ago (2015-09-17 22:06:56 UTC) #29
sydli
https://codereview.chromium.org/1346453004/diff/180001/base/profiler/native_stack_sampler_mac.cc File base/profiler/native_stack_sampler_mac.cc (right): https://codereview.chromium.org/1346453004/diff/180001/base/profiler/native_stack_sampler_mac.cc#newcode134 base/profiler/native_stack_sampler_mac.cc:134: static_assert(sizeof(uuid_cmd->uuid) == kUUIDLengthBytes, On 2015/09/17 22:06:56, Robert Sesek wrote: ...
5 years, 3 months ago (2015-09-18 20:29:21 UTC) #31
robliao
3 years, 11 months ago (2017-01-03 08:03:00 UTC) #32
Message was sent while issue was closed.
On 2015/09/18 20:29:21, sydli wrote:
>
https://codereview.chromium.org/1346453004/diff/180001/base/profiler/native_s...
> File base/profiler/native_stack_sampler_mac.cc (right):
> 
>
https://codereview.chromium.org/1346453004/diff/180001/base/profiler/native_s...
> base/profiler/native_stack_sampler_mac.cc:134:
> static_assert(sizeof(uuid_cmd->uuid) == kUUIDLengthBytes,
> On 2015/09/17 22:06:56, Robert Sesek wrote:
> > On 2015/09/16 01:41:45, robliao wrote:
> > > On 2015/09/15 21:49:43, sydli wrote:
> > > > On 2015/09/15 20:53:00, Robert Sesek wrote:
> > > > > Using sizeof(uuid_t) would then mean removing this static_assert.
> > > > 
> > > > Done.
> > > 
> > > I might be looking at the wrong header, but it appears that uuid_command
is
> > just
> > > uint8_t uuid[16]; Having the static assert would still be useful here.
> > 
> > Fair point. Keeping the static_assert would be good to do.
> 
> Ah-- makes sense. Put it back.
> 
>
https://codereview.chromium.org/1346453004/diff/220001/base/profiler/native_s...
> File base/profiler/native_stack_sampler_mac.cc (right):
> 
>
https://codereview.chromium.org/1346453004/diff/220001/base/profiler/native_s...
> base/profiler/native_stack_sampler_mac.cc:90: for (uint32_t i = 0; i <
> OSSwapBigToHostInt32(header->nfat_arch); ++i) {
> On 2015/09/16 01:41:45, robliao wrote:
> > Cache the result of OSSwapBigToHostInt32(header->nfat_arch)
> 
> Done.
> 
>
https://codereview.chromium.org/1346453004/diff/220001/base/profiler/native_s...
> base/profiler/native_stack_sampler_mac.cc:119: bool swap = header->magic ==
> MH_CIGAM_64;
> On 2015/09/16 01:41:45, robliao wrote:
> > Nit: Group statement with the next set of statements. (e.g. linebreak above
> and
> > remove linebreak below.)
> 
> Done.
> 
>
https://codereview.chromium.org/1346453004/diff/220001/base/profiler/native_s...
> base/profiler/native_stack_sampler_mac.cc:269: thread_suspend(thread_handle_);
> On 2015/09/17 22:06:56, Robert Sesek wrote:
> > In the email thread, Mark mentioned that this could deadlock if the thread
> about
> > to be suspended is holding a lock in dyld. He gave some ideas for handling
> that
> > you may want to consider.
> 
> Now forcibly binds library used during stack walk. Not sure about the best way
> to find the kernel library pathname, though; assuming it's always in
> /usr/lib/system feels very wrong. Is there a better way?

Closing this review for now as it's now reasonably stale and will need updating
by sydli@ before any submission.

Powered by Google App Engine
This is Rietveld 408576698