| Summary: | The performance test JavaReplaceAllTest fails on Linux machine | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | [Eclipse Project] JDT | Reporter: | Deepak Azad <deepakazad> | ||||||||
| Component: | Text | Assignee: | Deepak Azad <deepakazad> | ||||||||
| Status: | RESOLVED FIXED | QA Contact: | |||||||||
| Severity: | normal | ||||||||||
| Priority: | P2 | CC: | daniel_megert | ||||||||
| Version: | 3.7 | ||||||||||
| Target Milestone: | 3.7 M6 | ||||||||||
| Hardware: | PC | ||||||||||
| OS: | Linux | ||||||||||
| Whiteboard: | |||||||||||
| Attachments: |
|
||||||||||
|
Description
Deepak Azad
Created attachment 188495 [details] debug code 1 I debugged a bit more and here is the console output for the attached debug code. Essentially the test gets stuck in SWTEventHelper.postEvent(Display, Event, boolean), right after calling "display.post(event)" (though this call succeeds and returns true) The javadoc for display.post(event) says - "Note that this operation can fail when the operating system fails to generate the event for any reason. For example, this can happen when there is no such key or mouse button or when the system event queue is full". Plus if I fiddle with the UI (to look at the console output, try to take a thread dump, or even just bring focus to the main eclipse workbench) the test becomes unstuck and I get the exception from comment 0 - at least this confirms that the test getting stuck and the exception are the same problem. Console output ----------------------------------------------------------------------------- waitForCondition 1 waitForCondition 2 waitForCondition 3- about to drive event queue waitForCondition 4- driven event queue waitForCondition 5 waitForCondition 1 waitForCondition 2 waitForCondition 3- about to drive event queue waitForCondition 4- driven event queue waitForCondition 5 waitForCondition 1 waitForCondition 2 waitForCondition 3- about to drive event queue waitForCondition 4- driven event queue waitForCondition 5 waitForCondition 6 STARTING WAITER about to sleep display SLEEP about to sleep display SLEEP about to sleep display SLEEP about to sleep display SLEEP about to sleep display SLEEP about to sleep display SLEEP about to sleep display SLEEP about to sleep display SLEEP about to sleep display SLEEP WOKEN UP RUNS = 3 0 run find: e key down posting event ABOUT TO WAIT FOR CONDITION waitForCondition 1 post condition : true key up posting event ABOUT TO WAIT FOR CONDITION waitForCondition 1 post condition : true Tab posting event ABOUT TO WAIT FOR CONDITION waitForCondition 1 post condition : true posting event ABOUT TO WAIT FOR CONDITION waitForCondition 1 post condition : true replace: x key down posting event ABOUT TO WAIT FOR CONDITION waitForCondition 1 post condition : true key up posting event ABOUT TO WAIT FOR CONDITION waitForCondition 1 post condition : true replace all via mnemonic - keydown posting event ABOUT TO WAIT FOR CONDITION waitForCondition 1 post condition : true replace all via mnemonic - the key key down posting event ABOUT TO WAIT FOR CONDITION waitForCondition 1 post condition : true key up posting event ABOUT TO WAIT FOR CONDITION waitForCondition 1 post condition : true replace all via mnemonic - keyup posting event ABOUT TO WAIT FOR CONDITION waitForCondition 1 post condition : true close the dialog. posting event ABOUT TO WAIT FOR CONDITION waitForCondition 1 post condition : true posting event ABOUT TO WAIT FOR CONDITION waitForCondition 1 post condition : true waiting for condition waitForCondition 1 condition() : true stopping performance meter reverting editor join background activities waitForCondition 1 waitForCondition 2 waitForCondition 3- about to drive event queue waitForCondition 4- driven event queue waitForCondition 5 waitForCondition 1 waitForCondition 2 waitForCondition 3- about to drive event queue waitForCondition 4- driven event queue waitForCondition 5 waitForCondition 6 STARTING WAITER about to sleep display SLEEP about to sleep display SLEEP about to sleep display SLEEP about to sleep display SLEEP about to sleep display SLEEP about to sleep display SLEEP WOKEN UP 1 run find: e key down posting event ABOUT TO WAIT FOR CONDITION waitForCondition 1 post condition : true key up posting event ABOUT TO WAIT FOR CONDITION waitForCondition 1 post condition : true Tab posting event ABOUT TO WAIT FOR CONDITION waitForCondition 1 post condition : true posting event ABOUT TO WAIT FOR CONDITION waitForCondition 1 post condition : true replace: x key down posting event ABOUT TO WAIT FOR CONDITION waitForCondition 1 post condition : true key up posting event ABOUT TO WAIT FOR CONDITION waitForCondition 1 post condition : true replace all via mnemonic - keydown posting event ABOUT TO WAIT FOR CONDITION waitForCondition 1 post condition : true replace all via mnemonic - the key key down posting event ABOUT TO WAIT FOR CONDITION waitForCondition 1 post condition : true ----------------------------------------------------------------------------- Created attachment 188882 [details]
proposed fix
Same reasons as Bug 330353 comment 9. Fixed in HEAD. Performance numbers are not affected *Without fix* Scenario 'org.eclipse.jdt.text.tests.performance.JavaReplaceAllTest#test()' (average over 3 samples): Used Java Heap: -5.43M (95% in [-41.84M, 30.97M]) Measurable effect: 33.85M (2.3 SDs) (required sample size for an effect of 5% of stdev: 6400) Working Set: 9.36M (95% in [-12.17M, 30.89M]) Measurable effect: 20.02M (2.3 SDs) (required sample size for an effect of 5% of mean: 5485) Committed: 6.94M (95% in [-19.84M, 33.72M]) Measurable effect: 24.9M (2.3 SDs) (required sample size for an effect of 5% of stdev: 6400) Working Set Peak: 7.8M (95% in [-13.58M, 29.17M]) Measurable effect: 19.87M (2.3 SDs) (required sample size for an effect of 5% of stdev: 6401) Elapsed Process: 781ms (95% in [714ms, 847ms]) Measurable effect: 62ms (2.3 SDs) (required sample size for an effect of 5% of mean: 8) Kernel time: 52ms (95% in [-29ms, 133ms]) Measurable effect: 76ms (2.3 SDs) (required sample size for an effect of 5% of mean: 2564) Page Faults: 2.61K (95% in [-3.24K, 8.46K]) Measurable effect: 5.44K (2.3 SDs) (required sample size for an effect of 5% of mean: 5223) CPU Time: 911ms (95% in [816ms, 1.01s]) Measurable effect: 88ms (2.3 SDs) (required sample size for an effect of 5% of mean: 12) GDI Objects: -9 (95% in [-9, -9]) *With fix* Scenario 'org.eclipse.jdt.text.tests.performance.JavaReplaceAllTest#test()' (average over 3 samples): Used Java Heap: -3.51M (95% in [-14.96M, 7.93M]) Measurable effect: 10.64M (2.3 SDs) (required sample size for an effect of 5% of stdev: 6401) Working Set: 1.46M (95% in [-5.46M, 8.39M]) Measurable effect: 6.44M (2.3 SDs) (required sample size for an effect of 5% of stdev: 6401) Committed: 1.78M (95% in [-15.89M, 19.45M]) Measurable effect: 16.43M (2.3 SDs) (required sample size for an effect of 5% of stdev: 6400) Working Set Peak: 494.67K (95% in [-1.6M, 2.56M]) Measurable effect: 1.93M (2.3 SDs) (required sample size for an effect of 5% of stdev: 6400) Elapsed Process: 791ms (95% in [769ms, 813ms]) Measurable effect: 20ms (2.3 SDs) Kernel time: 52ms (95% in [30ms, 73ms]) Measurable effect: 20ms (2.3 SDs) (required sample size for an effect of 5% of mean: 178) Page Faults: 655 (95% in [-2.02K, 3.34K]) Measurable effect: 2.49K (2.3 SDs) (required sample size for an effect of 5% of stdev: 6400) CPU Time: 901ms (95% in [843ms, 959ms]) Measurable effect: 53ms (2.3 SDs) (required sample size for an effect of 5% of mean: 5) GDI Objects: -9 (95% in [-9, -9]) . Fix backported to 'perf_36x' and released. |