Closed Bug 819310 Opened 13 years ago Closed 13 years ago

Intermittent "talosError: 'Exception caught: java.lang.NullPointerException [browser_output.txt]'" in tcheckerboard at org.mozilla.fennec.FennecNativeDriver.stopCheckerboardRecording(FennecNativeDriver.java:226)

Categories

(Firefox for Android Graveyard :: General, defect)

ARM
Android
defect
Not set
critical

Tracking

(firefox19 fixed, firefox20 fixed)

RESOLVED FIXED
Firefox 20
Tracking Status
firefox19 --- fixed
firefox20 --- fixed

People

(Reporter: emorley, Assigned: cwiiis)

References

Details

(Keywords: crash, intermittent-failure, regression, Whiteboard: [native-crash])

Attachments

(1 file)

Android Tegra 250 mozilla-inbound talos remote-trobocheck on 2012-12-04 16:11:55 PST for push 7e8069286526 slave: tegra-316 https://tbpl.mozilla.org/php/getParsedLog.php?id=17608910&tree=Mozilla-Inbound { FIRE PROC: ' "MOZ_CRASHREPORTER_SHUTDOWN=1,MOZ_CRASHREPORTER_NO_REPORT=1,NO_EM_RESTART=1" am instrument -w -e deviceroot /mnt/sdcard/tests -e class org.mozilla.fennec.tests.testCheck org.mozilla.roboexample.test/org.mozilla.fennec.FennecInstrumentationTestRunner' getting files in '/mnt/sdcard/tests/profile/minidumps/' removing file: /mnt/sdcard/tests/browser_output.txt NOISE: Exception caught during test! NOISE: java.lang.NullPointerException NOISE: at org.mozilla.fennec.FennecNativeDriver.stopCheckerboardRecording(FennecNativeDriver.java:226) NOISE: at org.mozilla.fennec.tests.testCheck.testCheck(testCheck.java:51) NOISE: at java.lang.reflect.Method.invokeNative(Native Method) NOISE: at java.lang.reflect.Method.invoke(Method.java:521) NOISE: at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:204) NOISE: at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:194) NOISE: at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:186) NOISE: at org.mozilla.fennec.tests.BaseTest.runTest(BaseTest.java:120) NOISE: at junit.framework.TestCase.runBare(TestCase.java:127) NOISE: at junit.framework.TestResult$1.protect(TestResult.java:106) NOISE: at junit.framework.TestResult.runProtected(TestResult.java:124) NOISE: at junit.framework.TestResult.run(TestResult.java:109) NOISE: at junit.framework.TestCase.run(TestCase.java:118) NOISE: at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) NOISE: at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) NOISE: at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:520) NOISE: at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447) NOISE: __FAILException caught: java.lang.NullPointerException__FAIL FIRE PROC: ' "MOZ_CRASHREPORTER_SHUTDOWN=1,MOZ_CRASHREPORTER_NO_REPORT=1,NO_EM_RESTART=1" am instrument -w -e deviceroot /mnt/sdcard/tests -e class org.mozilla.fennec.tests.testCheck org.mozilla.roboexample.test/org.mozilla.fennec.FennecInstrumentationTestRunner' NOISE: Exception caught during test! NOISE: java.lang.NullPointerException NOISE: at org.mozilla.fennec.FennecNativeDriver.stopCheckerboardRecording(FennecNativeDriver.java:226) NOISE: at org.mozilla.fennec.tests.testCheck.testCheck(testCheck.java:51) NOISE: at java.lang.reflect.Method.invokeNative(Native Method) NOISE: at java.lang.reflect.Method.invoke(Method.java:521) NOISE: at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:204) NOISE: at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:194) NOISE: at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:186) NOISE: at org.mozilla.fennec.tests.BaseTest.runTest(BaseTest.java:120) NOISE: at junit.framework.TestCase.runBare(TestCase.java:127) NOISE: at junit.framework.TestResult$1.protect(TestResult.java:106) NOISE: at junit.framework.TestResult.runProtected(TestResult.java:124) NOISE: at junit.framework.TestResult.run(TestResult.java:109) NOISE: at junit.framework.TestCase.run(TestCase.java:118) NOISE: at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) NOISE: at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) NOISE: at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:520) NOISE: at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447) NOISE: __FAILException caught: java.lang.NullPointerException__FAIL NOISE: __startBeforeLaunchTimestamp1354667029354__endBeforeLaunchTimestamp NOISE: __startAfterTerminationTimestamp1354667096833__endAfterTerminationTimestamp getting files in '/mnt/sdcard/tests/profile/minidumps/' Failed tcheckerboard: Stopped Tue, 04 Dec 2012 16:24:58 Traceback (most recent call last): File "run_tests.py", line 261, in run_tests talos_results.add(mytest.runTest(browser_config, test)) File "/builds/tegra-316/talos-data/talos/ttest.py", line 387, in runTest test_results.add(browser_log_filename, counter_results=counter_results) File "/builds/tegra-316/talos-data/talos/results.py", line 120, in add browserLog = BrowserLogResults(filename=results, counter_results=counter_results, global_counters=self.global_counters) File "/builds/tegra-316/talos-data/talos/results.py", line 316, in __init__ self.error(match.group(1)) File "/builds/tegra-316/talos-data/talos/results.py", line 331, in error raise utils.talosError(message) talosError: 'Exception caught: java.lang.NullPointerException [browser_output.txt]' }
The only way I can see this happening intermittently is if the compositor thread is in the middle of recordCheckerboard() while the test thread calls stopCheckerboardRecording. Cwiiis, this is a regression from bug 814437. The obvious fix is to add synchronized blocks but since we want recordCheckerboard() to run as fast as possible maybe the better solution is to just take the min of mCheckerboardAmounts.size() and mFrameTimes.size() and return that number of items from stopCheckerboardAmounts(). Also it might be better to move the mRecordingCheckerboard = false line up to before the size comparison to narrow the window of opportunity where this occurs.
Blocks: 814437
Keywords: regression
(In reply to Kartikaya Gupta (:kats) from comment #1) > The only way I can see this happening intermittently is if the compositor > thread is in the middle of recordCheckerboard() while the test thread calls > stopCheckerboardRecording. > > Cwiiis, this is a regression from bug 814437. The obvious fix is to add > synchronized blocks but since we want recordCheckerboard() to run as fast as > possible maybe the better solution is to just take the min of > mCheckerboardAmounts.size() and mFrameTimes.size() and return that number of > items from stopCheckerboardAmounts(). Also it might be better to move the > mRecordingCheckerboard = false line up to before the size comparison to > narrow the window of opportunity where this occurs. Agreed on all accounts, patch incoming.
Status: NEW → ASSIGNED
QA Contact: chrislord.net
This makes it safe to call stopCheckerboardRecording while recordCheckerboard is executing. I also removed an extra unnecessary List get.
Attachment #689705 - Flags: review?(bugmail.mozilla)
Thank you for looking at this so quickly :-)
Comment on attachment 689705 [details] [diff] [review] Fix checkerboard stop recording race [Approval Request Comment] Bug caused by (feature/regressing bug #): Intermittent test failures User impact if declined: Will make sheriff's lives harder :) Testing completed (on m-c, etc.): Tested locally Risk to taking this patch (and alternatives if risky): Low risk String or UUID changes made by this patch: None Somehow kats' review got lost (conflict?) - I have the email with the r+ and IRC confirmation though, so just marking it as such. Also requesting for aurora, where this bug will exist since the low-precision tiles work merge.
Attachment #689705 - Flags: review?(bugmail.mozilla)
Attachment #689705 - Flags: review+
Attachment #689705 - Flags: approval-mozilla-aurora?
(In reply to Chris Lord [:cwiiis] from comment #6) > Somehow kats' review got lost (conflict?) - I have the email with the r+ and > IRC confirmation though, so just marking it as such. Yeah that was weird, apparently I closed my laptop while it was in the midst of submitting and so it didn't complete properly.
Assignee: nobody → chrislord.net
QA Contact: chrislord.net
Whiteboard: [native-crash]
Status: ASSIGNED → RESOLVED
Closed: 13 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 20
Comment on attachment 689705 [details] [diff] [review] Fix checkerboard stop recording race low risk, test fix, approving.
Attachment #689705 - Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
Product: Firefox for Android → Firefox for Android Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: