add more information for larger data debug
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionListWritable.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionListWritable.java
index 11d0998..34fb0f6 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionListWritable.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionListWritable.java
@@ -132,6 +132,9 @@
     
     public static int getCountByDataLength(int length) {
         if (length % PositionWritable.LENGTH != 0) {
+            for (StackTraceElement ste : Thread.currentThread().getStackTrace()) {
+                System.out.println(ste);
+            }
             throw new IllegalArgumentException("Length of positionlist is invalid");
         }
         return length / PositionWritable.LENGTH;
diff --git a/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/MapReadToNodeOperator.java b/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/MapReadToNodeOperator.java
index e7f9ee2..cddbe4d 100644
--- a/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/MapReadToNodeOperator.java
+++ b/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/MapReadToNodeOperator.java
@@ -149,6 +149,9 @@
                 // minus 1 position of the incoming list to get the correct predecessor
                 for (PositionWritable pos : node.getIncomingList()) {
                     if (pos.getPosInRead() == 0) {
+                        for (StackTraceElement ste : Thread.currentThread().getStackTrace()) {
+                            System.out.println(ste);
+                        }
                         throw new IllegalArgumentException("The incoming position list contain invalid posInRead");
                     }
                     pos.set(pos.getReadID(), (byte) (pos.getPosInRead() - 1));
@@ -159,6 +162,9 @@
             offset += lengthPos;
             int lengthKmer = buffer.getInt(offset);
             if (node.getKmer().getLength() != lengthKmer) {
+                for (StackTraceElement ste : Thread.currentThread().getStackTrace()) {
+                    System.out.println(ste);
+                }
                 throw new IllegalStateException("Size of Kmer is invalid ");
             }
             setKmer(node.getKmer(), buffer.array(), offset + INT_LENGTH, isInitial);
diff --git a/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/aggregators/MergeReadIDAggregateFactory.java b/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/aggregators/MergeReadIDAggregateFactory.java
index f1ebdff..8c8c7fd 100644
--- a/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/aggregators/MergeReadIDAggregateFactory.java
+++ b/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/aggregators/MergeReadIDAggregateFactory.java
@@ -4,6 +4,8 @@
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
+import edu.uci.ics.genomix.data.KmerUtil;
+import edu.uci.ics.genomix.type.PositionListWritable;
 import edu.uci.ics.hyracks.api.comm.IFrameTupleAccessor;
 import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
 import edu.uci.ics.hyracks.api.dataflow.value.RecordDescriptor;
@@ -22,9 +24,11 @@
     private static final long serialVersionUID = 1L;
 
     private final int ValidPosCount;
+    private final int kmerLength;
 
     public MergeReadIDAggregateFactory(int readLength, int kmerLength) {
         ValidPosCount = getPositionCount(readLength, kmerLength);
+        this.kmerLength = kmerLength;
     }
 
     public static int getPositionCount(int readLength, int kmerLength) {
@@ -102,8 +106,14 @@
                     fieldOffset += BYTE_SIZE;
 
                     // read poslist
+                    int lengthPosList = fieldBuffer.getInt(fieldOffset);
+                    PositionListWritable.getCountByDataLength(lengthPosList);
                     fieldOffset += writeBytesToStorage(storages[posInRead], fieldBuffer, fieldOffset);
                     // read Kmer
+                    lengthPosList = fieldBuffer.getInt(fieldOffset);
+                    if (lengthPosList != KmerUtil.getByteNumFromK(kmerLength)){
+                        throw new IllegalStateException("Size of Kmer is invalid "); 
+                    }
                     fieldOffset += writeBytesToStorage(storages[posInRead], fieldBuffer, fieldOffset);
 
                     positionArray.count += 1;