diff --git a/com.oracle.truffle.r.test.packages.analyzer/src/com/oracle/truffle/r/test/packages/analyzer/parser/LogFileParser.java b/com.oracle.truffle.r.test.packages.analyzer/src/com/oracle/truffle/r/test/packages/analyzer/parser/LogFileParser.java
index bc3d8810a570fa4edee155a745f8ba12b6bb73b9..e50d913587ac7212ab39ecae67a7d43fafb62b8b 100644
--- a/com.oracle.truffle.r.test.packages.analyzer/src/com/oracle/truffle/r/test/packages/analyzer/parser/LogFileParser.java
+++ b/com.oracle.truffle.r.test.packages.analyzer/src/com/oracle/truffle/r/test/packages/analyzer/parser/LogFileParser.java
@@ -60,6 +60,8 @@ public class LogFileParser {
 
     private static final Logger LOGGER = Logger.getLogger(LogFileParser.class.getName());
 
+    private static final long MAX_FILE_SIZE = 200 * 1024 * 1024;
+
     private RPackageTestRun pkg;
     private BufferedReader reader;
     private Line curLine;
@@ -95,28 +97,33 @@ public class LogFileParser {
     }
 
     public LogFile parseLogFile() throws IOException {
-        try (BufferedReader r = Files.newBufferedReader(logFile.path)) {
-            this.reader = r;
-            consumeLine();
+        long size = Files.size(logFile.path);
+        if (size <= MAX_FILE_SIZE) {
+            try (BufferedReader r = Files.newBufferedReader(logFile.path)) {
+                this.reader = r;
+                consumeLine();
 
-            Section installTest0 = parseInstallTest();
-            logFile.addSection(installTest0);
-            if (!installTest0.isSuccess()) {
-                return logFile;
-            }
-            Section installTest1 = parseInstallTest();
-            logFile.addSection(installTest1);
-            if (installTest1.isSuccess()) {
-                logFile.addSection(parseCheckResults());
+                Section installTest0 = parseInstallTest();
+                logFile.addSection(installTest0);
+                if (!installTest0.isSuccess()) {
+                    return logFile;
+                }
+                Section installTest1 = parseInstallTest();
+                logFile.addSection(installTest1);
+                if (installTest1.isSuccess()) {
+                    logFile.addSection(parseCheckResults());
+                }
+                TestResult overallResult = parseOverallStatus();
+                logFile.setSuccess(overallResult.toBoolean());
+
+                // In the end, a recursive diff is executed which might produce error messages.
+                collectBody();
+                expectEOF();
+            } finally {
+                this.reader = null;
             }
-            TestResult overallResult = parseOverallStatus();
-            logFile.setSuccess(overallResult.toBoolean());
-
-            // In the end, a recursive diff is executed which might produce error messages.
-            collectBody();
-            expectEOF();
-        } finally {
-            this.reader = null;
+        } else {
+            LOGGER.severe(String.format("Cannot analyze %s, file is too large (%d bytes, max=%d bytes)", logFile.path, size, MAX_FILE_SIZE));
         }
         return logFile;
     }