Home | History | Annotate | Download | only in src
      1 // Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include <stdio.h>
      6 #include <stdlib.h>
      7 #include <string.h>
      8 #include <sys/types.h>
      9 #include <unistd.h>
     10 
     11 int recbomb(int n);
     12 void PrepareBelow(int argc, char *argv[]);
     13 extern int DefeatTailOptimizationForCrasher();
     14 int DefeatTailOptimizationForBomb() {
     15   return 0;
     16 }
     17 
     18 int main(int argc, char *argv[]) {
     19   PrepareBelow(argc, argv);
     20   return recbomb(16) + DefeatTailOptimizationForCrasher();
     21 }
     22 
     23 // Prepare for doing the crash, but do it below main so that main's
     24 // line numbers remain stable.
     25 void PrepareBelow(int argc, char *argv[]) {
     26   fprintf(stderr, "pid=%lld\n", static_cast<long long>(getpid()));
     27   fflush(stderr);
     28   if (argc == 2 && strcmp(argv[1], "--nocrash") == 0) {
     29     fprintf(stderr, "Doing normal exit\n");
     30     // Just exit with an error code if requested, to test that
     31     // CrashDumper cleanup does not cause troubles.
     32     exit(0);
     33   }
     34   fprintf(stderr, "Crashing as requested.\n");
     35 }
     36