Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.87
Petrolion
24 / 24 / 7
Регистрация: 02.02.2016
Сообщений: 124
#1

Битовые утечки при записи данных на диск - C++

06.06.2016, 14:42. Просмотров 3243. Ответов 119
Метки нет (Все метки)

Доброго дня форумчане!
Сорри если оффтоп но... Пишу в консольке на C++ (MSVCE 2010) различные движки по расчетам и тут столкнулся с опасной проблемой.
При записи на диск искажаются данные на один бит, где то один раз на 109 - 1011 данных. Бит просто "теряется" (был 1 стал 0 или наоборот) , соответственно данные уже не верны, что приводит к нулю все проделанную работу.
Из исследованного:
Бит теряется при записи как в поток текстового значения переменных (типа fileout << a[i] << endl;)
Так и при записи в двоичном виде (типа fileout.write(reinterpret_cast<char*>(a),size*sizeof(a[0]));)
Замечено, что данные в памяти верные, т.к. были пойманы моменты при повторном выводе из того же массива все данные были записаны корректно.
Ошибка не зависит от винчестера на который данные были записаны (были записи на 3 различных винта, один из которых рейд массив).
Чаще всего теряется один из старших битов (типа 24-й бит в unsigned long или 24-й в unsigned long long). Других потерянных бит не замечено.
Термин "потерянный" возможно применяю в данном случае не верно. Т.к. заметно искажение только при его инвертировании. Соответственно если был сбой и он вместо 1 записал сбойную 1 - этого я не найду.
Система молчит про контроль целостности данных. Винт тоже. У винтов и рейда все показатели в порядке (блоки не сыпятся, SMART в порядке).

Сталкивался ли кто с подобным? В чем может быть проблема?

В ближайшем будущем хочу переустановить систему и MSVCE 2013. Но не уверен, что система виновата.
Кто что подскажет?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2016, 14:42     Битовые утечки при записи данных на диск
Посмотрите здесь:
Утечки при использовании порта завершения и соккетов C++
C++ Builder Избежать утечки памяти при преобразовании строки в массив символов
C++ Утечки памяти при использовании new/delete для двумерных массивов
Битовые операции с разными типа данных C++
Битовые операции, битовые поля. C++
C++ Ошибка при записи данных в файл
Ошибка при записи в файл данных из обьекта класса C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт CАвтор FAQ
17547 / 5785 / 370
Регистрация: 30.03.2009
Сообщений: 15,934
Записей в блоге: 26
12.06.2016, 13:51     Битовые утечки при записи данных на диск #46
Цитата Сообщение от avgoor Посмотреть сообщение
Все-таки, мне имхается, что проблема в микрокоде
Скорее всего в этом случае ошибка бы повторялась стабильно

Цитата Сообщение от avgoor Посмотреть сообщение
Да и сама система кэша/памяти не может давать такие артефакты (ошибка только при 0x918 или при 0x928, была б зависимость от одного бита, другие были бы рандомными)
Ты пытаешься смотреть с уровня логического дизайна, а такие ошибки касаются физического дизайна. Т.е. где и какие элементы расставлены на кристалле, как они расположены друг относительно друга, как друг на друга влияют электромагнитные поля, генерируемые проводниками и т.п.

В любом случае мы тут можем только гадать, тем более при постановке диагноза по телефону.

Предметным решением вопроса было бы постепенная замена комплектующих. При условии, что конечной целью является всё-таки построение работающей системы, а не желание схватить за яйца микрософтеров или интеловцев
avgoor
884 / 519 / 112
Регистрация: 05.12.2015
Сообщений: 1,464
12.06.2016, 13:57     Битовые утечки при записи данных на диск #47
Цитата Сообщение от Evg Посмотреть сообщение
Ты пытаешься смотреть с уровня логического дизайна, а такие ошибки касаются физического дизайна. Т.е. где и какие элементы расставлены на кристалле, как они расположены друг относительно друга, как друг на друга влияют электромагнитные поля, генерируемые проводниками и т.п.
...
Цитата Сообщение от avgoor Посмотреть сообщение
(может соседних? но не зная разводки не сказать
Слабо верится, что у амдшников случайно получилось создать активный ПАВ-фильтр (Ну, или на стоячей ЭМ волне) с такими свойствами.
Цитата Сообщение от Evg Посмотреть сообщение
В любом случае мы тут можем только гадать, тем более при постановке диагноза по телефону.
Цитата Сообщение от Evg Посмотреть сообщение
Предметным решением вопроса было бы постепенная замена комплектующих.
+1.

Не по теме:

Можно скинуться ТС-у на новый проц, старый отправить в АМД и забиться на соточку пиво о результатах диагностики

Evg
Эксперт CАвтор FAQ
17547 / 5785 / 370
Регистрация: 30.03.2009
Сообщений: 15,934
Записей в блоге: 26
12.06.2016, 14:03     Битовые утечки при записи данных на диск #48
Цитата Сообщение от avgoor Посмотреть сообщение
Слабо верится, что у амдшников случайно получилось создать активный ПАВ-фильтр
Это может попросту быть бракованный экземпляр. Или он поломался в процессе работы. Типа в каком-то конденсаторе было постоянно немного большее напряжение, чем положено, и в конце-концов его пробило. Да мало ли чего там может быть
avgoor
884 / 519 / 112
Регистрация: 05.12.2015
Сообщений: 1,464
12.06.2016, 14:09     Битовые утечки при записи данных на диск #49
UPD: Типичное описание ошибки в микрокоде какое-то такое:
Если через одну команду от MOV EAX [PTR] стоит стоит XOR ECX [PTR] и при этом адрес в ESP делится без остатка на 42, может сброситься какой-то флаг.
Что очень похоже на поведение системы ТС.

Добавлено через 3 минуты
Цитата Сообщение от Evg Посмотреть сообщение
Это может попросту быть бракованный экземпляр
Может, конечно, но очень маловероятно с такими симптомами.
Petrolion
24 / 24 / 7
Регистрация: 02.02.2016
Сообщений: 124
12.06.2016, 19:15  [ТС]     Битовые утечки при записи данных на диск #50
Был чуть занят, но пока решил по совету Renji попробовать под Live-CD Debian откомпилить и запустить код.
Правда С линуксами знаком настолько поверхностно, что просто не пугаюсь их, но и знаниями не обладаю.
Насколько понял, conio.h и Windows.h необходимо убрать (и все с ним связанное).
Но как корректно тормознуть процесс? Как получить номер ядра и зафиксить процесс на конкретном ядре проца?
Уже скачал 8.4 версию KDE и GNOM. Какой интерфейс лучше грузить?
nonedark2008
889 / 628 / 126
Регистрация: 28.07.2012
Сообщений: 1,697
12.06.2016, 19:21     Битовые утечки при записи данных на диск #51
Цитата Сообщение от Petrolion Посмотреть сообщение
Как получить номер ядра и зафиксить процесс на конкретном ядре проца?
Гугл №1
Гугл №2
Evg
Эксперт CАвтор FAQ
17547 / 5785 / 370
Регистрация: 30.03.2009
Сообщений: 15,934
Записей в блоге: 26
12.06.2016, 19:27     Битовые утечки при записи данных на диск #52
Цитата Сообщение от Petrolion Посмотреть сообщение
Но как корректно тормознуть процесс?
Запускаешь программу в консоли, клавишами ctrl-c прибиваешь

Можно, конечно, и под линуксом смотреть. Но если gcc построит немного другой код и ошибка перестанет проявляться, то твою проблему это всё равно не решит.
Renji
1878 / 1276 / 290
Регистрация: 05.06.2014
Сообщений: 3,642
12.06.2016, 19:34     Битовые утечки при записи данных на диск #53
Цитата Сообщение от Petrolion Посмотреть сообщение
Уже скачал 8.4 версию KDE и GNOM. Какой интерфейс лучше грузить?
Лично мне нравится Mate и при переходе на него с Винды никаких проблем возникнуть не должно. Ну, разве что системное меню и часики теперь будут вверху, а не внизу. А вот современный третий GNOME настоятельно не рекомендую - именно под маты в адрес третьего Гнома и появился Mate (форк старого-доброго второго Гнома).
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
13.06.2016, 12:51     Битовые утечки при записи данных на диск #54
Что то странное происходит, уже дошли до другой ОС и даже до выбора DE, которая не нужна для проверки. Вроде уже должно быть понятно, что ошибка не программная, по крайней мере не того уровня, на котором вы ищите.
Petrolion
24 / 24 / 7
Регистрация: 02.02.2016
Сообщений: 124
13.06.2016, 15:35  [ТС]     Битовые утечки при записи данных на диск #55
Toshkarik, сейчас речь идет о смене системы как платформы под которым работает код. Чтобы понять, то ли это битая система, то ли совокупность MS Windows + нестабильное железо. Т.к. при проверке самого железа без MS Win ошибок не возникает.
Renji, mate почему-то не захотел грузиться вообще (sha1 проверен). Гном загрузился. (сейчас под ним) Но вот QT-creator не нашел всех файлов для инсталляции:
Кликните здесь для просмотра всего текста
Err http://http.debian.net/debian/ jessie/main mysql-common all 5.5.47-0+deb8u1
404 Not Found
Err http://http.debian.net/debian/ jessie/main libsvn1 amd64 1.8.10-6+deb8u3
404 Not Found
Err http://http.debian.net/debian/ jessie/main libbotan-1.10-0 amd64 1.10.8-2
404 Not Found
Err http://http.debian.net/debian/ jessie/main qtcreator amd64 3.2.1+dfsg-7
404 Not Found
Err http://security.debian.org/ jessie/updates/main mysql-common all 5.5.47-0+deb8u1
404 Not Found [IP: 212.211.132.32 80]
Err http://http.debian.net/debian/ jessie/main subversion amd64 1.8.10-6+deb8u3
404 Not Found
Err http://security.debian.org/ jessie/updates/main libmysqlclient18 amd64 5.5.47-0+deb8u1
404 Not Found [IP: 212.211.132.32 80]
E: Failed to fetch http://security.debian.org/pool/upda...deb8u1_all.deb 404 Not Found [IP: 212.211.132.32 80]

E: Failed to fetch http://security.debian.org/pool/upda...b8u1_amd64.deb 404 Not Found [IP: 212.211.132.32 80]

E: Failed to fetch http://http.debian.net/debian/pool/m...b8u3_amd64.deb 404 Not Found

E: Failed to fetch http://http.debian.net/debian/pool/m....8-2_amd64.deb 404 Not Found

E: Failed to fetch http://http.debian.net/debian/pool/m...sg-7_amd64.deb 404 Not Found

E: Failed to fetch http://http.debian.net/debian/pool/m...b8u3_amd64.deb 404 Not Found

E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

Где нужно выпрямить руки?
Renji
1878 / 1276 / 290
Регистрация: 05.06.2014
Сообщений: 3,642
13.06.2016, 20:03     Битовые утечки при записи данных на диск #56
Цитата Сообщение от Petrolion Посмотреть сообщение
Где нужно выпрямить руки?
Лайв просит старые версии программ (какие были в момент выхода 8.4), репозиторий пытается отдать новые (какие сейчас в 8.5).
Выполнить sudo apt-get update;sudo apt-get upgrade (качает обновления) или брать 8.5 лайв. 8.5 лайв только сейчас проверил, работает.

Добавлено через 8 минут
UPD И да, проверил как QtCreator работает под Гномом - ну работать то он работает, но Гном как-то странно работает с окнами запущенных программ. Почему-то их удается найти только через alt+tab, а не через список открытых окон вверху (еще раз убеждаюсь что правильно с Гнома свалил).
vxg
Модератор
3145 / 1947 / 214
Регистрация: 13.01.2012
Сообщений: 7,438
14.06.2016, 13:57     Битовые утечки при записи данных на диск #57
Petrolion, у меня ваш код из поста Битовые утечки при записи данных на диск крашит выбрасывая исключение std::bad_alloc видимо машина хилая)
Petrolion
24 / 24 / 7
Регистрация: 02.02.2016
Сообщений: 124
14.06.2016, 14:17  [ТС]     Битовые утечки при записи данных на диск #58
vxg, в релизе поставьте платформу x64. В коде 8 гиг оперативы съедается. Чтобы уменьшить - строчку int n = 1<<30; измените на значение поменьше. Например int n = 1<<29; (4 гига) или int n = 1<<28; (2 гига).
vxg
Модератор
3145 / 1947 / 214
Регистрация: 13.01.2012
Сообщений: 7,438
14.06.2016, 14:25     Битовые утечки при записи данных на диск #59
Petrolion, я собираю через mingw64 g++ так как ваша сборка зависит от DLL студии. у меня 4 оперативы и 4 подкачка. видимо все отдать не может) попробую уменьшить
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2016, 14:28     Битовые утечки при записи данных на диск
Еще ссылки по теме:
Как заставить ресурс работать без записи на диск? C++ Builder
C++ Напишите функции записи данных в файл, чтения данных из файла
C++ Builder Составить программу для ввода данных о студентах, проживающих в общежитии, и записи этих данных в файл
Утечки памяти C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Evg
Эксперт CАвтор FAQ
17547 / 5785 / 370
Регистрация: 30.03.2009
Сообщений: 15,934
Записей в блоге: 26
14.06.2016, 14:28     Битовые утечки при записи данных на диск #60
Цитата Сообщение от Petrolion Посмотреть сообщение
В коде 8 гиг оперативы съедается
Сократи код. Может проблема проявляется задолго до 8 гигов. Типа того, что если поставить полгига, то тоже проявится
Yandex
Объявления
14.06.2016, 14:28     Битовые утечки при записи данных на диск
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru