|
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135
|
|
Битовые утечки при записи данных на диск06.06.2016, 14:42. Показов 8930. Ответов 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
|
|
| 06.06.2016, 14:42 | |
|
Ответы с готовыми решениями:
119
ClientDataSet, Blob утечки памяти при записи в файл При записи файлов на диск, комптютер выдал ошибку, что данный диск не может дальше использоваться
|
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
||||||||||||||||
| 15.06.2016, 16:59 | ||||||||||||||||
|
Вот что выдал gcc 4.9.3 с -O2:
Вот внутренняя часть цикла msvc:
1
|
||||||||||||||||
|
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135
|
||
| 15.06.2016, 17:26 [ТС] | ||
|
Командная строка с офигенским количеством строк... ![]() За полтора часа в 2 гиговом тесте не обнаружено никаких ошибок. :/
0
|
||
|
Модератор
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,476
|
|
| 15.06.2016, 18:27 | |
|
Evg, и как я завтра об этом узнаю спустя сто строк?
1
|
|
|
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135
|
|
| 15.06.2016, 18:43 [ТС] | |
|
vxg, в приаттаченном файле старый вариант с логом для 2 гиг.
У меня на 8 гиг один полный цикл выполняется соответственно в 4 раза дольше и записей в логах получается меньше. Все же не могли бы вы скомпилить для меня в вашем компиляторе пример на 8 гиг. Сколько двушки не гоняю - не ловится ошибка.
0
|
|
|
Модератор
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,476
|
|
| 15.06.2016, 18:56 | |
|
Petrolion, завтра утром так как с таким насилием над жестким боюсь оставлять на ночь
Добавлено через 1 минуту Petrolion, сделали бы уже задание размера или несколько сборок - может на моей сборке не будет ошибки по др причинам
1
|
|
|
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135
|
|
| 15.06.2016, 20:05 [ТС] | |
|
vxg, Можно указывать n через
cin >> n;.Хотел сделать забор всей доступной памяти (с небольшим резервом), но винда сильно фрагментирует память. Не всегда запускается такой код.
0
|
|
|
Модератор
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,476
|
|
| 15.06.2016, 20:43 | |
|
Petrolion, этого в коде нет а как это сделать 101 способом я и так знаю . Замечание о фрагментации спорно
1
|
|
|
|
|
| 15.06.2016, 20:56 | |
|
Количество памяти можно задать в виде отдельной глобальной переменной, так её проще будет исправлять в ассемблерном коде. Но когда количество итераций в цикле не является константой, то компилятор может построить немного другой код. Видя константу, компилятор понимает, что она большая и может построить цикл по другому, чем в варианте, когда количество итераций неизвестно. Маловероятно, что для x86-64 такое есть, но на всякий случай в таких вариантах надо глазами на ассемблерный код посмотреть, чтобы убедиться, что тело цикла осталось более-менее таким же
1
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 15.06.2016, 22:52 | ||
|
1
|
||
|
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135
|
|
| 04.08.2016, 21:58 [ТС] | |
|
Доброго времени суток форумчане!
Свой топик не забыл и отчитываюсь как и обещал. Нашел образ своей системы годовалой давности. Не по теме: (К сожалению первичный образ "новой" системы помер вместе с полуторатерабайтным винтом) Понял, что моя дружба с этим вариантом установки закончена. Затем долгое время был вдали от компа (различные проблемы). Но вот таки установил систему. Опять Windows 7 SP1 с кумулятивными обновлениями по 14 год. Дрова, софты. MS VS 2015 Community. Не по теме: (Никаких других обновлений из инета не ставил, только стоит то что сами софты с собой тащат. Опять куча твиков для SSD и прочие настройки.) Все же проблема оказалась в закривленной системе Windows 7, а не в VC. Правда у меня в голове ни как не укладывается как можно "терять" биты в одном значении... и что для этого "специально" нужно делать. Оставил половину SSD под Debian (хочу первой системой его) и два раздела на HDD для него. Альтернатива никогда не будет лишней. Всем участвующим в моей проблеме - огромное спасибо! Вы подошли к исследованиям как настоящие профессионалы! Надеюсь мой горький опыт когда-нибудь и вам пригодится (не дай Гейтс!).Удачи всем!
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||||
| 04.08.2016, 22:10 | |||||||
|
На С++ это писать надо а на непонятно чем. а на С++ будет вот так:
0
|
|||||||
|
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135
|
|
| 04.08.2016, 23:37 [ТС] | |
|
Fulcrum_013, Извините, но вы немного не в тему. Чуть дальше прочитайте. Проблемы были не оттуда.
Проблемы были в памяти, а не при записи. А реинтерпрет я пользовал часто и густо (возможно к своему стыду), никогда проблем не возникало.
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 04.08.2016, 23:41 | ||
|
0
|
||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
||||||
| 05.08.2016, 01:08 | ||||||
|
Fulcrum_013, а ничего что функция std::ostream::write имеет прототип
0
|
||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 05.08.2016, 01:31 | |
|
0
|
|
|
|
||
| 05.08.2016, 19:31 | ||
|
0
|
||
|
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135
|
||
| 06.08.2016, 01:25 [ТС] | ||
|
Инсталляция исходной винды немного другая (на пару лет свежее), но откат на систему годовалой давности показал ее полное фиаско.
0
|
||
|
|
|
| 07.08.2016, 21:59 | |
|
Нет, это специальный буфер, предназначенный для доисполнения в ОС сломавшихся операций обращения в память
Добавлено через 59 секунд Хотя может на интеле его и нет... Добавлено через 3 минуты Да, что-то меня понесло, в интеле его нет Правда теперь нет нормальных идей о том, как ОС в твоём случае могла повлиять на отдельные биты. Разве что опять код ядра создавал специфичный контекст для возникновения аппаратной ошибки
0
|
|
| 07.08.2016, 21:59 | |
|
При закачке игры на жесткий диск пишет "Ошибка при записи на диск" Измерить скорость чтения и записи данных на диск Ошибка при записи на диск Ошибки при записи на DVD диск Жесткий диск тормозит при записи на него Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе.
Самым главным критерием для меня было создание паролей, в котором отсутствуют знаки: | 1 l I
Обработка содержит следующие. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
|
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
https:/ / youtu. be/ VpfFZSUDGnQ. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|