
Nik
26.06.2018
19:51:36

olologin
26.06.2018
19:52:14
что такое WER?

Nik
26.06.2018
19:52:51
Windows Error Reporting
ранее известный как watson

Google

olologin
26.06.2018
19:54:58
загуглил
у нас пользователи параноики, они майкрсофту не захотят ничего отсылать :)
не все но полно таких

Nik
26.06.2018
19:55:42
Дак винда сама отсылает. Если конечно файерволами не забито все наглухо

olologin
26.06.2018
19:56:15
ну нет, винда отсылает если есть unhandled exception
а у нас таких не бывает

Nik
26.06.2018
19:56:39
А вы дампы не только на крэши делаете?

olologin
26.06.2018
19:56:51
только на SEH эксепшены

Nik
26.06.2018
19:56:56
типа как "Save file"?

olologin
26.06.2018
19:56:58
типа acces violation

Nik
26.06.2018
19:57:14
Любой креш процесса улетит в wer
можно вместо wer поставить procdump и любой креш процесса будет складироваться в отдельную папочку на машине

olologin
26.06.2018
19:57:48
насколько я понимаю даже если ты seh эксепшен захендлишь - ничего никуда не полетит

Google

olologin
26.06.2018
19:58:17
да, я вот тоже думаю что вместо писания велосипеда можно посмотреть на procdump
сейчас почитал мануалы

Nik
26.06.2018
19:58:25
Если SEH обработан и не передан дальше по цепочке - это не креш. Ничего не будет сдамплено. Это верно

olologin
26.06.2018
19:58:32
фигово что его нельзя распространять со своим продуктом
но это такое

Nik
26.06.2018
19:58:50
есть веселый способ :)
https://live.sysinternals.com/procdump64.exe

olologin
26.06.2018
20:00:59
https://github.com/Arnavion/crashdump
О нашёл пример с процессом отдельным
Вообще замечаю что кастомеры у нас многие немного неадекватные
возможно для них будет трудно даже в консоли запустить procdump с нужными ключами
вот под линуксом кастомеры прямо крутые
но там программисты годные
багрепорты сразу шлют с дампами памяти
стектрейсами
и очень подробным описанием
если что-то дополнительно нужно сразу предоставляют, даже особо обьяснять не нужно что делать
продвинутые люди

Nik
26.06.2018
20:03:31

Google

Nik
26.06.2018
20:04:28
т.е. запускать procdump.exe можно прямо из сети и ничего дистрибьютить не нужно

olologin
26.06.2018
20:04:47
я не знал что так можно :)
а как винда относится к таким запускам? Не ругается что прямо из интернета экзешники запускают?

Nik
26.06.2018
20:06:12
Оно подписано МСом :)
При инсталляции можно дернуть \\live.sysinternals.com\tools\procdump64.exe -i (естественно под опцией, чтобы пользователь мог отменить)
А вообще полезно почитать https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/enabling-postmortem-debugging

Alexey
26.06.2018
20:39:52
Хм. А ведь std::function где-то в куче хранит закапчуренные переменные? То есть очередь из std::function'ов наверно не очень хорошая идея в плане производительности?

olologin
26.06.2018
20:40:29
ну я не думаю что синхронизация происходит при обращении к памяти
она происходит при выделении/освободдении памяти
т.к внутренняя структура которую и защищают этими синхронизациями меняется только при освобождении/выделении
по крайней мере я всё так понял

Крис
26.06.2018
20:47:27
volatile int a = 3;
std::cout « (a+a) « std::endl;
Не могу понять, почему это UB? Какое рациональное обьяснение?

Anatoly
26.06.2018
20:49:50
имеет смысл сравнивать сравнимое

Alexey
26.06.2018
20:51:52

Anatoly
26.06.2018
20:52:27
struct abstract_thing {virtual ~abstract_thing() = default; virtual void draw() = 0;}

Alexey
26.06.2018
20:53:13

Anatoly
26.06.2018
20:53:31

Alexey
26.06.2018
20:54:09
даа.. как бы синтаксически std::function будет более читабельно и скомпоновано в паре строчек кода. с ООП будет потяжелее.

Google

Alexey
26.06.2018
20:54:57
в плане эффективности наверно рулит std::variant + swith за счет того, что можно не дергать new (явно или неявно) на каждое сообщение.

Anatoly
26.06.2018
20:56:17

Alexey
26.06.2018
20:57:01
добавить еще один case в switch?

Anatoly
26.06.2018
20:57:14

Alexey
26.06.2018
20:57:42
да
и мне нужно видеть список всех возможных типов сообщений, компактно
то есть тут бы какой-нибудь алгебраический тип данных подошел бы, но в плюсах их нема
и жаль что switch нельзя сделать по варианту
нету паттерн матчинга адекватного ?

Anatoly
26.06.2018
21:01:04

Alexey
26.06.2018
21:01:32
а visit стукнет по рукам если я не все варианты варианта обработал? ?

Anatoly
26.06.2018
21:02:29
для неспециализированных типов
failsafe

Alexey
26.06.2018
21:03:25
ok. хотелось конечно проверки на этапе компиляции.. но ок
всегда можно тестами покрыть

Anatoly
26.06.2018
21:03:51

Alexey
26.06.2018
21:04:06
а если не все перечислю, ошибка компиляции будет?

Anatoly
26.06.2018
21:04:09
тогда получишь по рукам

Alexey
26.06.2018
21:04:44
гут. спасибо

Google

Крис
26.06.2018
21:30:51
volatile int a = 3;
std::cout « (a+a) « std::endl;
Не могу понять, почему это UB? Какое рациональное обьяснение?

olologin
26.06.2018
21:38:02

Крис
26.06.2018
21:38:24

Ignat
26.06.2018
21:38:45
А почему Вы спрашиваете?

Крис
26.06.2018
21:38:51
Знакомый задал вопрос, почему здесь неопределенное поведение, ничего в стандарте по этому поводу найти не могу
Академический интерес

olologin
26.06.2018
21:39:39
может только если a меняют в другом месте

Крис
26.06.2018
21:41:21
volatile int a = 3;
std::cout « a « std::endl;
уже не UB, как мне сказали
Что-то вроде подсказки, но все равно непонятно

Vladislav
26.06.2018
21:41:57
видимо речь о том, что порядок чтений в (a + a) не определен, но это не UB в смысле стандарта

olologin
26.06.2018
21:41:59
спроси этого академика меняют ли a в другом треде
в другом треде например

Крис
26.06.2018
21:42:17

olologin
26.06.2018
21:42:24
ну так и всё

Крис
26.06.2018
21:42:27
Не треде, откуда-то извне

olologin
26.06.2018
21:43:01
пока его меняют не ясно какое число прочитается
изменение то может быть побайтовым
изменение int'а не атомарно

Vladislav
26.06.2018
21:43:25
https://www.beningo.com/understanding-volatile-access-warnings/

Крис
26.06.2018
21:43:53