green_fr: (Default)
[personal profile] green_fr
Очень странная ситуация на работе. Полностью детерминистская программа, запускаешь её дважды с одинаковыми данными — получаешь дважды один и тот же результат. Всегда, кроме одного раза. Запустил программу, через несколько часов она вылетела с очень странной ошибкой (переменная, которая всегда была округлена до 0.0025 содержала одно значение типа 0.022500458651 — то есть никак не похоже на округление). Перезапустил ещё раз, ничего не изменив — и программа отработала.

Там нет никакой зависимости от времени. Все исходные данные остались одними и теми же. Все генераторы случайных чисел позиционируются на одну и ту же исходную точку. Какие ещё есть варианты? Дефектный процессор? Космическое излучение? Проклятье рода?

Date: 2017-03-20 08:08 am (UTC)
From: [identity profile] Дмитрий Рождественский (from livejournal.com)
Память возможно. Либо в распределении, либо в выравнивании.

Date: 2017-03-20 08:12 am (UTC)
From: [identity profile] vadim rumyantsev (from livejournal.com)
Непроинициализированное начальное значение.

Date: 2017-03-20 09:11 am (UTC)
From: [identity profile] green-fr.livejournal.com
В смысле, hardware память сбоит?

Date: 2017-03-20 09:12 am (UTC)
From: [identity profile] green-fr.livejournal.com
Да нет там никаких глобальных переменных. Всё читается из папочки input, и в эту папочку ничего нового по ходу не пишется, чтобы во второй раз можно было прочитать по-другому.

Date: 2017-03-20 09:14 am (UTC)
From: [identity profile] Дмитрий Рождественский (from livejournal.com)
Нет, в смысле у вас ошибка в динамическом выделении памяти.

Date: 2017-03-20 09:19 am (UTC)
From: [identity profile] green-fr.livejournal.com
Это на MatLab написано, там он сам управляет памятью.

Date: 2017-03-20 10:36 am (UTC)
From: [identity profile] micro-babushki.livejournal.com
Когда-то давно у меня в подростковом возрасте был 286 компьютер на котором я программировал.
И тоже обнаружил в какой-то момент странный баг, программа вдруг начинала выдавать странные данные.

Я упростил ее до минимума (по-моему 2 умножал на 2) - и вот представь себе - в какой-то момент
на экране вдруг возникало не 4, а что-то другое.

Поверить в это было трудно, но факт.

Опытным путем выяснил, что перегревался процессор (или память)
Снимаешь корпус - баги исчезают. Одеваешь - появляется.

Вот так бывает.

Date: 2017-03-20 11:10 am (UTC)
From: [identity profile] birdwatcher.livejournal.com
Бывают ошибки и в Матлабе.

Date: 2017-03-20 11:13 am (UTC)
From: [identity profile] vadim rumyantsev (from livejournal.com)
Необязательно глобальные переменные, любая переменная может быть. Обычно распределяемая память содержит нули, но не всегда.

Date: 2017-03-20 12:05 pm (UTC)
From: [identity profile] xxxxx.livejournal.com
ха-ха, да. А бывает ещё и так: после ремонта вернули компутер с новой материнкой и не проставили джамперами напряжение на процессоре, вместо требуемых 3,5 вольт подавалось 2,2 --- и вроде всё работает, машина грузится, ГУЯ запускается, но как начинаешь компилировать техом, он по дороге обязательно выдаёт ошибки, каждый раз разные. Самое смешное, что я таки нашёл причину и исправил.
Edited Date: 2017-03-20 12:06 pm (UTC)

Date: 2017-03-20 12:21 pm (UTC)
From: [identity profile] micro-babushki.livejournal.com
ага )
это к тому, что мистики не бывает )

Date: 2017-03-20 12:24 pm (UTC)
From: [identity profile] xxxxx.livejournal.com
компилятор всегда прав

Date: 2017-03-20 01:09 pm (UTC)
From: [identity profile] green-fr.livejournal.com
Ну, кстати да, только что обновились до последней версии. Посмотрим, будет ли воспроизводиться - просто за 10 лет первый раз такое вижу.

Date: 2017-03-20 01:10 pm (UTC)
From: [identity profile] green-fr.livejournal.com
У MatLab неинициализированная переменная имеет значение [] (примерно как null), но идея понятная.

Date: 2017-03-20 02:29 pm (UTC)
From: [identity profile] kalvado.livejournal.com
Я бы предположил битовый сбой. Если комп не серверного класса, память не ЕСС, то раз в иногда ошибка возможна.

Date: 2017-03-20 02:32 pm (UTC)
From: [identity profile] green-fr.livejournal.com
А это реально случается? Насколько часто? И насколько там встроена какая-то защита?

Date: 2017-03-20 02:46 pm (UTC)
From: [identity profile] mopexod.livejournal.com
ECC - это уже с "correction". Обычная система, без ECC, ну, простой десктоп, просто уйдёт в синий экран при флипнутом бите.
Error detection-то у них у всех есть.

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

Date: 2017-03-20 02:46 pm (UTC)
From: [identity profile] kalvado.livejournal.com
ну как.. Я вообще разбирался в свое время с радиационной устойчивостью чипов для спутников - и один из основных механизмов тестирования - облучение кобальтом-60.
При этом где-то вскоре после войны возникла проблема с чувствительными детекторами. Сталь выплавленная примерно после 1945 года более радиоактивна чем довоенная. Чаще всего говорят, что это последствия испытаний (а концентрация трития, например, вроде как еще не стабилизировалась); но я слышал мнение что это утечки из датчиков использующих кобальт-60. И типа если поставить в лесу заводик, и выплавлять сталь из свежедобытой руды без металлолома, используя древесный уголь - то сталь будет вполне чистой.
термин pre-WWII steel исчезает из статей где-то в 70-х - резали линкоры второй мировой. Но запасы не вечны. А до того были даже планы поднимать немецкие подлодки, которые по operation deadlight потопили. Но похоже кто-то построил заводик... смотри выше. Впрочем, когда нашли древнеримский корапь с грузом свинца - тоже радовались...

Так что да, это не нереально. Особенно если ты радиацией балуешься - типа минералку любишь или что такое.
А вот тебе для примера память с защитой от сбоев. Продается...
https://www.newegg.com/Product/Product.aspx?Item=N82E16820148770

Date: 2017-03-20 02:52 pm (UTC)
From: [identity profile] kalvado.livejournal.com
берем любую рабоче-крестьянскую память, типа этой:
https://www.newegg.com/Product/Product.aspx?Item=N82E16820134045
считаем корпуса
понимаем, что никаких плюшек типа девятого бита там нет....
Помимо всего прочего, это еще размер ячейки играет. Было очень актуально с большими ячейками несколько микрон, на нанометрах все проще как ни странно.
Не знаю, испозльзуют ли еще изотопную BSG. БЫла очень дорогая штука, но помогала как ни странно...

Date: 2017-03-20 03:10 pm (UTC)
From: [identity profile] kalvado.livejournal.com
а, туплю, какая BSG теперь... один сплошной металл...

Date: 2017-03-20 04:48 pm (UTC)
From: [identity profile] yuriyag.livejournal.com
обалдеть

Date: 2017-03-21 02:52 am (UTC)
From: [identity profile] oldjackaroo.livejournal.com
"насколько часто"

Как человек, слегка причастный к наблюдению за программой, работающей минимум на десятках миллионов компьютеров, могу сказать - каждый день. :)

Date: 2017-03-21 10:35 am (UTC)
From: [identity profile] green-fr.livejournal.com
То есть, порядка "раз в миллионо-компьютер-день"?

Date: 2017-03-21 11:38 am (UTC)
From: [identity profile] kalvado.livejournal.com
вот некие интересные цифры:
http://www.opsalacarte.com/pdfs/Tech_Papers/Soft_Error_Trends_and_Mitigation_Techniques_in_Memory_Devices_Presentation_by_Charlie_Slayman,Opsalacarte.pdf
Для процессора с большим кешем порядка 1 ошибки в год - и я не понимаю есть ли там защита по факту.

Date: 2017-03-21 01:25 pm (UTC)
From: [identity profile] green-fr.livejournal.com
Ага, спасибо.

Date: 2017-03-21 04:27 pm (UTC)
From: [identity profile] oldjackaroo.livejournal.com
Плюс-минус несколько десятичных порядков :)

Profile

green_fr: (Default)
green_fr

February 2026

S M T W T F S
1 2 3 4 5 67
8 9 10 11 12 1314
15 16 1718 192021
22 23 24 25262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 26th, 2026 07:29 am
Powered by Dreamwidth Studios