Сбой резьбы во время Boost :: Liting Inside Catch BlockC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Сбой резьбы во время Boost :: Liting Inside Catch Block

Сообщение Anonymous »

В настоящее время я исследую сценарий аварии, который вызван получением доходности усиления внутри блока C ++. Вот минимальный воспроизводимый пример, который приводит к сбою.
Обратите внимание на следующие точки: < /p>
  • Несколько потоков в thread_group необходимы для воспроизведения сбоя. < /li>
    2 Coroutine должен работать одновременно. li> Проблема воспроизводилась последовательно на платформах Mac/Win (Linux не был проверен).
  • При отладке сбой стек вызовов указывал на урожайность внутри блока улова.
    Я нашел этот старый форум, в котором упоминается аналогичная проблема, но объяснение мне неясно: https://lists.boost.org.cpp.al/boost-bugs/2016/ 02/44257.php
Вот отдельный пример воспроизведения. К сожалению, я не делал его короче, но вы можете просто запустить его, как это связано с повышением версии 1.86-1.83 < /p>
#include
#include
#include
#include

namespace asio = boost::asio;
using namespace std::chrono_literals;

void TimerCatchYield(asio::steady_timer& timer,
const asio::yield_context& yield) {
boost::system::error_code ec;
try {
throw std::runtime_error("");
} catch (const std::exception&) {
// async_wait(yield) here - causes crash
timer.async_wait(yield[ec]);
}
// async_wait(yield) here - works as expected
}

void coroutineA(asio::steady_timer& timer, const asio::yield_context& yield) {
std::cout

Подробнее здесь: https://stackoverflow.com/questions/794 ... atch-block
Ответить

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

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

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

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

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