Сбой в std :: make_exception_ptr на AIXC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Сбой в std :: make_exception_ptr на AIX

Сообщение Anonymous »

После некоторого недавнего рефакторирования, чтобы заменить эквивалент std :: unique_ptr w/std :: exception_ptr , я вижу следующее сбое AIX (здание w/xlclang в режиме C ++ 11):

Код: Выделить всё

Segmentation fault in __cxa_end_catch at 0x900000000e3a9f8 ($t26)

0x900000000e3a9f8 (__cxa_end_catch+0x138) 88a30000            lbz   r5,0x0(r3)

Thread $t26

__cxa_end_catch() at 0x900000000e3a9f8
RazorChannel.std::exception_ptr std::make_exception_ptr(Simba::Support::ErrorException)() at 0x9000003abe659f0
RazorStatement.Simba::Client::ComplexRequestSink::OnCommunicationError(Simba::Network::Request const*)() at 0x9000003abe2d330
RazorChannel.std::__1::__split_buffer::__split_buffer(unsigned long, unsigned long, std::__1::allocator&).Simba::Network::Request::OnCommunicationError()() at 0x9000003abe6433c
RazorChannel.Simba::Client::RazorRequest::OnCommunicationError()() at 0x9000003abe64e24
RazorDispatcher.Simba::Network::ReadinessDispatcher::Run()() at 0x9000003abe873ac
RazorDispatcher.Simba::Network::ReadinessDispatcher::doRun(void*)() at 0x9000003abe6e504
< /code>
Как мне это интерпретировать? Я не вижу этой проблемы в Windows, Linux или Darwin, с эквивалентным кодом. 
кажется какой -то ошибкой компилятора/выполнения? P> РЕДАКТИРОВАТЬ: После некоторого рефакторирования для перемещения «проблемных» вызовов на std :: make_exception_ptr 
в статическую инициализацию, (постоянно) сборный тест начал следовать, но я также видел другой сбой (только иногда) в Приложение для тестирования (предыдущий аварий был в контексте общего Libray, который тестировал приложение), в следующем коде: < /p>

Код: Выделить всё

try
{
this->m_maxLength = StrToNumberType(
this->GetSimpleParameter(SBT_L("MaxLength")),
SBODBC_FILELINE);
}
catch (...)
{
this->m_maxLength = MAX_CHAR_BUFFER_LEN_DEFAULT;
}
и отладчик указывает, что он находится в __cxa_end_catch , вызывая из строки this-> m_maxlength = max_char_buffer_len_default;
Итак ... я предполагаю, что что -то в процессе развращается во время выполнения во время тестов, и в следующий раз, когда исключение будет выдвинуто/пойман, это вызывает аварию во время размахивания

Подробнее здесь: https://stackoverflow.com/questions/793 ... ptr-on-aix
Ответить

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

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

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

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

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