Unable to capture profile on B2G

RESOLVED FIXED in 2.1 S8 (7Nov)

Status

()

Core
Gecko Profiler
RESOLVED FIXED
4 years ago
4 years ago

People

(Reporter: gerard, Assigned: wcosta)

Tracking

({regression})

unspecified
2.1 S8 (7Nov)
ARM
Gonk (Firefox OS)
regression
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(1 attachment)

(Reporter)

Description

4 years ago
STR:
 0. ./profile.sh start -p b2g -t Compositor,GeckoMain,Gecko_IOThread,GonkSensors,InputReader -i 1
 1. ./profile.sh capture

Expected:
 Profile captured:

Actual:
> Signaling Profiled Processes: 206
> Stabilizing 206 b2g ...
> Pulling /data/local/tmp/profile_0_206.txt into profile_206_b2g.txt
> Adding symbols to profile_206_b2g.txt and creating profile_206_b2g.sym ...
> Merging profile:  profile_206_b2g.sym
> ./gecko/tools/profiler/merge-profiles.py profile_206_b2g.sym
> Traceback (most recent call last):
>   File "./gecko/tools/profiler/merge-profiles.py", line 91, in <module>
>    MergeProfiles(sys.argv[1:])
>  File "./gecko/tools/profiler/merge-profiles.py", line 32, in MergeProfiles
>    fp = open(fname, "r")
> IOError: [Errno 2] No such file or directory: 'profile_206_b2g.sym'

That's on a fresh Gecko/Gaia build, git uptodate, Flame KK.

Results: profile_captured.sym
Removing old profile files (from device) ... done
(Reporter)

Updated

4 years ago
Component: General → Gecko Profiler
Product: Firefox OS → Core
(Reporter)

Comment 1

4 years ago
Any idea?
Flags: needinfo?(wcosta)
Flags: needinfo?(jld)
(Reporter)

Comment 2

4 years ago
In profile.sh, there's a |> /dev/null| statement on the profiler-symbolicate.py script call.
This is hiding the real error:
> print "'TARGET_TOOLS_PREFIX' needs to be defined in the environment"

This comes from: https://github.com/mozilla-b2g/B2G/commit/ca3248ff

This is from your fix for bug 1022928.
Depends on: 1022928
Flags: needinfo?(wcosta)
Flags: needinfo?(jld)
(Reporter)

Comment 3

4 years ago
TARGET_TOOLS_PREFIX=/home/alex/codaz/Mozilla/b2g/devices/Flame/B2G.KK/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin/arm-eabi- ./profile.sh capture

Works. But it's far from being user friendly.
(Assignee)

Comment 4

4 years ago
(In reply to Alexandre LISSY :gerard-majax from comment #2)
> In profile.sh, there's a |> /dev/null| statement on the
> profiler-symbolicate.py script call.
> This is hiding the real error:
> > print "'TARGET_TOOLS_PREFIX' needs to be defined in the environment"
> 
> This comes from: https://github.com/mozilla-b2g/B2G/commit/ca3248ff
> 
> This is from your fix for bug 1022928.

The /dev/null was already there, I just split the call in two lines. The error happened because when you don't have a local build, you have to pass the '-s' <symbols-path> option to "profile.sh capture". <symbols-path> must be either a local path to breakpad symbols or the URL of the symbolicate server, i.e., http://symbolapi.mozilla.org. This blog post [1] has more details on that. The wiki page [2] still lacks update.

[1] http://walac.github.io/profiling-firefox-os-apps/
[2] https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Profiling_with_the_Built-in_Profiler
(Reporter)

Comment 5

4 years ago
That's on a local build tree.
(Assignee)

Updated

4 years ago
Assignee: nobody → wcosta
(Assignee)

Comment 6

4 years ago
Created attachment 8511330 [details] [review]
Deal with GECKO_TOOLS_PREFIX env var.
Attachment #8511330 - Flags: review?(dhylands)

Comment 7

4 years ago
Instead of renaming, can you make .var.profile set both GECKO_TOOLS_PREFIX and TARGET_TOOLS_PREFIX?
(Assignee)

Comment 8

4 years ago
(In reply to Michael Wu [:mwu] from comment #7)
> Instead of renaming, can you make .var.profile set both GECKO_TOOLS_PREFIX
> and TARGET_TOOLS_PREFIX?

Of course, but in this case, wouldn't be better profile-symbolicate deal with both cases?
Flags: needinfo?(mwu)

Comment 9

4 years ago
Sure, that makes sense too. I think the main thing is that GECKO_TOOLS_PREFIX doesn't necessary replace TARGET_TOOLS_PREFIX. It's an extra thing that may or may not be different than TARGET_TOOLS_PREFIX.
Flags: needinfo?(mwu)
(Assignee)

Updated

4 years ago
Attachment #8511330 - Flags: review?(mwu)
(Assignee)

Comment 10

4 years ago
(In reply to Michael Wu [:mwu] from comment #9)
> Sure, that makes sense too. I think the main thing is that
> GECKO_TOOLS_PREFIX doesn't necessary replace TARGET_TOOLS_PREFIX. It's an
> extra thing that may or may not be different than TARGET_TOOLS_PREFIX.

Ok, I updated the PR.
(Assignee)

Updated

4 years ago
Attachment #8511330 - Attachment description: Rename TARGET_TOOLS_PREFIX to GECKO_TOOLS_PREFIX → Deal with GECKO_TOOLS_PREFIX env var.
(Assignee)

Updated

4 years ago
Status: NEW → ASSIGNED
Any reason we can't have a default which will pick the right source of symbols?

Something like this perhaps?

 - no symbols -> use symbol server
 - local symbols -> use local symbols from build
 - breakpad symbols present -> use breakpad symbols
(Assignee)

Comment 12

4 years ago
(In reply to James Lal [:lightsofapollo] from comment #11)
> Any reason we can't have a default which will pick the right source of
> symbols?
> 
> Something like this perhaps?
> 
>  - no symbols -> use symbol server
>  - local symbols -> use local symbols from build
>  - breakpad symbols present -> use breakpad symbols

:/ If there is no "out" directory, it means we don't have a local build, so it can default to symbol server. Detecting breakpad symbols automatically can only happen if we have a local build, but if we have a local build, we don't need breakpad symbols.
(Assignee)

Comment 13

4 years ago
(In reply to Wander Lairson Costa [:wcosta] from comment #12)
> (In reply to James Lal [:lightsofapollo] from comment #11)
> > Any reason we can't have a default which will pick the right source of
> > symbols?
> > 
> > Something like this perhaps?
> > 
> >  - no symbols -> use symbol server
> >  - local symbols -> use local symbols from build
> >  - breakpad symbols present -> use breakpad symbols
> 
> :/ If there is no "out" directory, it means we don't have a local build, so
> it can default to symbol server. Detecting breakpad symbols automatically
> can only happen if we have a local build, but if we have a local build, we
> don't need breakpad symbols.

Another issue that just came to my mind is that using the symbol server when there is no local build by default depends on the image on the phone, if it is not a pvt build, symbolication will mess up.
Comment on attachment 8511330 [details] [review]
Deal with GECKO_TOOLS_PREFIX env var.

Looks reasonable to me.
Attachment #8511330 - Flags: review?(dhylands) → review+

Updated

4 years ago
Attachment #8511330 - Flags: review?(mwu) → review+
(Assignee)

Updated

4 years ago
Keywords: checkin-needed
Master: https://github.com/mozilla-b2g/B2G/commit/b5ad3226bcaf6221892c9f438e19771053f07b55
Status: ASSIGNED → RESOLVED
Last Resolved: 4 years ago
Keywords: checkin-needed
Resolution: --- → FIXED
Target Milestone: --- → 2.1 S8 (7Nov)
(Assignee)

Comment 16

4 years ago
(In reply to Ryan VanderMeulen [:RyanVM UTC-4] from comment #15)
> Master:
> https://github.com/mozilla-b2g/B2G/commit/
> b5ad3226bcaf6221892c9f438e19771053f07b55

Thanks :)
You need to log in before you can comment on or make changes to this bug.