diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/RBuiltinPackages.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/RBuiltinPackages.java
index 3cbd00ed57c3e9eaf903e10f38d786feb529a321..2d774b7c73d36ab3feaafe8032a4ee7b639b35ee 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/RBuiltinPackages.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/RBuiltinPackages.java
@@ -33,6 +33,7 @@ import com.oracle.truffle.api.CompilerAsserts;
 import com.oracle.truffle.api.RootCallTarget;
 import com.oracle.truffle.api.Truffle;
 import com.oracle.truffle.api.frame.FrameDescriptor;
+import com.oracle.truffle.api.frame.FrameSlot;
 import com.oracle.truffle.api.frame.MaterializedFrame;
 import com.oracle.truffle.api.source.Source;
 import com.oracle.truffle.r.nodes.builtin.base.BasePackage;
@@ -116,6 +117,11 @@ public final class RBuiltinPackages implements RBuiltinLookup {
             } catch (ParseException e) {
                 throw new RInternalError(e, "error while parsing base source from %s", baseSource.getName());
             }
+            // forcibly clear last.warnings during startup:
+            FrameSlot slot = baseFrame.getFrameDescriptor().findFrameSlot("last.warning");
+            if (slot != null) {
+                FrameSlotChangeMonitor.setObject(baseFrame, slot, null);
+            }
         } finally {
             RContext.getInstance().setLoadingBase(false);
         }