Re[10]: Исключение в другом потоке
От: T4r4sB Россия  
Дата: 20.08.25 12:38
Оценка:
Здравствуйте, so5team, Вы писали:

S>Возможно, вы пользуетесь какой-то сторонней либой, которая берет на себя выдачу подобных стек-трейсов. Если это так, то вопросы нужно задавать по этой либе.


Я в первом же сообщении написал что использую llvm и при старте программы ставлю на обработчик сигналов выдачу трассы (там сразу готовая функция есть на это)
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Re[11]: Исключение в другом потоке
От: so5team https://stiffstream.com
Дата: 20.08.25 12:45
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>Я в первом же сообщении написал что использую llvm и при старте программы ставлю на обработчик сигналов выдачу трассы (там сразу готовая функция есть на это)


Сорри, я не понял, что под "фреймворком" подразумевался LLVM. Виноват, был невнимателен.

Может быть можно сравнить что изменилось в новых реализациях stdlib и LLVM по сравнению со старыми? Т.е. если std::async сейчас ведет себя по новому, то можно глянуть как он вел себя раньше. А уже исходя из этой разницы искать решение.
Re[12]: Исключение в другом потоке
От: T4r4sB Россия  
Дата: 20.08.25 15:24
Оценка:
Здравствуйте, so5team, Вы писали:

S>Может быть можно сравнить что изменилось в новых реализациях stdlib и LLVM по сравнению со старыми? Т.е. если std::async сейчас ведет себя по новому, то можно глянуть как он вел себя раньше. А уже исходя из этой разницы искать решение.


Вот откатываться на прошлые версии не хотелось бы: сборка занимает пол дня
Подозреваю что llvm::ThreadPool раньше использовал std::thread, а в новой версии std::async
Велосипедить свой тредпул — это насколько адекватно?
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Re[13]: Исключение в другом потоке
От: so5team https://stiffstream.com
Дата: 20.08.25 16:28
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>Вот откатываться на прошлые версии не хотелось бы: сборка занимает пол дня


Я не про откат говорил, а про то, чтобы сравнить и уже потом искать пути решения.

TB>Подозреваю что llvm::ThreadPool раньше использовал std::thread, а в новой версии std::async


Вроде бы так оно и есть.
Подозреваю, что раньше llvm::ThreadPool сам мандрячил комбинацию из Promise/Future и сам с ними колупался.

Теперь же он формирует Task посредством std::async. И, полагаю, уже в потрохах этого таска идет обработка выброшенного исключения.

TB>Велосипедить свой тредпул — это насколько адекватно?


Можно тупо клонировать имеющийся llvm::ThreadPool, но в клонированном интерфейсе ThreadPoolInterface заменить реализацию asyncImpl.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.