|
56 | 56 | #if (RAY_COMMON_LOG_LEVEL > RAY_COMMON_FATAL)
|
57 | 57 | #define LOG_FATAL(M, ...)
|
58 | 58 | #elif defined(_EXECINFO_H) || !defined(_WIN32)
|
59 |
| -#define LOG_FATAL(M, ...) \ |
60 |
| - do { \ |
61 |
| - fprintf(stderr, "[FATAL] (%s:%d) " M "\n", __FILE__, __LINE__, \ |
62 |
| - ##__VA_ARGS__); \ |
63 |
| - void *buffer[255]; \ |
64 |
| - const int calls = backtrace(buffer, sizeof(buffer) / sizeof(void *)); \ |
65 |
| - backtrace_symbols_fd(buffer, calls, 1); \ |
66 |
| - exit(-1); \ |
| 59 | +#define LOG_FATAL(M, ...) \ |
| 60 | + do { \ |
| 61 | + fprintf(stderr, "[FATAL] (%s:%d: errno: %s) " M "\n", __FILE__, __LINE__, \ |
| 62 | + errno == 0 ? "None" : strerror(errno), ##__VA_ARGS__); \ |
| 63 | + void *buffer[255]; \ |
| 64 | + const int calls = backtrace(buffer, sizeof(buffer) / sizeof(void *)); \ |
| 65 | + backtrace_symbols_fd(buffer, calls, 1); \ |
| 66 | + exit(-1); \ |
67 | 67 | } while (0)
|
68 | 68 | #else
|
69 |
| -#define LOG_FATAL(M, ...) \ |
70 |
| - do { \ |
71 |
| - fprintf(stderr, "[FATAL] (%s:%d) " M "\n", __FILE__, __LINE__, \ |
72 |
| - ##__VA_ARGS__); \ |
73 |
| - exit(-1); \ |
| 69 | +#define LOG_FATAL(M, ...) \ |
| 70 | + do { \ |
| 71 | + fprintf(stderr, "[FATAL] (%s:%d: errno: %s) " M "\n", __FILE__, __LINE__, \ |
| 72 | + errno == 0 ? "None" : strerror(errno), ##__VA_ARGS__); \ |
| 73 | + exit(-1); \ |
74 | 74 | } while (0)
|
75 | 75 | #endif
|
76 | 76 |
|
|
0 commit comments