[ 
https://issues.apache.org/jira/browse/FLEX-35096?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Skylar Sutton updated FLEX-35096:
---------------------------------
    Description: 
Since Apache Flex 4.10.x, developers have been required to add a VM argument to 
Eclipse, instructing the JVM to use legacy sorting logic as a workaround to an 
exception.

e.g.:
{quote}
-vmargs
#https://issues.apache.org/jira/browse/FLEX-33667
-Djava.util.Arrays.useLegacyMergeSort=true
{quote}

The workaround is not a permanent solution, and one is long overdue. The 
Comparable object in question, which does not comply with the comparison 
contract, should be updated accordingly. 

The exception in question is:
{quote}
java.lang.IllegalArgumentException: Comparison method violates its general 
contract!
        at java.util.TimSort.mergeHi(Unknown Source)
        at java.util.TimSort.mergeAt(Unknown Source)
        at java.util.TimSort.mergeCollapse(Unknown Source)
        at java.util.TimSort.sort(Unknown Source)
        at java.util.TimSort.sort(Unknown Source)
        at java.util.Arrays.sort(Unknown Source)
        at flex2.compiler.swc.SwcGroup.updateMaps(SwcGroup.java:281)
        at flex2.compiler.swc.SwcGroup.<init>(SwcGroup.java:67)
        at flex2.compiler.swc.SwcCache.getSwcGroup(SwcCache.java:109)
        at flex2.compiler.swc.SwcCache.getSwcGroup(SwcCache.java:91)
        at flex2.compiler.CompilerSwcContext.load(CompilerSwcContext.java:96)
        at flex2.tools.oem.Application.recompile(Application.java:1170)
        at flex2.tools.oem.Application.compile(Application.java:894)
        at 
flex2.tools.flexbuilder.BuilderApplication.compile(BuilderApplication.java:367)
        at 
com.adobe.flexbuilder.multisdk.compiler.internal.ASApplicationBuilder$MyBuilder.mybuild(ASApplicationBuilder.java:309)
        at 
com.adobe.flexbuilder.multisdk.compiler.internal.ASApplicationBuilder.build(ASApplicationBuilder.java:128)
        at 
com.adobe.flexbuilder.multisdk.compiler.internal.ASBuilder.build(ASBuilder.java:203)
        at 
com.adobe.flexbuilder.multisdk.compiler.internal.ASItemBuilder.build(ASItemBuilder.java:93)
        at 
com.adobe.flexbuilder.project.compiler.internal.FlexProjectBuilder.buildItem(FlexProjectBuilder.java:708)
        at 
com.adobe.flexbuilder.project.compiler.internal.FlexProjectBuilder.build(FlexProjectBuilder.java:412)
        at 
com.adobe.flexbuilder.project.compiler.internal.FlexIncrementalBuilder.build(FlexIncrementalBuilder.java:171)
        at 
org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:726)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at 
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199)
        at 
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239)
        at 
org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at 
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295)
        at 
org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351)
        at 
org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374)
        at 
org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143)
        at 
org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
{quote}

  was:
I create flex project, it work well first, when I clear the project,then occur 
error: Uncaught exception in compiler.  Error log detail:

java.lang.IllegalArgumentException: Comparison method violates its general 
contract!
        at java.util.TimSort.mergeHi(Unknown Source)
        at java.util.TimSort.mergeAt(Unknown Source)
        at java.util.TimSort.mergeCollapse(Unknown Source)
        at java.util.TimSort.sort(Unknown Source)
        at java.util.TimSort.sort(Unknown Source)
        at java.util.Arrays.sort(Unknown Source)
        at flex2.compiler.swc.SwcGroup.updateMaps(SwcGroup.java:281)
        at flex2.compiler.swc.SwcGroup.<init>(SwcGroup.java:67)
        at flex2.compiler.swc.SwcCache.getSwcGroup(SwcCache.java:109)
        at flex2.compiler.swc.SwcCache.getSwcGroup(SwcCache.java:91)
        at flex2.compiler.CompilerSwcContext.load(CompilerSwcContext.java:96)
        at flex2.tools.oem.Application.recompile(Application.java:1170)
        at flex2.tools.oem.Application.compile(Application.java:894)
        at 
flex2.tools.flexbuilder.BuilderApplication.compile(BuilderApplication.java:367)
        at 
com.adobe.flexbuilder.multisdk.compiler.internal.ASApplicationBuilder$MyBuilder.mybuild(ASApplicationBuilder.java:309)
        at 
com.adobe.flexbuilder.multisdk.compiler.internal.ASApplicationBuilder.build(ASApplicationBuilder.java:128)
        at 
com.adobe.flexbuilder.multisdk.compiler.internal.ASBuilder.build(ASBuilder.java:203)
        at 
com.adobe.flexbuilder.multisdk.compiler.internal.ASItemBuilder.build(ASItemBuilder.java:93)
        at 
com.adobe.flexbuilder.project.compiler.internal.FlexProjectBuilder.buildItem(FlexProjectBuilder.java:708)
        at 
com.adobe.flexbuilder.project.compiler.internal.FlexProjectBuilder.build(FlexProjectBuilder.java:412)
        at 
com.adobe.flexbuilder.project.compiler.internal.FlexIncrementalBuilder.build(FlexIncrementalBuilder.java:171)
        at 
org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:726)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at 
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199)
        at 
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239)
        at 
org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at 
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295)
        at 
org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351)
        at 
org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374)
        at 
org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143)
        at 
org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)





Updated summary to reflect that this is tracking the long term fix, not the 
short term workaround that the cloned JIRA tracks. 

> Correct comparison logic to comply with contract
> ------------------------------------------------
>
>                 Key: FLEX-35096
>                 URL: https://issues.apache.org/jira/browse/FLEX-35096
>             Project: Apache Flex
>          Issue Type: Bug
>          Components: .Unspecified - Compiler
>    Affects Versions: Apache Flex 4.10.0, Apache Flex 4.11.0, Apache Flex 
> 4.12.0, Apache Flex 4.13.0, Apache Flex 4.12.1, Apache Flex 4.14.0, Apache 
> Flex 4.15.0, Apache Flex 4.14.1
>         Environment: win7 64 + eclipse4.3 + flash builder 4.7 64 + apache 
> flex 4.10 + java 1.7(25)
>            Reporter: Skylar Sutton
>
> Since Apache Flex 4.10.x, developers have been required to add a VM argument 
> to Eclipse, instructing the JVM to use legacy sorting logic as a workaround 
> to an exception.
> e.g.:
> {quote}
> -vmargs
> #https://issues.apache.org/jira/browse/FLEX-33667
> -Djava.util.Arrays.useLegacyMergeSort=true
> {quote}
> The workaround is not a permanent solution, and one is long overdue. The 
> Comparable object in question, which does not comply with the comparison 
> contract, should be updated accordingly. 
> The exception in question is:
> {quote}
> java.lang.IllegalArgumentException: Comparison method violates its general 
> contract!
>       at java.util.TimSort.mergeHi(Unknown Source)
>       at java.util.TimSort.mergeAt(Unknown Source)
>       at java.util.TimSort.mergeCollapse(Unknown Source)
>       at java.util.TimSort.sort(Unknown Source)
>       at java.util.TimSort.sort(Unknown Source)
>       at java.util.Arrays.sort(Unknown Source)
>       at flex2.compiler.swc.SwcGroup.updateMaps(SwcGroup.java:281)
>       at flex2.compiler.swc.SwcGroup.<init>(SwcGroup.java:67)
>       at flex2.compiler.swc.SwcCache.getSwcGroup(SwcCache.java:109)
>       at flex2.compiler.swc.SwcCache.getSwcGroup(SwcCache.java:91)
>       at flex2.compiler.CompilerSwcContext.load(CompilerSwcContext.java:96)
>       at flex2.tools.oem.Application.recompile(Application.java:1170)
>       at flex2.tools.oem.Application.compile(Application.java:894)
>       at 
> flex2.tools.flexbuilder.BuilderApplication.compile(BuilderApplication.java:367)
>       at 
> com.adobe.flexbuilder.multisdk.compiler.internal.ASApplicationBuilder$MyBuilder.mybuild(ASApplicationBuilder.java:309)
>       at 
> com.adobe.flexbuilder.multisdk.compiler.internal.ASApplicationBuilder.build(ASApplicationBuilder.java:128)
>       at 
> com.adobe.flexbuilder.multisdk.compiler.internal.ASBuilder.build(ASBuilder.java:203)
>       at 
> com.adobe.flexbuilder.multisdk.compiler.internal.ASItemBuilder.build(ASItemBuilder.java:93)
>       at 
> com.adobe.flexbuilder.project.compiler.internal.FlexProjectBuilder.buildItem(FlexProjectBuilder.java:708)
>       at 
> com.adobe.flexbuilder.project.compiler.internal.FlexProjectBuilder.build(FlexProjectBuilder.java:412)
>       at 
> com.adobe.flexbuilder.project.compiler.internal.FlexIncrementalBuilder.build(FlexIncrementalBuilder.java:171)
>       at 
> org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:726)
>       at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
>       at 
> org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199)
>       at 
> org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239)
>       at 
> org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292)
>       at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
>       at 
> org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295)
>       at 
> org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351)
>       at 
> org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374)
>       at 
> org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143)
>       at 
> org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241)
>       at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
> {quote}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to