All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
globaloc.cpp File Reference
#include <signal.h>
#include "allheaders.h"
#include "errcode.h"
#include "tprintf.h"

Go to the source code of this file.

Functions

void SavePixForCrash (int resolution, Pix *pix)
 
void signal_exit (int signal_code)
 
void err_exit ()
 
void set_global_loc_code (int loc_code)
 
void set_global_subloc_code (int loc_code)
 
void set_global_subsubloc_code (int loc_code)
 

Variables

const int kMaxNumThreadPixes = 32768
 
Pix * global_crash_pixes [kMaxNumThreadPixes]
 

Function Documentation

void err_exit ( )

Definition at line 74 of file globaloc.cpp.

74  {
75  ASSERT_HOST("Fatal error encountered!" == NULL);
76 }
#define ASSERT_HOST(x)
Definition: errcode.h:84
#define NULL
Definition: host.h:144
void SavePixForCrash ( int  resolution,
Pix *  pix 
)

Definition at line 34 of file globaloc.cpp.

34  {
35 #ifdef __linux__
36 #ifndef ANDROID
37  int thread_id = syscall(SYS_gettid) % kMaxNumThreadPixes;
38 #else
39  int thread_id = gettid() % kMaxNumThreadPixes;
40 #endif
41  pixDestroy(&global_crash_pixes[thread_id]);
42  if (pix != NULL) {
43  Pix* clone = pixClone(pix);
44  pixSetXRes(clone, resolution);
45  pixSetYRes(clone, resolution);
46  global_crash_pixes[thread_id] = clone;
47  }
48 #endif
49 }
const int kMaxNumThreadPixes
Definition: globaloc.cpp:30
Pix * global_crash_pixes[kMaxNumThreadPixes]
Definition: globaloc.cpp:32
#define NULL
Definition: host.h:144
void set_global_loc_code ( int  loc_code)

Definition at line 79 of file globaloc.cpp.

79  {
80  // global_loc_code = loc_code;
81 
82 }
void set_global_subloc_code ( int  loc_code)

Definition at line 85 of file globaloc.cpp.

85  {
86  // global_subloc_code = loc_code;
87 
88 }
void set_global_subsubloc_code ( int  loc_code)

Definition at line 91 of file globaloc.cpp.

91  {
92  // global_subsubloc_code = loc_code;
93 
94 }
void signal_exit ( int  signal_code)

Definition at line 52 of file globaloc.cpp.

52  {
53  tprintf("Received signal %d!\n", signal_code);
54 #ifdef __linux__
55 #ifndef ANDROID
56  int thread_id = syscall(SYS_gettid) % kMaxNumThreadPixes;
57 #else
58  int thread_id = gettid() % kMaxNumThreadPixes;
59 #endif
60  if (global_crash_pixes[thread_id] != NULL) {
61  fprintf(stderr, "Crash caused by image with resolution %d\n",
62  pixGetYRes(global_crash_pixes[thread_id]));
63  fprintf(stderr, "<Cut here>\n");
64  pixWriteStreamPng(stderr, global_crash_pixes[thread_id], 0.0);
65  fprintf(stderr, "\n<End cut>\n");
66  }
67  // Raise an uncaught signal, so as to get a useful stack trace.
68  raise(SIGILL);
69 #else
70  abort();
71 #endif
72 }
#define tprintf(...)
Definition: tprintf.h:31
const int kMaxNumThreadPixes
Definition: globaloc.cpp:30
Pix * global_crash_pixes[kMaxNumThreadPixes]
Definition: globaloc.cpp:32
#define NULL
Definition: host.h:144

Variable Documentation

Pix* global_crash_pixes[kMaxNumThreadPixes]

Definition at line 32 of file globaloc.cpp.

const int kMaxNumThreadPixes = 32768

Definition at line 30 of file globaloc.cpp.