diff --git a/apps/app_stack.c b/apps/app_stack.c
index 1a2523122b5d404fdfc1611eb8d585989ae0cfc0..d46f0481cb430f2fe8e9c1f8f0c72bdd717193c2 100644
--- a/apps/app_stack.c
+++ b/apps/app_stack.c
@@ -474,7 +474,12 @@ static int local_read(struct ast_channel *chan, const char *cmd, char *data, cha
 
 	oldlist = stack_store->data;
 	AST_LIST_LOCK(oldlist);
-	frame = AST_LIST_FIRST(oldlist);
+	if (!(frame = AST_LIST_FIRST(oldlist))) {
+		/* Not within a Gosub routine */
+		AST_LIST_UNLOCK(oldlist);
+		return -1;
+	}
+
 	AST_LIST_TRAVERSE(&frame->varshead, variables, entries) {
 		if (!strcmp(data, ast_var_name(variables))) {
 			const char *tmp;