Bug 143718 - [1.6][compiler] ClassFormatError : wrong stack map frame is used
Summary: [1.6][compiler] ClassFormatError : wrong stack map frame is used
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.2   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.2 RC7   Edit
Assignee: Olivier Thomann CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-05-25 10:20 EDT by Olivier Thomann CLA
Modified: 2006-06-02 15:44 EDT (History)
4 users (show)

See Also:


Attachments
Proposed fix (940 bytes, patch)
2006-05-25 10:23 EDT, Olivier Thomann CLA
no flags Details | Diff
Regression test (4.64 KB, patch)
2006-05-25 10:26 EDT, Olivier Thomann CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Olivier Thomann CLA 2006-05-25 10:20:59 EDT
Using latest, there is a case where the stack map frame type APPEND is used instead of a FULL FRAME type.
I will attach a test case.
Comment 1 Olivier Thomann CLA 2006-05-25 10:23:08 EDT
public class X {
	String s;
	
	X() {
        int i = 0;
        if (s == null) {
        	System.out.print("PASSED");
        } else {
        	System.out.print("FAILED");
        }
       	System.out.print("DONE" + i);
	}
    
    public static void main(String argv[]) {
    	new X();
    }
}

If this code is compiled in 1.6 mode, it compiles fine, but it failed at runtime with a class format error.
Comment 2 Olivier Thomann CLA 2006-05-25 10:23:52 EDT
Created attachment 42574 [details]
Proposed fix
Comment 3 Olivier Thomann CLA 2006-05-25 10:26:10 EDT
Created attachment 42575 [details]
Regression test
Comment 4 Olivier Thomann CLA 2006-05-25 10:27:27 EDT
I am surprised that this is not a verify error. The "format" of the .class file is fine. The error is a wrong type of frame. I believe a verify error would be more appropriate.
Comment 5 Philipe Mulet CLA 2006-05-29 06:28:24 EDT
Fix looks good. Proposing for RC7, as it is needed for 1.6 compliance testing (as reported by Steven Wasleski).

Steven - can you confirm that the proposed patch makes us pass ?
Comment 6 Philipe Mulet CLA 2006-05-29 12:29:36 EDT
The fix is trivial, and is mandated for true 1.6 compliance

Martin - pls cast your vote
Comment 7 Philipe Mulet CLA 2006-05-29 12:30:08 EDT
Dani - pls cast your vote
Comment 8 Philipe Mulet CLA 2006-05-29 12:30:29 EDT
Mike - pls cast your vote
Comment 9 Philipe Mulet CLA 2006-05-29 12:31:25 EDT
+1 for 3.2RC7
Comment 10 Mike Wilson CLA 2006-05-29 12:43:47 EDT
+1
Comment 11 Martin Aeschlimann CLA 2006-05-30 04:14:48 EDT
+1
Comment 12 Dani Megert CLA 2006-05-30 04:44:13 EDT
+1
Comment 13 Olivier Thomann CLA 2006-05-30 10:46:10 EDT
Fixed and released in HEAD.
Regression test added in org.eclipse.jdt.core.tests.compiler.regression.StackMapAttributeTest.test008
Comment 14 Olivier Thomann CLA 2006-05-30 10:46:43 EDT
In order to verify this, you should use a recent 1.6 drop (b84 can reproduce the original failure).
Comment 15 Olivier Thomann CLA 2006-06-02 15:44:42 EDT
Verified with I20060602-1317 for RC7.