
Gregor
08.12.2017
13:54:07
короч, какую технику дебага применить для поиска такого
в многопоточном приложении конечно же

Square
08.12.2017
13:54:58
Ну ты ей память испортил. Чо.
Сохраняй стектрейсы, попробуй всякие анализаторы

Good
08.12.2017
13:55:07
если сорцов нет, то посмотреть дамп, можно еще приаттачиться к работающей службе дебагером и посмотреть где и что

Google

Square
08.12.2017
13:55:26
Код увидеть вариант?

Gregor
08.12.2017
14:02:02
Кода там тонна, но из-за разных длл он у меня только в релизе собирается, в этом и проблема

Antony
08.12.2017
14:02:25
А так: https://stackoverflow.com/questions/1261198/automatic-break-when-contents-of-a-memory-location-changes-or-is-read

Gregor
08.12.2017
14:02:53
Падает нечасто, но приблизительный сценарий получается иногда наиграть.

Square
08.12.2017
14:06:13

Gregor
08.12.2017
14:09:48

Square
08.12.2017
14:10:10

Gregor
08.12.2017
14:10:23
К тому крашится где-то внутри рантаймовой либы мсвц

Google

Square
08.12.2017
14:10:37
Ну это последствия

Gregor
08.12.2017
14:11:16
Я подозреваю какой-нибудь вызов чисто виртуальной функции из одной из сторонних библиотек, но не могу точно в этом быть уверен

Antony
08.12.2017
14:22:36
Похоже на доступ к полю структуры по нулевому указателю

Gregor
08.12.2017
14:23:27
чё-то скрин не хочет отправляться

Antony
08.12.2017
14:23:33
что-то наподобие
pair<int,string>* p = foo();
p->second;

Gregor
08.12.2017
14:23:34
тут запрещено?

Stanislav
08.12.2017
14:23:45
для всех новых пользователей запрещено по умолчанию

Gregor
08.12.2017
14:24:12
да я вроде не новый)

Stanislav
08.12.2017
14:24:42

Gregor
08.12.2017
14:24:56
в общем, нашёл дамп в дебрях каталогов)
попробовал его студией запустить
Unhandled exception at 0x70351eeb in WERCF76.tmp.mdmp: 0xC0000005: Access violation reading location 0x39393700.

Stanislav
08.12.2017
14:25:04
лучше текст на wandbox/ideon

Gregor
08.12.2017
14:25:32
pdb-шек нет, вот что плохо
коллстек тут дичайшего размера показывает, в нём почти все дллки из моего проекта заюзаны
если не все
вдвойне осложняется тем, что я этот проект плохо знаю, т.к. я его не писал и сел сразу на поддержку. некоторые файлы в нём датированы 98 годом)

Ilia
08.12.2017
14:29:40

Gregor
08.12.2017
14:30:08
он не хочет компилиться, потому что у меня нет дебажных версий сторонних либ

Google

Gregor
08.12.2017
14:30:33
мб я не знаю просто, как решить эту проблему, буду благодарен, если подскажете

Ilia
08.12.2017
14:30:38

Kitsu
08.12.2017
14:31:19

Ilia
08.12.2017
14:31:24

Kitsu
08.12.2017
14:31:44
если есть возможность контроллировать количество потоков, посмотри получается ли баг при 1 потоке

Gregor
08.12.2017
14:31:45

Ilia
08.12.2017
14:31:53
НУЖНО

Gregor
08.12.2017
14:32:21
проект написан так, что там масса классов наследуется от класса Thread, который в свою очередь — обёртка над CreateThread

Ilia
08.12.2017
14:32:37
Если ты соберёшь это в Debug, очень может быть , что ошибка испарится

Gregor
08.12.2017
14:33:00
ок, а потом просто подсунуть эти pdb туда, где лежат dll?

Ilia
08.12.2017
14:33:40

Gregor
08.12.2017
14:34:00
с радостью бы зареджектил эту багу с таким вердиктом)))

Ilia
08.12.2017
14:34:37

Gregor
08.12.2017
14:35:00
аттач к процессу, то что выше советовали?
он почему-то у меня не видит экзешник службы

Ilia
08.12.2017
14:35:12
Ну да но удалённому

Gregor
08.12.2017
14:35:19
студия из-под админа запущена

Google

Ilia
08.12.2017
14:35:51
Я думаю, тебе отдельно стоит поучиться только этому искусству , отлаживать удалённо.
Сделай маленкий проектик, и поотлаживай удалённо.

Gregor
08.12.2017
14:36:13
я не совсем понимаю термин "удалённо"
с другой машины?

Ilia
08.12.2017
14:36:22
как научишься-переходи на отладку сервиса

Gregor
08.12.2017
14:36:49
но у меня только одна рабочая))) стенда под этот проект нет

Ilia
08.12.2017
14:36:56
Но это не обязательно, можно наверное и локально этот сервеи запускать

Admin
ERROR: S client not available

Gregor
08.12.2017
14:36:56
виртуалку ставить нужно

Ilia
08.12.2017
14:37:19
Ну запускай рабочуу, вот это уже удалённо надо видимо делать
Но под отладкой

Gregor
08.12.2017
14:37:34

Ilia
08.12.2017
14:38:03
Ты проблему -то можешь воспроизводить? REPRO есть ?
Или в непонятный момент происходит?

Gregor
08.12.2017
14:38:16
сейчас пока попробую через дамп и pdb

Ilia
08.12.2017
14:39:21
Ну кстати если получишь хотя бы стек трейс, т.е. список вызовов фукнций по этому потоку, уже будет можно поглядеть на код и аналитически попробовать найти проблему

Gregor
08.12.2017
14:39:53
да, как раз этого и не хватает)
в целом проект не сверхсложный
просто немного запутанный

Google

Gregor
08.12.2017
14:40:30
и очень много потоков непонятно зачем наделано

Ilia
08.12.2017
14:42:23
А какую библиотечку для стектрейсов ты вставлять будешь?

Gregor
08.12.2017
14:44:33
не понял вопрос, если честно
есть какие-то логгеры стека?

Alexander
08.12.2017
14:46:36

Gregor
08.12.2017
14:47:26
воу
по-моему у меня даже где-то собранный под нужную студию буст лежит

Alexander
08.12.2017
14:49:49
да и собрать буст - дело получаса максимум

Gregor
08.12.2017
14:51:53

Maks
08.12.2017
15:31:15
Люди, а в плюсах вообще как с библиотеками для машинного обучения?

Vlad
08.12.2017
15:32:01
вообще хорошо
даже очень
вот наша - https://github.com/catboost/catboost
TensorFlow есть у гугла
у МС тоже что-то (забыл)

Maks
08.12.2017
15:34:00
Спасибо. Только первая почемуто только для Питона и Эрки

Gregor
08.12.2017
15:58:45
Коллеги всем спасибо
в дампе обнаружил проблему
это гонка
в одном из потоков передаётся ссылка на объект в другой поток, и в этом же потоке этот объект уничтожается