Improve error handling and fix minor bugs in bionic benchmarks.

Test: Unit tests.
Change-Id: I224ae4c7f195176eb8a87deddb2debcbf0f24ba3
diff --git a/benchmarks/string_benchmark.cpp b/benchmarks/string_benchmark.cpp
index 94e7583..eb04c93 100644
--- a/benchmarks/string_benchmark.cpp
+++ b/benchmarks/string_benchmark.cpp
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+#include <err.h>
 #include <stdint.h>
 #include <string.h>
 
@@ -263,7 +264,7 @@
 
   while (state.KeepRunning()) {
     if (strstr(haystack_aligned, needle_aligned) == nullptr) {
-      abort();
+      errx(1, "ERROR: strstr failed to find valid substring.");
     }
   }
 
@@ -277,10 +278,11 @@
 
   std::vector<char> haystack;
   char* haystack_aligned = GetAlignedPtrFilled(&haystack, haystack_alignment, nbytes, 'x');
+  haystack_aligned[nbytes-1] = '\0';
 
   while (state.KeepRunning()) {
     if (strchr(haystack_aligned, 'y') != nullptr) {
-      abort();
+      errx(1, "ERROR: strchr found a chr where it should have failed.");
     }
   }