Fix symbolication support for Android Raptor Browsertime tests in CI
Categories
(Testing :: Raptor, defect)
Tracking
(firefox119 fixed)
| Tracking | Status | |
|---|---|---|
| firefox119 | --- | fixed |
People
(Reporter: canova, Assigned: canova)
References
(Blocks 1 open bug)
Details
(Whiteboard: [fxp])
Attachments
(1 file)
|
48 bytes,
text/x-phabricator-request
|
Details |
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.
| Assignee | ||
Updated•2 years ago
|
Updated•2 years ago
|
| Assignee | ||
Comment 1•2 years ago
|
||
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.
Comment 3•2 years ago
|
||
| bugherder | ||
Updated•3 months ago
|
Description
•