diff --git a/lib/c/labcomm_decoder.c b/lib/c/labcomm_decoder.c
index 0447ae5a4485643e4a46a93b308e4141741544d3..0de42d3d1be477be7ee46bd60788c853a2b2c512 100644
--- a/lib/c/labcomm_decoder.c
+++ b/lib/c/labcomm_decoder.c
@@ -202,9 +202,8 @@ static int decode_typedef_or_sample(struct labcomm_decoder *d, int kind)
 		     LABCOMM_IOCTL_WRITER_GET_BYTES_WRITTEN,
 		     &signature.size);
   if (err < 0) {
-	printf("Failed to get size: %s\n", strerror(-err));
-    /* labcomm_error_fatal_global(LABCOMM_ERROR_BAD_WRITER, */
-    /* 			  "Failed to get size: %s\n", strerror(-err)); */
+    d->on_error(LABCOMM_ERROR_BAD_WRITER, 2,
+		"Failed to get size: %s\n", strerror(-err));
     result = -ENOENT;
     goto free_signature_name;
   }
@@ -212,9 +211,8 @@ static int decode_typedef_or_sample(struct labcomm_decoder *d, int kind)
 		     LABCOMM_IOCTL_WRITER_GET_BYTE_POINTER,
 		     &signature.signature);
   if (err < 0) {
-    printf("Failed to get pointer: %s\n", strerror(-err));
-    /* labcomm_error_fatal_global(LABCOMM_ERROR_BAD_WRITER, */
-    /* 			  "Failed to get pointer: %s\n", strerror(-err)); */
+    d->on_error(LABCOMM_ERROR_BAD_WRITER, 2,
+		"Failed to get pointer: %s\n", strerror(-err));
     result = -ENOENT;
     goto free_signature_name;
   }
diff --git a/lib/c/labcomm_error.c b/lib/c/labcomm_error.c
index 9cae3e73508b1c4b14d2dc94bc766e75501bd28b..278c5f3549f4df229bba97cde7fa08bd89e12ea3 100644
--- a/lib/c/labcomm_error.c
+++ b/lib/c/labcomm_error.c
@@ -27,6 +27,6 @@ void labcomm_error_fatal_global(enum labcomm_error error,
 				char *format,
 				...)
 {
-  printf("Fatal error %d\n", error);
+  fprintf(stderr, "Fatal error %d\n", error);
   exit(1);
 }