Open Bug 1454265 Opened 2 years ago Updated 2 years ago

OS.File.writeAtomic fails to perform write operation on mochitest-plain on linux64-jsdcov

Categories

(Testing :: Code Coverage, enhancement)

enhancement
Not set
normal

Tracking

(Not tracked)

People

(Reporter: sparky, Unassigned)

References

(Blocks 1 open bug)

Details

Recently, e10s mode was enabled on all linux64-jsdcov test suites (bug 1451849). However, on mochitest-plain, OS.File.writeAtomic is failing to perform the write operation even though we have collected code coverage. This does not occur in the other mochitest sub-suite we run, browser-chrome.
Blocks: 1301174
Hi :milindl, I see that some changes were recently made by you here at [1] for 'NativeOSFileInternals.cpp'.

I am wondering if you would be able to help us with this issue? There are no error logs available unfortunately - OS.File.writeAtomic simply fails without warnings/errors.

If needed, jsdcov can be run locally with a mochitest-plain test with |mach test <PATH/TO/PLAIN/TEST> --jscov-dir-prefix <OUTPUT/DIR>|

[1]: https://dxr.mozilla.org/mozilla-central/source/toolkit/components/osfile/NativeOSFileInternals.cpp#972
Flags: needinfo?(i.milind.luthra)
Hi :yoric, we are having some problems with OS.File.writeAtomic and I am wondering if you would be able to help with this or if you would know someone that could?

This was the last bug to have changed the file: https://bugzilla.mozilla.org/show_bug.cgi?id=1063635
Flags: needinfo?(i.milind.luthra) → needinfo?(dteller)
What calls this method in mochitest-plain? The simplest suspect at this stage would be a caller that forgets to wait for the promise to be resolved.
Flags: needinfo?(dteller) → needinfo?(gmierz2)
:yoric, sorry my late reply and thank you for your quick reply! :)

Here is where we are failing: https://dxr.mozilla.org/mozilla-central/source/testing/modules/CoverageUtils.jsm#204

It's the same spot in both mochitest-plain and mochitest-browser-chrome, but plain fails whereas bc passes. I'll try playing with the promises and see if it helps. (IIRC I tried this and it didn't help but it may be worth another shot).
Flags: needinfo?(gmierz2) → needinfo?(dteller)
I meant to ask: "what calls the method `CoverageCollector.prototype.recordTestCoverage`"?
Flags: needinfo?(dteller) → needinfo?(gmierz2)
For browser-chrome, it is called here: https://dxr.mozilla.org/mozilla-central/source/testing/mochitest/browser-test.js#675

For mochitest-plain, it is called here: https://dxr.mozilla.org/mozilla-central/source/testing/mochitest/tests/SimpleTest/TestRunner.js#529
Flags: needinfo?(gmierz2) → needinfo?(dteller)
Both of them forget to wait on the Promise, so they look like very possible culprits. Even if they're not, that's two bugs that need to be fixed :)
Flags: needinfo?(dteller) → needinfo?(gmierz2)
Excellent, I'll fix those and see how it goes. Thanks :yoric :)
Flags: needinfo?(gmierz2)
The linux64-jsdcov build has been disabled, and no longer runs in taskcluster, see bug 1496791.
Although the tooling to get this data still exists so this is still a large problem with relation to mochitest-plain tests so I am leaving this open.
See Also: → 1496791
You need to log in before you can comment on or make changes to this bug.