Open Bug 1311173 Opened 8 years ago Updated 2 years ago

MOZ_ASSERT not always fully resolving symbols in crash dump

Categories

(Testing :: web-platform-tests, defect)

Version 3
defect

Tracking

(Not tracked)

People

(Reporter: jya, Unassigned)

References

Details

This can be seen here:
https://treeherder.mozilla.org/logviewer.html#?job_id=37849497&repo=mozilla-inbound

While I lodge it under testing on recommendations on #developers, I've seen the same on a local central build running on my Linux box.

When an MOZ_ASSERT was hit, all symbols showed their location as lixbul.so
Blocks: 1311137
This was on a revision from after bug 1238043 landed :(
Component: General → web-platform-tests
Flags: needinfo?(james)
It is symbolicating something, but not everything. Near the assertion, there is:

Assertion failure: aStart <= aEnd, at /home/worker/workspace/build/src/obj-firefox/dist/include/Intervals.h:56
#01: mozilla::TrackBuffersManager::Buffered() const (/home/worker/workspace/build/application/firefox/libxul.so)

...where the libxul.so makes it look like some kind of symbolication script processed it, but it just ate the detailed info.

Then down below in the larger stack that has all the register information there is:
1  libxul.so!mozilla::TrackBuffersManager::Buffered [TrackBuffersManager.cpp:c7aeff40316c : 333 + 0x32]
One day I will understand how that stuff is intended to work. In the meantime I need ted to teach me. Again.
Flags: needinfo?(james) → needinfo?(ted)
(In reply to Andrew McCreight [:mccr8] from comment #2)
> It is symbolicating something, but not everything. Near the assertion, there
> is:
> 
> Assertion failure: aStart <= aEnd, at
> /home/worker/workspace/build/src/obj-firefox/dist/include/Intervals.h:56
> #01: mozilla::TrackBuffersManager::Buffered() const
> (/home/worker/workspace/build/application/firefox/libxul.so)
> 
> ...where the libxul.so makes it look like some kind of symbolication script
> processed it, but it just ate the detailed info.

So, I noticed in the middle of the assertion stack:
 [task 2016-10-18T16:37:25.511129Z] 16:37:25 INFO - mozcrash Downloading symbols from: https://queue.taskcluster.net/v1/task/NjtJJm9oR4CxU6pxB4Gq7g/artifacts/public/build/target.crashreporter-symbols.zip 

...which is weird because earlier in the build log there is:
[task 2016-10-18T16:24:29.723539Z] 16:24:29     INFO - Downloading and extracting to /home/worker/workspace/build/symbols these dirs * from https://queue.taskcluster.net/v1/task/NjtJJm9oR4CxU6pxB4Gq7g/artifacts/public/build/target.crashreporter-symbols.zip

But yeah, the harness is still being invoked with the URL to the symbols.zip:
[task 2016-10-18T16:25:26.019141Z] 16:25:26     INFO - Running command: ['/home/worker/workspace/build/venv/bin/python', '-u', '/home/worker/workspace/build/tests/web-platform/runtests.py', '--log-raw=-', '--log-raw=/home/worker/workspace/build/blobber_upload_dir/wpt_raw.log', '--log-errorsummary=/home/worker/workspace/build/blobber_upload_dir/wpt_errorsummary.log', '--binary=/home/worker/workspace/build/application/firefox/firefox', '--symbols-path=https://queue.taskcluster.net/v1/task/NjtJJm9oR4CxU6pxB4Gq7g/artifacts/public/build/target.crashreporter-symbols.zip', '--stackwalk-binary=/usr/local/bin/linux64-minidump_stackwalk', '--stackfix-dir=/home/worker/workspace/build/tests/bin', '--test-type=testharness', '--disable-e10s', '--total-chunks=12', '--this-chunk=11', '--prefs-root=/home/worker/workspace/build/tests/web-platform/prefs', '--processes=1', '--config=/home/worker/workspace/build/tests/web-platform/wptrunner.ini', '--ca-cert-path=/home/worker/workspace/build/tests/web-platform/certs/cacert.pem', '--host-key-path=/home/worker/workspace/build/tests/web-platform/certs/web-platform.test.key', '--host-cert-path=/home/worker/workspace/build/tests/web-platform/certs/web-platform.test.pem', '--certutil-binary=/home/worker/workspace/build/tests/bin/certutil'] in /home/worker/workspace/build

That's long, but the '--symbols-path=https://queue.taskcluster.net/v1/task/NjtJJm9oR4CxU6pxB4Gq7g/artifacts/public/build/target.crashreporter-symbols.zip' is the notable bit.

So presumably the WPT harness is passing a URL as the `symbols_path` into the stack fixer script, which isn't doing anything useful. (mozcrash can handle a URL to a symbols zip, but the stack fixer script needs a directory of unzipped symbols). I don't know where this gets handled for other harnesses, I assume somewhere in mozharness. For debug tests we always download the symbols.zip before running the harness (for this exact reason) and then pass the symbol directory in as --symbols-path.


> Then down below in the larger stack that has all the register information
> there is:

This is the output of minidump_stackwalk, FYI.
Flags: needinfo?(ted)
No longer blocks: 1440061
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.