| Summary: | VerifyError: Inconsistent stackmap frames | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | [Eclipse Project] JDT | Reporter: | Daniel Mould <skyewire> | ||||||||
| Component: | Core | Assignee: | Jay Arthanareeswaran <jarthana> | ||||||||
| Status: | VERIFIED FIXED | QA Contact: | |||||||||
| Severity: | critical | ||||||||||
| Priority: | P3 | CC: | jarthana, manoj.palat, Olivier_Thomann, srikanth_sankaran, stephan.herrmann | ||||||||
| Version: | 3.8.1 | ||||||||||
| Target Milestone: | 3.8.2 | ||||||||||
| Hardware: | PC | ||||||||||
| OS: | Windows 7 | ||||||||||
| Whiteboard: | |||||||||||
| Attachments: |
|
||||||||||
The problem seems to come from the fact that the return false; statements shares the subroutines when there is an additional variable used to store the boxing value. I believe in this case, we don't want to share the subroutines. Doing so fixes this issue. Srikanth, there might be a clever way to do it, but I don't think this is worth the effort. Created attachment 223779 [details]
Proposed fix
Created attachment 223780 [details]
Regression test
Srikanth, if you approve the fix, I think it is a good candidate for backporting. The fix looks non-controversial to me. Jay, please take it forward please,TIA. Daniel, thanks for the test case. It was very helpful to fix it. Once this is realeased, could you please give it a try on your more complex code? (In reply to comment #6) > Daniel, thanks for the test case. It was very helpful to fix it. Once this > is realeased, could you please give it a try on your more complex code? Hi Olivier, sure, will do. All tests pass. Released in master and R3_8_maintenance. Thanks for the patch, Olivier! Verified for 4.3 M4 using build I20121210-2000. Leaving bug status at resolved for verification against 3.8.2. Verified for 4.2.2 M20130109-1200 |
Created attachment 223777 [details] Sample program to reproduce VerifyError If the attached program is compiled with Eclipse, running it results in the following error: Exception in thread "main" java.lang.VerifyError: Inconsistent stackmap frames at branch target 46 in method VerifyErrorTest.test()Ljava/lang/Boolean; at offset 2 I originally encountered the problem in some fairly complicated production code, and managed to narrow the problem down to the simple test case that is attached. Additional information: - The program runs fine if compiled with Oracle's javac. - The program runs fine if the return type of the method is changed from "Boolean" to "boolean". Environment: OS: Windows 7 64-bit Java: Oracle Java 1.7.0_09 32-bit Eclipse version: Juno SR1 JDT version: 3.8.1.v20120814-104540-8-8nFqpFNOfwKDRVz-tXOcL5d_83