[ https://issues.apache.org/jira/browse/SPARK-15822?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15325159#comment-15325159 ]
Pete Robbins commented on SPARK-15822: -------------------------------------- I am forcing a system dump when I detect a corrupt UTF8String is being created. This is using IBM JVM because I can analyse the dump and see the stacks and object contents using Eclipse Memory Analyzer. So... with whole stage codegen enabled we get a stack of: java.lang.Thread @ 0x835f9838 |- at com.ibm.jvm.Dump.SystemDumpImpl()I (Native Method) |- at com.ibm.jvm.Dump.SystemDump()V (Dump.java:139) |- at org.apache.spark.unsafe.types.UTF8String.<init>(Ljava/lang/Object;JI)V (UTF8String.java:125(Compiled Code)) |- at org.apache.spark.unsafe.types.UTF8String.fromAddress(Ljava/lang/Object;JI)Lorg/apache/spark/unsafe/types/UTF8String; (UTF8String.java:102(Compiled Code)) |- at org.apache.spark.sql.catalyst.expressions.UnsafeRow.getUTF8String(I)Lorg/apache/spark/unsafe/types/UTF8String; (UnsafeRow.java:414(Compiled Code)) |- at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIterator.sort_addToSorter$(Lorg/apache/spark/sql/catalyst/expressions/GeneratedClass$GeneratedIterator;)V (null) |- at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIterator.processNext()V (null) |- at org.apache.spark.sql.execution.BufferedRowIterator.hasNext()Z (BufferedRowIterator.java:43(Compiled Code)) |- at org.apache.spark.sql.execution.WholeStageCodegenExec$$anonfun$8$$anon$1.hasNext()Z (WholeStageCodegenExec.scala:361(Compiled Code)) |- at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIterator.findNextInnerJoinRows$(Lorg/apache/spark/sql/catalyst/expressions/GeneratedClass$GeneratedIterator;Lscala/collection/Iterator;Lscala/collection/Iterator;)Z (null) |- at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIterator.processNext()V (null) |- at org.apache.spark.sql.execution.BufferedRowIterator.hasNext()Z (BufferedRowIterator.java:43(Compiled Code)) |- at org.apache.spark.sql.execution.WholeStageCodegenExec$$anonfun$doExecute$2$$anon$2.hasNext()Z (WholeStageCodegenExec.scala:377) |- at scala.collection.Iterator$$anon$11.hasNext()Z (Iterator.scala:408(Compiled Code)) |- at scala.collection.convert.Wrappers$IteratorWrapper.hasNext()Z (Wrappers.scala:30) |- at org.spark_project.guava.collect.Ordering.leastOf(Ljava/util/Iterator;I)Ljava/util/List; (Ordering.java:628) |- at org.apache.spark.util.collection.Utils$.takeOrdered(Lscala/collection/Iterator;ILscala/math/Ordering;)Lscala/collection/Iterator; (Utils.scala:37) |- at org.apache.spark.rdd.RDD$$anonfun$takeOrdered$1$$anonfun$30.apply(Lscala/collection/Iterator;)Lscala/collection/Iterator; (RDD.scala:1365) |- at org.apache.spark.rdd.RDD$$anonfun$takeOrdered$1$$anonfun$30.apply(Ljava/lang/Object;)Ljava/lang/Object; (RDD.scala:1362) |- at org.apache.spark.rdd.RDD$$anonfun$mapPartitions$1$$anonfun$apply$23.apply(Lorg/apache/spark/TaskContext;ILscala/collection/Iterator;)Lscala/collection/Iterator; (RDD.scala:757) | |- at org.apache.spark.rdd.RDD$$anonfun$mapPartitions$1$$anonfun$apply$23.apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; (RDD.scala:757) | |- at org.apache.spark.rdd.MapPartitionsRDD.compute(Lorg/apache/spark/Partition;Lorg/apache/spark/TaskContext;)Lscala/collection/Iterator; (MapPartitionsRDD.scala:38) | |- at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(Lorg/apache/spark/Partition;Lorg/apache/spark/TaskContext;)Lscala/collection/Iterator; (RDD.scala:318) | |- at org.apache.spark.rdd.RDD.iterator(Lorg/apache/spark/Partition;Lorg/apache/spark/TaskContext;)Lscala/collection/Iterator; (RDD.scala:282) | |- at org.apache.spark.scheduler.ResultTask.runTask(Lorg/apache/spark/TaskContext;)Ljava/lang/Object; (ResultTask.scala:70) and disabled it still fails: java.lang.Thread @ 0x835ffd60 |- at com.ibm.jvm.Dump.SystemDumpImpl()I (Native Method) |- at com.ibm.jvm.Dump.SystemDump()V (Dump.java:139) |- at org.apache.spark.unsafe.types.UTF8String.<init>(Ljava/lang/Object;JI)V (UTF8String.java:125(Compiled Code)) |- at org.apache.spark.unsafe.types.UTF8String.fromAddress(Ljava/lang/Object;JI)Lorg/apache/spark/unsafe/types/UTF8String; (UTF8String.java:102(Compiled Code)) |- at org.apache.spark.sql.catalyst.expressions.UnsafeRow.getUTF8String(I)Lorg/apache/spark/unsafe/types/UTF8String; (UnsafeRow.java:414(Compiled Code)) |- at org.apache.spark.sql.catalyst.expressions.JoinedRow.getUTF8String(I)Lorg/apache/spark/unsafe/types/UTF8String; (JoinedRow.scala:102(Compiled Code)) |- at org.apache.spark.sql.catalyst.expressions.GeneratedClass$SpecificUnsafeProjection.apply(Lorg/apache/spark/sql/catalyst/InternalRow;)Lorg/apache/spark/sql/catalyst/expressions/UnsafeRow; (null) |- at org.apache.spark.sql.execution.aggregate.AggregationIterator$$anonfun$generateResultProjection$1.apply(Lorg/apache/spark/sql/catalyst/expressions/UnsafeRow;Lorg/apache/spark/sql/catalyst/expressions/MutableRow;)Lorg/apache/spark/sql/catalyst/expressions/UnsafeRow; (AggregationIterator.scala:231) |- at org.apache.spark.sql.execution.aggregate.AggregationIterator$$anonfun$generateResultProjection$1.apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; (AggregationIterator.scala:220) |- at org.apache.spark.sql.execution.aggregate.TungstenAggregationIterator.next()Lorg/apache/spark/sql/catalyst/expressions/UnsafeRow; (TungstenAggregationIterator.scala:392) |- at org.apache.spark.sql.execution.aggregate.TungstenAggregationIterator.next()Ljava/lang/Object; (TungstenAggregationIterator.scala:79) |- at org.apache.spark.sql.execution.UnsafeExternalRowSorter.sort(Lscala/collection/Iterator;)Lscala/collection/Iterator; (UnsafeExternalRowSorter.java:173) |- at org.apache.spark.sql.execution.SortExec$$anonfun$1.apply(Lscala/collection/Iterator;)Lscala/collection/Iterator; (SortExec.scala:100) |- at org.apache.spark.sql.execution.SortExec$$anonfun$1.apply(Ljava/lang/Object;)Ljava/lang/Object; (SortExec.scala:93) |- at org.apache.spark.rdd.RDD$$anonfun$mapPartitionsInternal$1$$anonfun$apply$24.apply(Lorg/apache/spark/TaskContext;ILscala/collection/Iterator;)Lscala/collection/Iterator; (RDD.scala:775) |- at org.apache.spark.rdd.RDD$$anonfun$mapPartitionsInternal$1$$anonfun$apply$24.apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; (RDD.scala:775) |- at org.apache.spark.rdd.MapPartitionsRDD.compute(Lorg/apache/spark/Partition;Lorg/apache/spark/TaskContext;)Lscala/collection/Iterator; (MapPartitionsRDD.scala:38) |- at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(Lorg/apache/spark/Partition;Lorg/apache/spark/TaskContext;)Lscala/collection/Iterator; (RDD.scala:318) |- at org.apache.spark.rdd.RDD.iterator(Lorg/apache/spark/Partition;Lorg/apache/spark/TaskContext;)Lscala/collection/Iterator; (RDD.scala:282) |- at org.apache.spark.rdd.ZippedPartitionsRDD2.compute(Lorg/apache/spark/Partition;Lorg/apache/spark/TaskContext;)Lscala/collection/Iterator; (ZippedPartitionsRDD.scala:89) |- at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(Lorg/apache/spark/Partition;Lorg/apache/spark/TaskContext;)Lscala/collection/Iterator; (RDD.scala:318) |- at org.apache.spark.rdd.RDD.iterator(Lorg/apache/spark/Partition;Lorg/apache/spark/TaskContext;)Lscala/collection/Iterator; (RDD.scala:282) |- at org.apache.spark.rdd.MapPartitionsRDD.compute(Lorg/apache/spark/Partition;Lorg/apache/spark/TaskContext;)Lscala/collection/Iterator; (MapPartitionsRDD.scala:38) |- at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(Lorg/apache/spark/Partition;Lorg/apache/spark/TaskContext;)Lscala/collection/Iterator; (RDD.scala:318) |- at org.apache.spark.rdd.RDD.iterator(Lorg/apache/spark/Partition;Lorg/apache/spark/TaskContext;)Lscala/collection/Iterator; (RDD.scala:282) > segmentation violation in o.a.s.unsafe.types.UTF8String > -------------------------------------------------------- > > Key: SPARK-15822 > URL: https://issues.apache.org/jira/browse/SPARK-15822 > Project: Spark > Issue Type: Bug > Affects Versions: 2.0.0 > Environment: linux amd64 > openjdk version "1.8.0_91" > OpenJDK Runtime Environment (build 1.8.0_91-b14) > OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode) > Reporter: Pete Robbins > Assignee: Herman van Hovell > Priority: Blocker > > Executors fail with segmentation violation while running application with > spark.memory.offHeap.enabled true > spark.memory.offHeap.size 512m > Also now reproduced with > spark.memory.offHeap.enabled false > {noformat} > # > # A fatal error has been detected by the Java Runtime Environment: > # > # SIGSEGV (0xb) at pc=0x00007f4559b4d4bd, pid=14182, tid=139935319750400 > # > # JRE version: OpenJDK Runtime Environment (8.0_91-b14) (build 1.8.0_91-b14) > # Java VM: OpenJDK 64-Bit Server VM (25.91-b14 mixed mode linux-amd64 > compressed oops) > # Problematic frame: > # J 4816 C2 > org.apache.spark.unsafe.types.UTF8String.compareTo(Lorg/apache/spark/unsafe/types/UTF8String;)I > (64 bytes) @ 0x00007f4559b4d4bd [0x00007f4559b4d460+0x5d] > {noformat} > We initially saw this on IBM java on PowerPC box but is recreatable on linux > with OpenJDK. On linux with IBM Java 8 we see a null pointer exception at the > same code point: > {noformat} > 16/06/08 11:14:58 ERROR Executor: Exception in task 1.0 in stage 5.0 (TID 48) > java.lang.NullPointerException > at > org.apache.spark.unsafe.types.UTF8String.compareTo(UTF8String.java:831) > at org.apache.spark.unsafe.types.UTF8String.compare(UTF8String.java:844) > at > org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIterator.findNextInnerJoinRows$(Unknown > Source) > at > org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIterator.processNext(Unknown > Source) > at > org.apache.spark.sql.execution.BufferedRowIterator.hasNext(BufferedRowIterator.java:43) > at > org.apache.spark.sql.execution.WholeStageCodegenExec$$anonfun$doExecute$2$$anon$2.hasNext(WholeStageCodegenExec.scala:377) > at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:408) > at > scala.collection.convert.Wrappers$IteratorWrapper.hasNext(Wrappers.scala:30) > at org.spark_project.guava.collect.Ordering.leastOf(Ordering.java:664) > at org.apache.spark.util.collection.Utils$.takeOrdered(Utils.scala:37) > at > org.apache.spark.rdd.RDD$$anonfun$takeOrdered$1$$anonfun$30.apply(RDD.scala:1365) > at > org.apache.spark.rdd.RDD$$anonfun$takeOrdered$1$$anonfun$30.apply(RDD.scala:1362) > at > org.apache.spark.rdd.RDD$$anonfun$mapPartitions$1$$anonfun$apply$23.apply(RDD.scala:757) > at > org.apache.spark.rdd.RDD$$anonfun$mapPartitions$1$$anonfun$apply$23.apply(RDD.scala:757) > at > org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38) > at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:318) > at org.apache.spark.rdd.RDD.iterator(RDD.scala:282) > at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:70) > at org.apache.spark.scheduler.Task.run(Task.scala:85) > at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:274) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1153) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) > at java.lang.Thread.run(Thread.java:785) > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org For additional commands, e-mail: issues-h...@spark.apache.org