diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RAbstractVectorAccessFactory.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RAbstractVectorAccessFactory.java
index 3cb4647f517c898ced0c35480b2a3aae55dbd610..75555feaacc1047bfa8b2d649a89f6cc020fb1dc 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RAbstractVectorAccessFactory.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RAbstractVectorAccessFactory.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,12 +30,15 @@ import com.oracle.truffle.api.frame.VirtualFrame;
 import com.oracle.truffle.api.interop.ForeignAccess;
 import com.oracle.truffle.api.interop.ForeignAccess.Factory18;
 import com.oracle.truffle.api.interop.Message;
+import com.oracle.truffle.api.nodes.Node;
 import com.oracle.truffle.api.nodes.RootNode;
 import com.oracle.truffle.r.engine.TruffleRLanguage;
 import com.oracle.truffle.r.engine.interop.RAbstractVectorAccessFactoryFactory.VectorReadNodeGen;
 import com.oracle.truffle.r.nodes.access.vector.ElementAccessMode;
 import com.oracle.truffle.r.nodes.access.vector.ExtractVectorNode;
 import com.oracle.truffle.r.nodes.control.RLengthNode;
+import com.oracle.truffle.r.runtime.context.RContext;
+import com.oracle.truffle.r.runtime.context.RContext.RCloseable;
 import com.oracle.truffle.r.runtime.data.RLogical;
 import com.oracle.truffle.r.runtime.data.model.RAbstractVector;
 
@@ -60,6 +63,7 @@ public final class RAbstractVectorAccessFactory implements Factory18 {
         @CompilationFinal private boolean lengthAccess;
         @Child private ExtractVectorNode extract = ExtractVectorNode.create(ElementAccessMode.SUBSCRIPT, true);
         @Child private RLengthNode lengthNode = RLengthNode.create();
+        @Child private Node findContext = TruffleRLanguage.INSTANCE.actuallyCreateFindContextNode();
 
         VectorReadNode() {
             super(TruffleRLanguage.class, null, null);
@@ -67,10 +71,13 @@ public final class RAbstractVectorAccessFactory implements Factory18 {
         }
 
         @Override
+        @SuppressWarnings("try")
         public final Object execute(VirtualFrame frame) {
-            Object label = ForeignAccess.getArguments(frame).get(0);
-            Object receiver = ForeignAccess.getReceiver(frame);
-            return execute(frame, receiver, label);
+            try (RCloseable c = RContext.withinContext(TruffleRLanguage.INSTANCE.actuallyFindContext0(findContext))) {
+                Object label = ForeignAccess.getArguments(frame).get(0);
+                Object receiver = ForeignAccess.getReceiver(frame);
+                return execute(frame, receiver, label);
+            }
         }
 
         protected abstract Object execute(VirtualFrame frame, Object reciever, Object label);
diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RFunctionMR.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RFunctionMR.java
index 8001e760664966b084c5d2bf830e1bbef491ca2d..34a7bd310dabd9e0ccef0335f82a4b6cb000cff3 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RFunctionMR.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RFunctionMR.java
@@ -67,12 +67,10 @@ public class RFunctionMR {
 
             RArgsValuesAndNames actualArgs = new RArgsValuesAndNames(arguments, ArgumentsSignature.empty(arguments.length));
             try (RCloseable c = RContext.withinContext(TruffleRLanguage.INSTANCE.actuallyFindContext0(findContext))) {
-                try {
-                    dummyFrame.setObject(slot, actualArgs);
-                    return call.execute(dummyFrame, receiver);
-                } finally {
-                    dummyFrame.setObject(slot, null);
-                }
+                dummyFrame.setObject(slot, actualArgs);
+                return call.execute(dummyFrame, receiver);
+            } finally {
+                dummyFrame.setObject(slot, null);
             }
         }
     }
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/MemoryCopyTracer.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/MemoryCopyTracer.java
index ecba6aeb9d75ef8362287e2d6d3da379319ec767..7316b4b323d488808dbbb0f1a5bdda7a7114a2b4 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/MemoryCopyTracer.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/MemoryCopyTracer.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -27,7 +27,9 @@ import java.util.Deque;
 import java.util.concurrent.ConcurrentLinkedDeque;
 
 import com.oracle.truffle.api.Assumption;
+import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
 import com.oracle.truffle.api.Truffle;
+import com.oracle.truffle.r.runtime.context.RContext;
 import com.oracle.truffle.r.runtime.data.model.RAbstractVector;
 
 /**
@@ -71,10 +73,16 @@ public final class MemoryCopyTracer {
      * no-op.
      */
     public static void reportCopying(RAbstractVector source, RAbstractVector dest) {
+        assert RContext.getInstance() != null : "valid context needed whenever copying could be reported";
         if (!noMemoryCopyTracingAssumption.isValid() && enabled) {
-            for (Listener listener : listeners) {
-                listener.reportCopying(source, dest);
-            }
+            notifyListeners(source, dest);
+        }
+    }
+
+    @TruffleBoundary
+    private static void notifyListeners(RAbstractVector source, RAbstractVector dest) {
+        for (Listener listener : listeners) {
+            listener.reportCopying(source, dest);
         }
     }