[ https://issues.apache.org/jira/browse/SYSTEMML-2027?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Matthias Boehm closed SYSTEMML-2027. ------------------------------------ Resolution: Fixed Assignee: Matthias Boehm Fix Version/s: SystemML 1.0 > Perftest distributed codegen ops w/ intermittent task failures > -------------------------------------------------------------- > > Key: SYSTEMML-2027 > URL: https://issues.apache.org/jira/browse/SYSTEMML-2027 > Project: SystemML > Issue Type: Bug > Reporter: Matthias Boehm > Assignee: Matthias Boehm > Fix For: SystemML 1.0 > > > Various large-scale test scenarios of the perftest suite show intermittent > but non-reproducible janino codegen compilation issues which result in rare > task failures. Due to missing synchronization, concurrent tasks might try to > compile and load the same class with the same class name multiple times > leading to unwanted side effects. The solution is simple, synchronize the > class compilation at the executors, which ensures that the first thread > compiles a non-existing class and all subsequent threads and tasks simply > reuse this class accordingly. > Below is a list of various exceptions leading to the intermittent task > failures: > {code} > Caused by: org.codehaus.janino.JaninoRuntimeException: > codegen.TMP14.genexec(double[] a, int ai, SideInput[] b, double[] scalars, > double[] c, int len, int rix): Operand stack underrun at offset 91 > at org.codehaus.janino.CodeContext.flowAnalysis(CodeContext.java:501) > at org.codehaus.janino.CodeContext.flowAnalysis(CodeContext.java:541) > at org.codehaus.janino.CodeContext.flowAnalysis(CodeContext.java:313) > at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:2839) > at > org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1262) > at > org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1234) > at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:538) > at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:420) > at org.codehaus.janino.UnitCompiler.access$400(UnitCompiler.java:206) > at > org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:374) > at > org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:369) > at > org.codehaus.janino.Java$AbstractPackageMemberClassDeclaration.accept(Java.java:1309) > at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:369) > at org.codehaus.janino.UnitCompiler.compileUnit(UnitCompiler.java:345) > at > org.codehaus.janino.SimpleCompiler.compileToClassLoader(SimpleCompiler.java:396) > at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:205) > at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:196) > at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:91) > at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:84) > at > org.apache.sysml.runtime.codegen.CodegenUtils.compileClassJanino(CodegenUtils.java:174) > ... 19 more > {code} > {code} > Caused by: org.codehaus.commons.compiler.CompileException: Line 14, Column > 55: No applicable constructor/method found for actual parameters "double[], > java.lang.Object, int, int"; candidates are: "public static double[] > org.apache.sysml.runtime.codegen.LibSpoofPrimitives.vectMultWrite(double[], > double, int[], int, int, int)", "public static double[] > org.apache.sysml.runtime.codegen.LibSpoofPrimitives.vectMultWrite(double[], > double[], int, int, int)", "public static double[] > org.apache.sysml.runtime.codegen.LibSpoofPrimitives.vectMultWrite(double, > double[], int, int)", "public static double[] > org.apache.sysml.runtime.codegen.LibSpoofPrimitives.vectMultWrite(double[], > double, int, int)", "public static double[] > org.apache.sysml.runtime.codegen.LibSpoofPrimitives.vectMultWrite(double[], > double[], int, int[], int, int, int)", "public static double[] > org.apache.sysml.runtime.codegen.LibSpoofPrimitives.vectMultWrite(double[], > double[], int[], int, int, int, int)", "public static double[] > org.apache.sysml.runtime.codegen.LibSpoofPrimitives.vectMultWrite(double, > double[], int[], int, int, int)" > at > org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:11004) > at > org.codehaus.janino.UnitCompiler.findMostSpecificIInvocable(UnitCompiler.java:8307) > at org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.java:8169) > at org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.java:8071) > at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4421) > at org.codehaus.janino.UnitCompiler.access$7500(UnitCompiler.java:206) > at > org.codehaus.janino.UnitCompiler$12.visitMethodInvocation(UnitCompiler.java:3774) > at > org.codehaus.janino.UnitCompiler$12.visitMethodInvocation(UnitCompiler.java:3762) > at org.codehaus.janino.Java$MethodInvocation.accept(Java.java:4328) > at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:3762) > at > org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:4933) > at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2330) > at org.codehaus.janino.UnitCompiler.access$2600(UnitCompiler.java:206) > at > org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1386) > at > org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1370) > at > org.codehaus.janino.Java$LocalVariableDeclarationStatement.accept(Java.java:2974) > at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1370) > at > org.codehaus.janino.UnitCompiler.compileStatements(UnitCompiler.java:1450) > at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:2811) > at > org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1262) > at > org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1234) > at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:538) > at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:420) > at org.codehaus.janino.UnitCompiler.access$400(UnitCompiler.java:206) > at > org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:374) > at > org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:369) > at > org.codehaus.janino.Java$AbstractPackageMemberClassDeclaration.accept(Java.java:1309) > at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:369) > at org.codehaus.janino.UnitCompiler.compileUnit(UnitCompiler.java:345) > at > org.codehaus.janino.SimpleCompiler.compileToClassLoader(SimpleCompiler.java:396) > at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:205) > at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:196) > at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:91) > at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:84) > at > org.apache.sysml.runtime.codegen.CodegenUtils.compileClassJanino(CodegenUtils.java:174) > ... 19 more > {code} > {code} > Caused by: org.codehaus.commons.compiler.CompileException: Line 16, Column > 40: Binary numeric promotion not possible on types "java.lang.Object" and > "double" > at > org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:11004) > at > org.codehaus.janino.UnitCompiler.binaryNumericPromotionType(UnitCompiler.java:10237) > at org.codehaus.janino.UnitCompiler.getType2(UnitCompiler.java:6227) > at org.codehaus.janino.UnitCompiler.access$13800(UnitCompiler.java:206) > at > org.codehaus.janino.UnitCompiler$18.visitBinaryOperation(UnitCompiler.java:5675) > at > org.codehaus.janino.UnitCompiler$18.visitBinaryOperation(UnitCompiler.java:5660) > at org.codehaus.janino.Java$BinaryOperation.accept(Java.java:4155) > at org.codehaus.janino.Java$Rvalue.accept(Java.java:3532) > at org.codehaus.janino.UnitCompiler.getType(UnitCompiler.java:5660) > at > org.codehaus.janino.UnitCompiler.compileArithmeticOperation(UnitCompiler.java:6859) > at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4367) > at org.codehaus.janino.UnitCompiler.access$6900(UnitCompiler.java:206) > at > org.codehaus.janino.UnitCompiler$12.visitBinaryOperation(UnitCompiler.java:3768) > at > org.codehaus.janino.UnitCompiler$12.visitBinaryOperation(UnitCompiler.java:3762) > at org.codehaus.janino.Java$BinaryOperation.accept(Java.java:4155) > at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:3762) > at > org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:4933) > at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2330) > at org.codehaus.janino.UnitCompiler.access$2600(UnitCompiler.java:206) > at > org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1386) > at > org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1370) > at > org.codehaus.janino.Java$LocalVariableDeclarationStatement.accept(Java.java:2974) > at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1370) > at > org.codehaus.janino.UnitCompiler.compileStatements(UnitCompiler.java:1450) > at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:2811) > at > org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1262) > at > org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1234) > at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:538) > at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:420) > at org.codehaus.janino.UnitCompiler.access$400(UnitCompiler.java:206) > at > org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:374) > at > org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:369) > at > org.codehaus.janino.Java$AbstractPackageMemberClassDeclaration.accept(Java.java:1309) > at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:369) > at org.codehaus.janino.UnitCompiler.compileUnit(UnitCompiler.java:345) > at > org.codehaus.janino.SimpleCompiler.compileToClassLoader(SimpleCompiler.java:396) > at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:205) > at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:196) > at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:91) > at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:84) > at > org.apache.sysml.runtime.codegen.CodegenUtils.compileClassJanino(CodegenUtils.java:174) > ... 19 more > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)