|
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135
|
|
Битовые утечки при записи данных на диск06.06.2016, 14:42. Показов 8128. Ответов 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 утечки памяти при записи в файл При записи файлов на диск, комптютер выдал ошибку, что данный диск не может дальше использоваться
|
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
|||
| 11.06.2016, 22:15 | |||
|
1
|
|||
|
|
||||||
| 12.06.2016, 00:10 | ||||||
|
Ещё одно наблюдение. В логах из поста #28 дефектными оказались адреса
Добавлено через 2 минуты Сразу не заметил лог в 34-м посте (из-за названия Test.zip). Там сия тенденция повторяется Добавлено через 4 минуты Зря ты работаешь в большим исходником программы. Его наоборот надо сокращать. В идеале до минимума (т.е. один цикл записи и один цикл проверки) То, что имеем в печати виртуальные адреса, принципиально ничего не портит. Они отображаются на физические адреса с точностью до страницы (4 килобайт). Т.е. младшие 12 бит виртуального адреса будут совпадать с младшими 12 битами физического адреса При этом закономерность по адресам наблюдается именно в младших 12 битах, что говорит скорее о проблемах с памятью (контроллер памяти, планки памяти, или что-то типа того). Если бы была проблема с кэшем, то совпадение адресов было бы в пределах 6 бит, исходя из того, что размер линии кэша равен 32 байтам (может там не 32, а 64 или 128, это уже не так важно). Я не знаю точных алгоритмов работы кэша, но по ощущениям они вряд ли работают с точностью до страницы памяти Добавлено через 11 минут Если культурно сократишь тест (выкинешь все conio.h), то его можно будет компилировать не только микрософтовским компилятором. Исправить тест в общем-то сможет любой, но проверить можешь только ты, а потому будет лучше, если ты выложишь нормально сокращённый пример, который скомпилируется в любом компиляторе. А потом тебе народ выдаст бинарники, а ты уже будешь смотреть, что из них падает, а что нет. Посмотрев на код падающих и не падающих бинарников в общем-то тоже можно будет увидеть какие-то закономерности Добавлено через 1 минуту Да и тему для порядку надо бы куда-нибудь в низкоуровневое программирование переместить
1
|
||||||
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
||
| 12.06.2016, 03:01 | ||
|
1
|
||
|
|
|
| 12.06.2016, 12:34 | |
|
Даже вон как. Т.е. может быть какая-нибудь ситуация, что на уровне физического проектирования (т.е. транзисторы, конденсаторы) при определённых динамических условиях (типа большой трафик в память на фоне вытеснения записи из конкретного места кэша) и при наличии некоторых статических условий (определённая комбинация бит в шине, передающей адрес или просто значение в регистре) сигнал с какой-то линии одной шины перебивает сигнал на линии другой шины. Такое может быть в том числе и в процессоре в момент выставления заявки на запись в память
1
|
|
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
||
| 12.06.2016, 13:44 | ||
|
1
|
||
|
|
|||
| 12.06.2016, 13:51 | |||
|
В любом случае мы тут можем только гадать, тем более при постановке диагноза по телефону. Предметным решением вопроса было бы постепенная замена комплектующих. При условии, что конечной целью является всё-таки построение работающей системы, а не желание схватить за яйца микрософтеров или интеловцев
1
|
|||
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
|||||
| 12.06.2016, 13:57 | |||||
|
Не по теме: Можно скинуться ТС-у на новый проц, старый отправить в АМД и забиться на
1
|
|||||
|
|
||
| 12.06.2016, 14:03 | ||
|
1
|
||
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
||
| 12.06.2016, 14:09 | ||
|
UPD: Типичное описание ошибки в микрокоде какое-то такое:
Если через одну команду от MOV EAX [PTR] стоит стоит XOR ECX [PTR] и при этом адрес в ESP делится без остатка на 42, может сброситься какой-то флаг. Что очень похоже на поведение системы ТС. Добавлено через 3 минуты
1
|
||
|
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135
|
|
| 12.06.2016, 19:15 [ТС] | |
|
Был чуть занят, но пока решил по совету Renji попробовать под Live-CD Debian откомпилить и запустить код.
Правда С линуксами знаком настолько поверхностно, что просто не пугаюсь их, но и знаниями не обладаю. Насколько понял, conio.h и Windows.h необходимо убрать (и все с ним связанное). Но как корректно тормознуть процесс? Как получить номер ядра и зафиксить процесс на конкретном ядре проца? Уже скачал 8.4 версию KDE и GNOM. Какой интерфейс лучше грузить?
0
|
|
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
|
| 12.06.2016, 19:21 | |
|
1
|
|
|
|
||
| 12.06.2016, 19:27 | ||
|
Можно, конечно, и под линуксом смотреть. Но если gcc построит немного другой код и ошибка перестанет проявляться, то твою проблему это всё равно не решит.
1
|
||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 12.06.2016, 19:34 | ||
|
1
|
||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 13.06.2016, 12:51 | |
|
Что то странное происходит, уже дошли до другой ОС и даже до выбора DE, которая не нужна для проверки. Вроде уже должно быть понятно, что ошибка не программная, по крайней мере не того уровня, на котором вы ищите.
1
|
|
|
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135
|
|
| 13.06.2016, 15:35 [ТС] | |
|
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/poo... u1_all.deb 404 Not Found [IP: 212.211.132.32 80] E: Failed to fetch http://security.debian.org/poo... _amd64.deb 404 Not Found [IP: 212.211.132.32 80] E: Failed to fetch http://http.debian.net/debian/... _amd64.deb 404 Not Found E: Failed to fetch http://http.debian.net/debian/... _amd64.deb 404 Not Found E: Failed to fetch http://http.debian.net/debian/... _amd64.deb 404 Not Found E: Failed to fetch http://http.debian.net/debian/... _amd64.deb 404 Not Found E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing? Где нужно выпрямить руки?
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 13.06.2016, 20:03 | ||
|
Выполнить sudo apt-get update;sudo apt-get upgrade (качает обновления) или брать 8.5 лайв. 8.5 лайв только сейчас проверил, работает. Добавлено через 8 минут UPD И да, проверил как QtCreator работает под Гномом - ну работать то он работает, но Гном как-то странно работает с окнами запущенных программ. Почему-то их удается найти только через alt+tab, а не через список открытых окон вверху (еще раз убеждаюсь что правильно с Гнома свалил).
1
|
||
|
Модератор
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,468
|
|
| 14.06.2016, 13:57 | |
|
Petrolion, у меня ваш код из поста Битовые утечки при записи данных на диск крашит выбрасывая исключение std::bad_alloc видимо машина хилая)
1
|
|
|
24 / 24 / 8
Регистрация: 02.02.2016
Сообщений: 135
|
|
| 14.06.2016, 14:17 [ТС] | |
|
vxg, в релизе поставьте платформу x64. В коде 8 гиг оперативы съедается. Чтобы уменьшить - строчку
int n = 1<<30; измените на значение поменьше. Например int n = 1<<29; (4 гига) или int n = 1<<28; (2 гига).
0
|
|
|
Модератор
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,468
|
|
| 14.06.2016, 14:25 | |
|
Petrolion, я собираю через mingw64 g++ так как ваша сборка зависит от DLL студии. у меня 4 оперативы и 4 подкачка. видимо все отдать не может) попробую уменьшить
0
|
|
|
|
||
| 14.06.2016, 14:28 | ||
|
0
|
||
| 14.06.2016, 14:28 | |
|
При закачке игры на жесткий диск пишет "Ошибка при записи на диск" Измерить скорость чтения и записи данных на диск Ошибка при записи на диск Ошибки при записи на DVD диск Жесткий диск тормозит при записи на него Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Администрация Хабра удаляет новые алгоритмы, которые не западно ориентированной философии кода, без уведомлений и объяснений.
Hrethgir 20.06.2026
Делается это, как замечено, при правках - при объявлении концептуальных отличий в алгоримах. Делается это, по линейке событий - после дополнения публикации основными отличиями от основных западных. . .
|
Процесс ориентированная диалектика (не новость - просто системное обновление, философия).
Hrethgir 20.06.2026
Однажды один участник в своём блоге, на этом форуме, сделал запись "О языках замолвите слово". Понимая, что язык - важная вещь, я решил хорошо подумать, прежде чем сказать, и сказал то, что вы видите. . .
|
Контроль уникальности строк в табличной части документа
Maks 18.06.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ПланированиеСпецтехники" с табличной частью "НаличиеОборудования", разработанного в КА2.
Задача: контроль уникальности строк в. . .
|
Клиент
Uhbif79 18.06.2026
Здесь простой клиент для работы с сервером.
|
|
Сервер
Uhbif79 18.06.2026
Выкладываю простейший сервер.
|
Дефенестрация
kumehtar 18.06.2026
Узнал интересное слово. Дефенестрация. Это когда ты выбрасываешь кого-либо или что-либо из окна. Возьму на вооружение)))
|
Дихотомия добра и зла
kumehtar 18.06.2026
Как Дзен-буддисты говорят о добре и зле: не нужно воевать против зла, нужно воевать против невежества. Тогда добро станет ествественным, и поэтому вечным. Но дело в том, что невежество всё время. . .
|
Своя Интернет-Компания
iceja 18.06.2026
Я программист с экономическим образованием, пишу свой проект, это SaaS для бизнесов. Мне нужен co-founder с высшим экономическим образованием, и/ или инвестор. Сейчас проект в интенсивной разработке,. . .
|