diff --git a/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java b/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java
index df7c4411b24881b3358b7e4b8be0c1c92048432a..4a71766f3b2d3308f14ca7391326aba0dfd51d76 100644
--- a/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java
+++ b/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java
@@ -79,6 +79,10 @@ class TraceReconstructionBuffer {
 	}
 
 	public final Trace toTrace(final boolean valid) {
+		if (events.isEmpty()) {
+			return null;
+		}
+
 		final Stack<AbstractBeforeEventRecord> stack = new Stack<AbstractBeforeEventRecord>();
 		for (final AbstractEventRecord event : events) {
 			if (event instanceof AbstractBeforeEventRecord) {
diff --git a/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionFilter.java b/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionFilter.java
index 61fa7f05a0764f82dec3e1ed72ce1fc50b644343..d670c39f2424db3e2046925122251eea3fd2e832 100644
--- a/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionFilter.java
+++ b/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionFilter.java
@@ -44,7 +44,10 @@ public final class TraceReconstructionFilter extends AbstractFilter implements I
 				traceId2trace.remove(traceId);
 				traceBuffer.clear();
 				freeBufferCache.addLast(traceBuffer);
-				deliver(traceBuffer.toTrace(true));
+				final Trace trace = traceBuffer.toTrace(true);
+				if (trace != null) {
+					deliver(trace);
+				}
 			}
 		} else if (record instanceof Trace) {
 			final Trace trace = (Trace) record;
@@ -90,7 +93,10 @@ public final class TraceReconstructionFilter extends AbstractFilter implements I
 				traceBuffer.updateLastBufferInsert();
 
 				if ((timestamp - traceBuffer.getLastBufferInsert()) <= traceTimeout) {
-					deliver(traceBuffer.toTrace(false));
+					final Trace trace = traceBuffer.toTrace(false);
+					if (trace != null) {
+						deliver(trace);
+					}
 					traceIdsToRemove.add(entry.getKey());
 					traceBuffer.clear();
 					freeBufferCache.addLast(traceBuffer);
@@ -105,7 +111,10 @@ public final class TraceReconstructionFilter extends AbstractFilter implements I
 
 	private void terminate() {
 		for (final TraceReconstructionBuffer entry : traceId2trace.values()) {
-			deliver(entry.toTrace(false));
+			final Trace trace = entry.toTrace(false);
+			if (trace != null) {
+				deliver(trace);
+			}
 		}
 		traceId2trace.clear();
 	}