[ 
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

Reply via email to