Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
08.05.2015, 12:46
|
|||
|---|---|---|---|
|
|||
Повреждение локальной памяти при параллельном программировании |
|||
|
#18+
Доброго дня! Описываю проблему: Параллельно работают несолько потоков по схеме master-slaves. Внутри потока на стеке создается матрица 15*15, инициализируется нулями. Назовем ее A. Потом к этой матрице прибавляются другие матрицы. После всего A вдруг оказывается заполнена значениями в стиле 4e+173, т.е. как будто не инициализирована. Пробовал создать дебажную переменную, куда сохранить A сразу после ее инициализации. Дебажная матрица оказывается набита очень похожим мусором, но чуток отличающимся. Как будто A изначально не инициализировалась нулями, а потом к ней добавлялись значения, маленькие по сравнению с 4e+173. Ошибка возникает редко. Малейшее изменение в коде (вставить printf) может убрать ошибку или заметно увеличить частоту. Не могу вставить код, т.к. самые подозрительные на ошибки места - матрица, параллельность написаны на внутреннем фреймворке. При этом проект болшой и работает давно - едва ли в реализации матрицы и параллельности есть грубые ошибки. Прошу поделиться опытом или подсказать, откуда вообще такая ошибка может взяться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.05.2015, 12:50
|
|||
|---|---|---|---|
|
|||
Повреждение локальной памяти при параллельном программировании |
|||
|
#18+
Забыл уточнить: компилятор - Visual Studio 2013 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.05.2015, 12:58
|
|||
|---|---|---|---|
Повреждение локальной памяти при параллельном программировании |
|||
|
#18+
Доступ к матрице из разных потоков как-то синхронизируется? (mutex, event и т.п.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.05.2015, 13:11
|
|||
|---|---|---|---|
|
|||
Повреждение локальной памяти при параллельном программировании |
|||
|
#18+
antakeПрошу поделиться опытом или подсказать, откуда вообще такая ошибка может взяться. Это поведение типично для обращения к уже освобождённой памяти. DrMemory, кажется, способен ловить такие ошибки. Используй его. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.05.2015, 16:27
|
|||
|---|---|---|---|
|
|||
Повреждение локальной памяти при параллельном программировании |
|||
|
#18+
antakeНе могу вставить код, т.к. самые подозрительные на ошибки места - матрица, параллельность написаны на внутреннем фреймворке. Так давайте код без фреймворка. Нам все равно смотреть, а не компилировать )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.05.2015, 16:31
|
|||
|---|---|---|---|
|
|||
Повреждение локальной памяти при параллельном программировании |
|||
|
#18+
Моя версия - в поток передается адрес локальной переменной чтобы он заполнил ее данными, и время жизни потока больше времени жизни этой переменной, поэтому когда та же память используется для других переменных, поток продолжает писать туда данные которые не соответствуют типу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.05.2015, 20:03
|
|||
|---|---|---|---|
Повреждение локальной памяти при параллельном программировании |
|||
|
#18+
Автор пишет Не могу вставить код, т.к. самые подозрительные на ошибки места - матрица, параллельность написаны на внутреннем фреймворке. При этом проект болшой и работает давно - едва ли в реализации матрицы и параллельности есть грубые ошибки. Во первых надо разобраться что это за фреймворк? Какие у него API. Что там с мультипоточностью? Методы потокобезопасны или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.05.2015, 05:51
|
|||
|---|---|---|---|
Повреждение локальной памяти при параллельном программировании |
|||
|
#18+
antake Прошу поделиться опытом или подсказать, откуда вообще такая ошибка может взяться. это ошибка в программе! без длительного анализа кода разговор бессмысленный. А возможно и с анализом бессмысленный, придется очень долго сидеть в отладке . рекомендую для начала воспользоваться любыми анализаторами кода, статическими или типа valgrind/oprofile. из статич. есть PVS studio, недавно даже у нас тут дали на него ссылку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.05.2015, 05:57
|
|||
|---|---|---|---|
Повреждение локальной памяти при параллельном программировании |
|||
|
#18+
MasterZiv, www.viva64.com/ru/pvs-studio/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.05.2015, 22:33
|
|||
|---|---|---|---|
Повреждение локальной памяти при параллельном программировании |
|||
|
#18+
antakeДоброго дня! Описываю проблему: Параллельно работают несолько потоков по схеме master-slaves. Внутри потока на стеке создается матрица 15*15, Потоки лазят в стеки других потоков, а время жизни стековых переменных одного потока никак не контролируется в соседних потоках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&tablet=1&tid=2019002]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 10ms |
| total: | 135ms |

| 0 / 0 |
