Сам программист. Для работы потребовалось срочно обновить xCode и macOs. При установке оси Big Sur на mac-mini вылетает непонятная ошибка. Наши технари видать уже в кусре и сказали, что надо переставить планку с памятью в другой слот. В общем, ребята из Apple удивили.
Я не знаю Objective C совсем, С++ знаю. Код из поста это не С++, предположил, что эппловский Objective C.
Для полноты картины вместо камента надо вставить
throw std::logic_error("not implemented");
Ну ОК, забыл, за 10 лет простительно, такое считалось говнокодом (вынос метода вне класса), поэтому при разработке по сути не использовали.
Да не, никакой паники. :) Просто сам было чуть не принял за чистую монету, потом засомневался.
Я думал реальный код из Object C.
Кстати, изначально говнокод, т.к. функция/метод реализуется одной строкой.
Позвольте спросить, отличаете ли вы Objective C от других C-подобных языков или попросту решили выебнуться?
Я лишь скромный разработчик игр и у меня нет доступа к исходникам mac os. Так что да, это мои фантазии. Но, имея богатый опыт разработки, подозреваю, что реальный код установщика вполне может иметь подобную логику.
Конечно. Как минимум, код сначала скомпилировать, а потом запустить приложение и убедится, что работает как задуманно.
Спасибо ) они были плавающие и незаметные, и не сильно мешали. Я их не то чтобы жёстко искал. Потом разобрался, конечно.
Был как-то плавающий баг, приводящий к крашу. Забегу вперёд. Проблема крылась в обращении к сырому указателю на удалённый объект. Падало не сразу, через несколько секунд после обращения и то не всегда. Мучался, конечно, не год. Но за пару дней нервы поистрепались.
Пофиксил благодарю гиту. Для начала выявил два опорных коммита. На одном сборка стабильная, на другом - крашится. Разница между коммитами несколько дней и пару сотен других правок. Двоичный поиск в руки и за несколько итераций нашёл проблемный коммит. Дальше дело техники - анализ изменений в коде и причина устранена.
Я почти уверен, что это из-за поддержки мультиканальности, да ещё и с разными размерами планок и разными таймингами... (лучше бы просто не поддерживали такой винегрет, я плавающие глюки один раз год искал).
Правда, я не знаю, есть ли double channel на маках, но, опять же, было бы странно, если нет.
Память - штука странная. У меня было несколько материнок, которые глючили, если память вставлена во второй слот. А то и не работали. При этом при вставке в первый слот или в оба (четыре, восемь) слота всё работало.
Есть гипотеза, что это ради оптимизации. Типа память в первом слоте шустрей работает. Ну или всё таки просто косяк в драйверах.
Только слабаки обращают внимание на варнинги. Настоящие суровые разработчики предпочитают фиксить свершившиеся краши.
Не с той стороны заходите. Код в посте особого смысла не имеет. Его цель - через язык C++ выразить забавную ситуацию с обновлением mac os.
Свободен слот или нет, не важно. Объект класса Slot существует априори. Он не может быть null. Но он может содержать, лио не содержать объект класса Memory. Следуя вашей логике должно быть slot.GeMemory() == null.








IT-юмор
7.5K постов53.3K подписчиков
Правила сообщества
Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору