Closed Bug 1853143 Opened 2 years ago Closed 2 years ago

Fix symbolication support for Android Raptor Browsertime tests in CI

Categories

(Testing :: Raptor, defect)

Default
All
Android
defect

Tracking

(firefox119 fixed)

RESOLVED FIXED
119 Branch
Tracking Status
firefox119 --- fixed

People

(Reporter: canova, Assigned: canova)

References

(Blocks 1 open bug)

Details

(Whiteboard: [fxp])

Attachments

(1 file)

Currently when we try to profile a Raptor Browsertime test on Android, unfortunately we can't get a symbolicated profiles in CI. It looks like the symbolication step fails. We need to investigate more and bring the symbolication support to Android as well.

Because of this issue, currently people have to upload their symbols to the symbol server to be able to get a symbolicated profiles. This brings an additional step to the users' workflows and makes it harder to analyze a performance issue.

During symbolication of talos and raptor tests happen via mozgeckoprofiler
python package. This package gets the unsymbolicated profile and symbolicates
by looking at the local symbol files. For CI, this symbolication happens by
downloading a crashreporter-symbols zip file and using the symbol information
there.

So while symbolicating the profile, we look at the libs list inside the
profile data to see which shared libraries are used in that profile with more
information about them.

It looks like Android profiles contains some libraries without a breakpad id.
For example, [vdso] has an empty string for breakpadId field. Here's an
example library object of [vdso]:

{
  "arch": "",
  "name": "[vdso]",
  "path": "[vdso]",
  "debugName": "[vdso]",
  "debugPath": "[vdso]",
  "breakpadId": "",
  "codeId": ""
}

As oppose to a regular library like this:

{
  "arch": "",
  "name": "libxul.so",
  "path": "/data/app/~~d0lIkOIHYXLU1YuZux1cpg==/org.mozilla.geckoview_example-21SAA3m16oweDcmEvRcAQA==/lib/arm64/libxul.so",
  "debugName": "libxul.so",
  "debugPath": "/data/app/~~d0lIkOIHYXLU1YuZux1cpg==/org.mozilla.geckoview_example-21SAA3m16oweDcmEvRcAQA==/lib/arm64/libxul.so",
  "breakpadId": "35AB0A69541292CE7BCBC8DA62B190780",
  "codeId": "690AAB351254CE927BCBC8DA62B19078"
}

Before this patch when the symbolication step had encountered this library, it
was aborting the whole symbolication step. This is not great because we still
have libraries that are valid. We shouldn't abort the whole symbolication step
just because of a library that we can't use.

So this patch changes the symolication behavior to ignore all the bad
libraries, so we can still symbolicate the other valid libraries properly.

Also good to mention that, I had to push None to the cleanMemoryMap
because we have to keep the length of cleanMemoryMap/combinedMemoryMap array
the same with profile.libs array. If we remove the None values from the
array, then we won't be able to match the libs and combinedMemoryMap arrays
elements one to one.

See Also: → 1853434
Pushed by canaltinova@gmail.com: https://hg.mozilla.org/integration/autoland/rev/924c329a0e34 Be more permissive on shared library modules during raptor/talos symbolication r=perftest-reviewers,mstange,kshampur
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → 119 Branch
Severity: -- → S2
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: