diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/ConditionFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/ConditionFunctions.java
index 1f8bda07e41d5cdd96cf3d8a5afe52ad97307196..11cd9e372a10f85a97942c1217b7f3bc8540f890 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/ConditionFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/ConditionFunctions.java
@@ -177,8 +177,15 @@ public class ConditionFunctions {
         }
 
         @Specialization
-        protected RNull signalCondition(RList condition, RAbstractStringVector msg, Object call) {
-            RErrorHandling.signalCondition(condition, msg.getDataAt(0), call);
+        protected RNull signalCondition(RList condition, Object msg, Object call) {
+            String msgStr = "";
+            if (msg instanceof RAbstractStringVector) {
+                RAbstractStringVector msgVec = (RAbstractStringVector) msg;
+                if (msgVec.getLength() > 0) {
+                    msgStr = ((RAbstractStringVector) msg).getDataAt(0);
+                }
+            }
+            RErrorHandling.signalCondition(condition, msgStr, call);
             return RNull.instance;
         }
     }