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

start [/forum/topic.php?fid=57&msg=38955132&tid=2019002]: |
0ms |
get settings: |
18ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
124ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 272ms |
| total: | 492ms |

| 0 / 0 |
