powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Повреждение локальной памяти при параллельном программировании
10 сообщений из 10, страница 1 из 1
Повреждение локальной памяти при параллельном программировании
    #38954518
antake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня!

Описываю проблему:
Параллельно работают несолько потоков по схеме master-slaves.
Внутри потока на стеке создается матрица 15*15, инициализируется нулями. Назовем ее A. Потом к этой матрице прибавляются другие матрицы. После всего A вдруг оказывается заполнена значениями в стиле 4e+173, т.е. как будто не инициализирована.
Пробовал создать дебажную переменную, куда сохранить A сразу после ее инициализации. Дебажная матрица оказывается набита очень похожим мусором, но чуток отличающимся. Как будто A изначально не инициализировалась нулями, а потом к ней добавлялись значения, маленькие по сравнению с 4e+173.

Ошибка возникает редко. Малейшее изменение в коде (вставить printf) может убрать ошибку или заметно увеличить частоту.

Не могу вставить код, т.к. самые подозрительные на ошибки места - матрица, параллельность написаны на внутреннем фреймворке. При этом проект болшой и работает давно - едва ли в реализации матрицы и параллельности есть грубые ошибки.

Прошу поделиться опытом или подсказать, откуда вообще такая ошибка может взяться.
...
Рейтинг: 0 / 0
Повреждение локальной памяти при параллельном программировании
    #38954524
antake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл уточнить: компилятор - Visual Studio 2013
...
Рейтинг: 0 / 0
Повреждение локальной памяти при параллельном программировании
    #38954538
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доступ к матрице из разных потоков как-то синхронизируется? (mutex, event и т.п.)
...
Рейтинг: 0 / 0
Повреждение локальной памяти при параллельном программировании
    #38954558
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antakeПрошу поделиться опытом или подсказать, откуда вообще такая ошибка может
взяться.
Это поведение типично для обращения к уже освобождённой памяти. DrMemory, кажется,
способен ловить такие ошибки. Используй его.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Повреждение локальной памяти при параллельном программировании
    #38954812
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antakeНе могу вставить код, т.к. самые подозрительные на ошибки места - матрица, параллельность написаны на внутреннем фреймворке.
Так давайте код без фреймворка.
Нам все равно смотреть, а не компилировать ))
...
Рейтинг: 0 / 0
Повреждение локальной памяти при параллельном программировании
    #38954816
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Моя версия - в поток передается адрес локальной переменной чтобы он заполнил ее данными, и время жизни потока больше времени жизни этой переменной, поэтому когда та же память используется для других переменных, поток продолжает писать туда данные которые не соответствуют типу.
...
Рейтинг: 0 / 0
Повреждение локальной памяти при параллельном программировании
    #38955032
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор пишет
Не могу вставить код, т.к. самые подозрительные на ошибки места - матрица, параллельность написаны на внутреннем фреймворке. При этом проект болшой и работает давно - едва ли в реализации матрицы и параллельности есть грубые ошибки.
Во первых надо разобраться что это за фреймворк? Какие у него API.
Что там с мультипоточностью? Методы потокобезопасны или нет?
...
Рейтинг: 0 / 0
Повреждение локальной памяти при параллельном программировании
    #38955131
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antake
Прошу поделиться опытом или подсказать, откуда вообще такая ошибка может взяться.

это ошибка в программе!
без длительного анализа кода разговор бессмысленный.
А возможно и с анализом бессмысленный, придется очень долго сидеть в отладке .

рекомендую для начала воспользоваться любыми анализаторами кода, статическими или типа valgrind/oprofile.
из статич. есть PVS studio, недавно даже у нас тут дали на него ссылку.
...
Рейтинг: 0 / 0
Повреждение локальной памяти при параллельном программировании
    #38955132
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

www.viva64.com/ru/pvs-studio/
...
Рейтинг: 0 / 0
Повреждение локальной памяти при параллельном программировании
    #38955508
ДохтаР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antakeДоброго дня!

Описываю проблему:
Параллельно работают несолько потоков по схеме master-slaves.
Внутри потока на стеке создается матрица 15*15,


Потоки лазят в стеки других потоков, а
время жизни стековых переменных одного потока никак
не контролируется в соседних потоках.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Повреждение локальной памяти при параллельном программировании
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]