Где __asan::ReportGenericError сохраняет свой отчет?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Где __asan::ReportGenericError сохраняет свой отчет?

Сообщение Anonymous »


Я получаю следующий отчет о сбое для моего демона запуска macOS, когда он завершает работу:

(сокращенная версия):

Процесс: MyService [30028] Путь: /Library/PrivilegedHelperTools/*/MyService Идентификатор: MyService Версия: ??? Тип кода: ARM-64 (родной) Родительский процесс: launchd [1] Идентификатор пользователя: 0 Дата/время: 2023-05-21 01:38:16.2607 +0300 Версия ОС: macOS 13.3.1 (22E772610a) Версия отчета: 12 Анонимный UUID: UUID сна/пробуждения: Время пробуждения с момента загрузки: 170 000 секунд. Время с момента пробуждения: 5497 секунд. Защита целостности системы: включена Сбой темы: 0 Очередь отправки: com.apple.main-thread Тип исключения: EXC_CRASH (SIGABRT) Коды исключений: 0x0000000000000000, 0x0000000000000000 Информация о приложении: прерывание() вызывается Поток 0 произошел сбой:: Очередь отправки: com.apple.main-thread 0 libsystem_kernel.dylib 0x18fb0c724 __pthread_kill + 8 1 libsystem_pthread.dylib 0x18fb43c28 pthread_kill + 288 2 libsystem_c.dylib 0x18fa51b74 __abort + 128 3 libsystem_c.dylib 0x18fa51af4 прерывание + 192 4 libclang_rt.asan_osx_dynamic.dylib 0x1049421bc __sanitizer::Abort() + 68 5 libclang_rt.asan_osx_dynamic.dylib 0x104941884 __sanitizer::Die() + 212 6 libclang_rt.asan_osx_dynamic.dylib 0x1049271c0 __asan::ScopedInErrorReport::~ScopedInErrorReport() + 1124 7 libclang_rt.asan_osx_dynamic.dylib 0x104926498 __asan::ReportGenericError(unsigned long, unsigned long, unsigned long, unsigned long, bool, unsigned long, unsigned int, bool) + 1436 8 libclang_rt.asan_osx_dynamic.dylib 0x1048fd558 printf_common(void*, char const*, char*) + 1400 9 libclang_rt.asan_osx_dynamic.dylib 0x1048fd980 Wrap_vsnprintf + 176 10 libclang_rt.asan_osx_dynamic.dylib 0x1048fe1b8 Wrap_snprintf + 84 11 MyService 0x104222ce4 P1Timer::_cancelEvents(char const*, char const*, unsigned long&) + 780 (P1Timer.h:696) 12 MyService 0x10417edfc P1Timer::stopP1Event() + 912 (P1Timer.h:151) 13 MyService 0x1041b1f64 MySvc::setOrRemoveP1Timer() + 368 (MySvc.cpp:8355) 14 MyService 0x1041b0ea0 OS_P1_STATE::_beginStopIdleState(bool) + 2132 (MySvc.cpp:5104) 15 MyService 0x1041815e8 OS_P1_STATE::restore_IdleState() + 756 (MySvc.cpp:5226) 16 MyService 0x1041e1544 OS_P1_STATE::~OS_P1_STATE() + 96 (OSSleepState.h:34) 17 MyService 0x10416129c OS_P1_STATE::~OS_P1_STATE() + 84 (OSSleepState.h:32) 18 MyService 0x104161908 MySvc::~MySvc() + 228 (MySvc.cpp:160) 19 MyService 0x104161a84 MySvc::~MySvc() + 84 (MySvc.cpp:156) 20 MyService 0x104289504 основной + 400 (main.cpp:48) 21 dyld 0x18f7ebf28 начало +2236 Я проверяю, что находится в строке P1Timer.h:696, и есть только этот вызов:

//const char* pstrBundleID //const char* pstrEventType std::string strDbgDesc; MyFormat(strDbgDesc, //P1Timer.h:696 "budleID=\"%s\", EventType=\"%s\"" , pstrBundleID ? pstrBundleID: "", пстревенттипе? pstrEventType: «»); pstrBundleID и pstrEventType получаются в результате такого вызова:

_cancelEvents(_strTmrBundleID.c_str(), NULL, szCnt); где _strTmrBundleID имеет тип std::string, который задается только в конструкторе.

И наконец:

std::string& MyFormat(std::string& str, const char *pFmt, ...) { va_list аргументы; va_start (аргументы, pFmt); int nchLen = vsnprintf(nullptr, 0, pFmt, args); str.resize(nchLen); vsnprintf(&str[0], nchLen + 1, pFmt, args); va_end (аргументы); вернуть ул; } Я пытаюсь понять, что могло вызвать этот сбой. А именно, куда сообщает __asan::ReportGenericError? Я хочу посмотреть, что именно ему не понравилось.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»