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

start [/forum/topic.php?fid=57&fpage=48&tid=2019002]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 392ms |

| 0 / 0 |
