|
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135
|
|
Битовые утечки при записи данных на диск06.06.2016, 14:42. Показов 8261. Ответов 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,469
|
|
| 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,469
|
|
| 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,469
|
|
| 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 / 1575 / 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 / 1575 / 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 / 1575 / 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 диск Жесткий диск тормозит при записи на него Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
|
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|