Re: ASM 6.1-beta released
Kumar Srinivasan <[email protected]> Thu, 11 Jan 2018 06:41:25 -0800
| Newsgroups | gmane.comp.java.objectweb.asm |
|---|---|
| Organization | Java Software - Oracle Corporation |
| Message-ID | <[email protected]> |
Hello All, Thanks Hannes, for the quick analysis. Remi and co. it would be best if you hold off declaring victory on ASM 6.1 until the entire JDK testing is completed, will need more time, likely end of next week. Thanks Kumar > Hi all, > > It looks like this is a Nashorn bug exposed by ASM Type.getType(String) method having become stricter in what it accepts. > > We are passing an internal class name instead of a type descriptor to above method i.e. a string without leading ‚L' of the form „jdk/nashorn/internal/…“. > This was ok with the old version of ASM although it returned a method type, while now it correctly throws IllegalArgumentException. > > I’m filing a bug for Nashorn. > > Hannes > > >> Am 11.01.2018 um 02:41 schrieb Kumar Srinivasan <[email protected]>: >> >> Hi Eric, Remi, >> >> Heads-up. >> >> I think we have encountered another issue with nashorn. I definitely >> need Hannes help on this, I will work with himand file a bug. >> >> Thanks >> Kumar >> >> >>> Hi Eric, >>> >>> The patch below works, I am reasonably satisfied, go for integration. >>> I will look forward to pulling the changeset and have the CI system retest >>> everything in its entirety. >>> >>> Thanks for fixing this quickly!. >>> >>> Kumar >>> >>> >>> >>>> Hi, >>>> >>>> Thanks for your tests! I've been able to reproduce the issue by comparing the output of ASM 6 and 6.1 beta with COMPUTE_FRAMES on the JDK 8 classes. I found one issue which, one fixed, makes the two outputs identical. Let me know if it also fixes your issues. The fix is the following: >>>> >>>> diff --git a/asm/src/main/java/org/objectweb/asm/Frame.java b/asm/src/main/java/org/objectweb/asm/Frame.java >>>> index 8273b54..f2aaf39 100644 >>>> --- a/asm/src/main/java/org/objectweb/asm/Frame.java >>>> +++ b/asm/src/main/java/org/objectweb/asm/Frame.java >>>> @@ -648,7 +648,8 @@ >>>> if (abstractType == UNINITIALIZED_THIS) { >>>> return REFERENCE_KIND | symbolTable.addType(symbolTable.getClassName()); >>>> } else { >>>> - return REFERENCE_KIND | symbolTable.addType(symbolTable.getType(value).value); >>>> + return REFERENCE_KIND >>>> + | symbolTable.addType(symbolTable.getType(abstractType & VALUE_MASK).value); >>>> } >>>> } >>>> } >>>> >>>> >>>> Eric >>>> >>>> ----- Mail original ----- >>>> >>>>> De: "Kumar Srinivasan" <[email protected]> >>>>> >>>>> À: "Hannes Wallnöfer" >>>>> <[email protected]>, "Eric Bruneton" <[email protected]> >>>>> >>>>> Cc: "Evgeny Mandrikov" >>>>> <[email protected]>, "Remi Forax" <[email protected]>, "“[email protected]”" <[email protected]> >>>>> >>>>> Envoyé: Mardi 9 Janvier 2018 16:45:21 >>>>> Objet: Re: [asm] ASM 6.1-beta released >>>>> >>>>> Hi, >>>>> >>>>> Filed: >>>>> https://gitlab.ow2.org/asm/asm/issues/317808 >>>>> >>>>> >>>>> Kumar >>>>> >>>>> >>>>> >>>>>> Hi all, >>>>>> >>>>>> I’m looking at the new problem. >>>>>> >>>>>> Although many tests fail, it seems to be a single issue with an >>>>>> incorrect stack map in a post-processed class. I’ll let you know >>>>>> when I find out more. >>>>>> >>>>>> Hannes >>>>>> >>>>>> >>>>>>> Am 09.01.2018 um 02:34 schrieb Kumar Srinivasan >>>>>>> >>>>>>> <[email protected]> >>>>>>> : >>>>>>> >>>>>>> >>>>>>> Hi Remi, Evgeny, Eric, >>>>>>> >>>>>>> [ have included Hannes Wallnoefer, who is handling nashorn related >>>>>>> issues] >>>>>>> >>>>>>> Thanks that seems to fix the issue I was seeing with nasgen. >>>>>>> >>>>>>> However there are multiple failures most of them are nashorn >>>>>>> regresssions, >>>>>>> and relating to verification and stackmap frames, attached some >>>>>>> output, for >>>>>>> reference, I take it you want the class files ? If so I will try >>>>>>> to provide it tomorrow. >>>>>>> Please let me know if you need anything else. >>>>>>> >>>>>>> Thanks >>>>>>> Kumar >>>>>>> [testng] Exception in thread "main" java.lang.VerifyError: >>>>>>> Inconsistent stackmap frames at branch target 49 >>>>>>> [testng] Exception Details: >>>>>>> [testng] Location: >>>>>>> [testng] >>>>>>> jdk/nashorn/internal/objects/Global.newAccessorDescriptor(Ljava/lang/Object;Ljava/lang/Object;ZZ)Ljdk/nashorn/internal/runtime/PropertyDescriptor; >>>>>>> @49: aload_2 >>>>>>> [testng] Reason: >>>>>>> [testng] Type >>>>>>> 'jdk/nashorn/internal/objects/AccessorPropertyDescriptor' >>>>>>> (current frame, locals[5]) is not assignable to >>>>>>> 'jdk/nashorn/internal/objects/NativeRegExp' (stack map, >>>>>>> locals[5]) >>>>>>> [testng] Current Frame: >>>>>>> [testng] bci: @36 >>>>>>> [testng] flags: { } >>>>>>> [testng] locals: { 'jdk/nashorn/internal/objects/Global', >>>>>>> 'java/lang/Object', 'java/lang/Object', integer, integer, >>>>>>> 'jdk/nashorn/internal/objects/AccessorPropertyDescriptor' } >>>>>>> [testng] stack: { 'java/lang/Object' } >>>>>>> [testng] Stackmap Frame: >>>>>>> [testng] bci: @49 >>>>>>> [testng] flags: { } >>>>>>> [testng] locals: { 'jdk/nashorn/internal/objects/Global', >>>>>>> 'java/lang/Object', 'java/lang/Object', integer, integer, >>>>>>> 'jdk/nashorn/internal/objects/NativeRegExp' } >>>>>>> [testng] stack: { } >>>>>>> [testng] Bytecode: >>>>>>> [testng] 0000000: bb03 0359 1d15 042b c700 09b2 02ba a700 >>>>>>> [testng] 0000010: 042b 2cc7 0009 b202 baa7 0004 2c2a b703 >>>>>>> [testng] 0000020: 063a 052b c700 0d19 0513 0307 03b6 030b >>>>>>> [testng] 0000030: 572c c700 0d19 0513 030c 03b6 030b 5719 >>>>>>> [testng] 0000040: 05b0 >>>>>>> [testng] Stackmap Table: >>>>>>> [testng] >>>>>>> full_frame(@17,{Object[#2],Object[#708],Object[#708],Integer,Integer},{Uninitialized[#0],Uninitialized[#0],Integer,Integer}) >>>>>>> [testng] >>>>>>> full_frame(@18,{Object[#2],Object[#708],Object[#708],Integer,Integer},{Uninitialized[#0],Uninitialized[#0],Integer,Integer,Object[#708]}) >>>>>>> [testng] >>>>>>> full_frame(@28,{Object[#2],Object[#708],Object[#708],Integer,Integer},{Uninitialized[#0],Uninitialized[#0],Integer,Integer,Object[#708]}) >>>>>>> [testng] >>>>>>> full_frame(@29,{Object[#2],Object[#708],Object[#708],Integer,Integer},{Uninitialized[#0],Uninitialized[#0],Integer,Integer,Object[#708],Object[#708]}) >>>>>>> [testng] append_frame(@49,Object[#784]) >>>>>>> [testng] same_frame(@63) >>>>>>> [testng] >>>>>>> [testng] at >>>>>>> jdk.scripting.nashorn/jdk.nashorn.internal.runtime.Context.newGlobal(Context.java:1240) >>>>>>> [testng] at >>>>>>> jdk.scripting.nashorn/jdk.nashorn.internal.runtime.Context.createGlobal(Context.java:1231) >>>>>>> [testng] at >>>>>>> jdk.scripting.nashorn/jdk.nashorn.tools.Shell.run(Shell.java:171) >>>>>>> [testng] at >>>>>>> jdk.scripting.nashorn/jdk.nashorn.tools.Shell.main(Shell.java:150) >>>>>>> [testng] at >>>>>>> jdk.scripting.nashorn/jdk.nashorn.tools.Shell.main(Shell.java:126) >>>>>>> [testng] >>>>>>> >>>>>>> >>>>>>> >>>>>>>> Hi Kumar, >>>>>>>> >>>>>>>> FYI I reported >>>>>>>> https://gitlab.ow2.org/asm/asm/issues/317805 >>>>>>>> >>>>>>>> yesterday >>>>>>>> and to me seems that nashorn can be affected affected at least by >>>>>>>> this one as following: >>>>>>>> org.objectweb.asm.Type.getOpcode(Opcodes.IRETURN) >>>>>>>> is used by >>>>>>>> org.objectweb.asm.commons.InstructionAdapter#areturn >>>>>>>> which in his turn is used by >>>>>>>> jdk.nashorn.internal.runtime.linker.JavaAdapterBytecodeGenerator >>>>>>>> >>>>>>>> Hope this helps. >>>>>>>> >>>>>>>> Regards, >>>>>>>> Evgeny >>>>>>>> >>>>>>>> >>>>>>>> On Mon, Jan 8, 2018 at 7:24 PM Kumar Srinivasan >>>>>>>> >>>>>>>> <[email protected]> >>>>>>>> wrote: >>>>>>>> >>>>>>>> Hi Eric, >>>>>>>> >>>>>>>> We have encountered a regression in nasgen/nashorn, in our >>>>>>>> internal testing, >>>>>>>> will file ASM bug when we have more information. >>>>>>>> >>>>>>>> >>>>>>>> Kumar >>>>>>>> >>>>>>>> >>>>>>>>> The ASM 6.1-beta version has been released. >>>>>>>>> >>>>>>>>> Besides a new V10 constant for Java 10 class files, there are no >>>>>>>>> new features. However, internally, a lot of changes have been >>>>>>>>> made (see below; almost each line of code has changed). These >>>>>>>>> extensive changes may have introduced some regressions, so >>>>>>>>> please test this version thoroughly and report any bugs found, >>>>>>>>> before we release the 6.1 version. >>>>>>>>> >>>>>>>>> Release notes: >>>>>>>>> >>>>>>>>> - xml package deprecated >>>>>>>>> - project layout changed to Maven style >>>>>>>>> - build system changed from Ant to Gradle >>>>>>>>> - coding style changed to Google Java style >>>>>>>>> - code quality and readability improved a lot >>>>>>>>> - code quality tracked with SonarQube >>>>>>>>> ( >>>>>>>>> http://sonarqube.ow2.org/projects >>>>>>>>> ) >>>>>>>>> - performance improvements >>>>>>>>> - unit tests improved: migrated to JUnit 5, faster, coverage > >>>>>>>>> 95% >>>>>>>>> - benchmarks improved: now use JMH >>>>>>>>> ( >>>>>>>>> http://openjdk.java.net/projects/code-tools/jmh >>>>>>>>> ) >>>>>>>>> - new Gitlab Continuous Integration pipeline >>>>>>>>> - small bug fixes related to modules. See >>>>>>>>> * >>>>>>>>> https://gitlab.ow2.org/asm/asm/merge_requests/20/ >>>>>>>>> >>>>>>>>> * >>>>>>>>> https://gitlab.ow2.org/asm/asm/merge_requests/19/ >>>>>>>>> >>>>>>>>> - bug fixes: >>>>>>>>> * #317800: Resizing jump instruction adds invalid stack frame >>>>>>>>> to a class without frames >>>>>>>>> >>>>>>>>> Backward binary compatibility is preserved, but the behavior at >>>>>>>>> runtime has changed in a few areas: >>>>>>>>> - ACC_SYNTHETIC flag vs Synthetic attribute, see >>>>>>>>> >>>>>>>>> https://gitlab.ow2.org/asm/asm/merge_requests/17 >>>>>>>>> >>>>>>>>> - numbering of synthetic parameters: see >>>>>>>>> >>>>>>>>> https://gitlab.ow2.org/asm/asm/merge_requests/56 >>>>>>>>> >>>>>>>>> - StringBuffer no longer used in util (Printer.buf deprecated, >>>>>>>>> use stringBuilder instead) >>>>>>>>> >>>>>>>>> The ASM team >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> -- >>>>>>>> You receive this message as a subscriber of the >>>>>>>> [email protected] >>>>>>>> >>>>>>>> mailing list. >>>>>>>> To unsubscribe: >>>>>>>> mailto:[email protected] >>>>>>>> >>>>>>>> For general help: >>>>>>>> mailto:[email protected]?subject=help >>>>>>>> >>>>>>>> OW2 mailing lists service home page: >>>>>>>> http://www.ow2.org/wws >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>> >>> >>> -- You receive this message as a subscriber of the [email protected] mailing list. To unsubscribe: mailto:[email protected] For general help: mailto:[email protected]?subject=help OW2 mailing lists service home page: http://www.ow2.org/wws