diff --git a/src/backends/regex_debug.c b/src/backends/regex_debug.c
index 8b2ea31163504e59b89c365a26420c1ff48e4a7a..7319e3fd163c1df7fc9e73236dbc9ba6fd827015 100644
--- a/src/backends/regex_debug.c
+++ b/src/backends/regex_debug.c
@@ -15,13 +15,14 @@ char* getsym(void* addr) {
   if (dladdr(addr, &dli) != 0 && dli.dli_sname != NULL) {
     if (dli.dli_saddr == addr)
       return strdup(dli.dli_sname);
-    else
-      asprintf(&retstr, "%s+0x%lx", dli.dli_sname, addr - dli.dli_saddr);
+    else if (asprintf(&retstr, "%s+0x%lx", dli.dli_sname, addr - dli.dli_saddr) > 0)
+      return retstr;
   } else
 #endif
-    asprintf(&retstr, "%p", addr);
-
-  return retstr;
+    if (asprintf(&retstr, "%p", addr) > 0)
+      return retstr;
+    else
+      return NULL;
 }
 
 const char* rvm_op_names[RVM_OPCOUNT] = {